[Office] Версия 1.3.0-pl и расширение другими компонентами
Привет, друзья! Продолжаю улучшать свои дополнения, и анонс этой версии Office стоит разделить на две части: для обычных пользователей и для разработчиков.
В первую очередь, обновился внешний вид личного кабинета miniShop2 на версиях MODX 2.3+.
Если новый внешний вид вам не нравится, то отредактируйте системную настройку office_extjs_css и укажите там старый файл со стилями:
Второе новшество — появился поиск по заказам. Искать можно по платежу, по доставке и даже по товарам заказа.
Всё протестировано и отлично работает с MODX 2.2, 2.3 и 2.4, но если вдруг у вас есть какие-то вопросы по обновлению — пишите в поддержку магазина.
Многие знают, что Office это не просто авторизация и личный кабинет покупателя, это еще и система для вывода любых PHP скриптов, взаимодействующих с пользователями.
На всякий случай напоминаю, что у Office есть система контроллеров и действий, которые из них загружаются. В прошлых версиях вы могли положить свой PHP файл в нужную директорию, объявить там класс, расширяющий стандартный контроллер компонента, и писать любую логику. После чего просто вызывали свой контроллер на страницах сайта вот так:
Для примера я обновил нашу заготовку modExtra:
Вам вовсе не обязательно использовать Ext JS, это просто пример возможностей. Выводится на странице она так:
Регистрация своего контроллера проводится добавлением пути к нему в новом системном параметре office_controllers_paths. Для упрощения этой работы лучше всего использовать методы Office::addExtenstion() и Office::removeExtension() — принцип такой же, как и при регистрации моделей компонентов в MODX. Вот, посмотрите на ресолвер modExtra.
После регистрации пути к контроллеру Office будет загружать его из указанной директории для всех действий, с ним связанных. Вам не нужно ничего никуда копировать, вы можете поставлять и обновлять свой виджет внутри своего пакета.
По этому принципу уже работает управление ключами в modstore.pro и вывод статистики продаж авторов. Разработка и поддержка стала проще в разы.
Если же вы планируете использовать Ext JS в своих виджетах, то обратите внимание, что по умолчанию уже подгружаются кое-какие улучшенные компоненты Office, типа таблицы со встроенным поиском — можно свободно их расширять.
Напоминаю, что modExtra уже поддерживает работу с Office, так что советую использовать его для примера.
Новая версия доступна в репозитории modstore.pro, можно загружать.
В первую очередь, обновился внешний вид личного кабинета miniShop2 на версиях MODX 2.3+.
Если новый внешний вид вам не нравится, то отредактируйте системную настройку office_extjs_css и укажите там старый файл со стилями:
[[++assets_url]]components/office/css/main/lib/xtheme-modx.min.css
Второе новшество — появился поиск по заказам. Искать можно по платежу, по доставке и даже по товарам заказа.
Всё протестировано и отлично работает с MODX 2.2, 2.3 и 2.4, но если вдруг у вас есть какие-то вопросы по обновлению — пишите в поддержку магазина.
Расширение сторонними компонентами
Многие знают, что Office это не просто авторизация и личный кабинет покупателя, это еще и система для вывода любых PHP скриптов, взаимодействующих с пользователями.
На всякий случай напоминаю, что у Office есть система контроллеров и действий, которые из них загружаются. В прошлых версиях вы могли положить свой PHP файл в нужную директорию, объявить там класс, расширяющий стандартный контроллер компонента, и писать любую логику. После чего просто вызывали свой контроллер на страницах сайта вот так:
[[!Office?
&action=`MyController/actionName`
¶m1=`value1`
¶m2=`value2`
]]
В новой версии эта система была расширена и теперь контроллеры могут физически находиться в любых директориях, в том числе и принадлежать другим дополнениям. То есть, ваш компонент может поставлять как-бы виджет для Office.Для примера я обновил нашу заготовку modExtra:
Вам вовсе не обязательно использовать Ext JS, это просто пример возможностей. Выводится на странице она так:
[[!Office?
&action=`modExtra`
]]
Регистрация своего контроллера проводится добавлением пути к нему в новом системном параметре office_controllers_paths. Для упрощения этой работы лучше всего использовать методы Office::addExtenstion() и Office::removeExtension() — принцип такой же, как и при регистрации моделей компонентов в MODX. Вот, посмотрите на ресолвер modExtra.
После регистрации пути к контроллеру Office будет загружать его из указанной директории для всех действий, с ним связанных. Вам не нужно ничего никуда копировать, вы можете поставлять и обновлять свой виджет внутри своего пакета.
По этому принципу уже работает управление ключами в modstore.pro и вывод статистики продаж авторов. Разработка и поддержка стала проще в разы.
Если же вы планируете использовать Ext JS в своих виджетах, то обратите внимание, что по умолчанию уже подгружаются кое-какие улучшенные компоненты Office, типа таблицы со встроенным поиском — можно свободно их расширять.
Напоминаю, что modExtra уже поддерживает работу с Office, так что советую использовать его для примера.
Новая версия доступна в репозитории modstore.pro, можно загружать.
Комментарии: 14
На самом деле это очень мощно. Есть пара задач, в скором времени для которых мною будет использовано это чудо. Василий молодец!
А правильно так делать для платного компонента? В самом лучшем случае этим воспользуется 1% разработчиков.
П.С. Это я про Office.
П.С. Это я про Office.
1% больше чем 0%.
Для меня достаточная причина, что я сам этим воспользуюсь и не один раз =)
Для меня достаточная причина, что я сам этим воспользуюсь и не один раз =)
Понятно, что хозяин-барин. Но мне кажется это неправильно даже для бесплатного дополнения. А уж для платного вдвойне. Логичнее было бы выложить это отдельным решением для желающих, например, modxExtraOffice. Чтобы остальным 99% не пришлось выпиливать это из своих дополнений. Имхо, разумеется.
Я его даже начал делать (officeModExtra) и на середине понял, что дублирую практически всё от modExtra.
Не люблю что-то дублировать, поэтому удалил и дописал в modExtra. Если есть желание — можешь добавить скрипт выпиливания, который удалит новые директории.
Не люблю что-то дублировать, поэтому удалил и дописал в modExtra. Если есть желание — можешь добавить скрипт выпиливания, который удалит новые директории.
Честно говоря, не могу понять связи картинок из админки и вызовом своего контроллера офисом. Видимо возраст сказывается. Василий разъясни специально для меня бестолкового. Офис загружает пользовательский контроллер во фронте (примеры с ключами и продажами), а картинки в админке показывают таблицу предметов как в предыдущей версии без офиса. Т.е. связь интерфейса в админке с офисом от меня ускользнула. А еще эта загадочная фраза Собака друг человека
Вам вовсе не обязательно использовать Ext JS, это просто пример возможностей.еще больше меня запутала.
Речь о том, что сейчас в modExtra есть таблица в БД, для которой есть интерфейс внутри админки, и снаружи сайта.
Внутри админки всё работает через админку, через её контроллеры и процессоры. Но снаружи, на фронтенде, такого механизма нет. Там только чанки и сниппеты, и если ты хочешь сделать какой-то личный кабинет, всю систему тебе нужно изобретать самостоятельно.
Мне это давно надоело и тогда я придумал написать Office, который позволяет работать с юзером на фронтенде и не забивать себе голову сложностями. Пишешь контроллер, кладёшь его куда надо, забиваешь в нём методы и можешь обращаться к ним как
Заодно добавил всякие вещи, чтобы было просто на фронтенде использовать Ext JS для крутого функционала. Именно этот пример теперь можно увидеть в modExtra.
Ну и в новой версии любо разработчик может использовать Office, если он установлен на сайте, для своего личного кабинета. Я уверен, что многие люди смогут этим воспользоваться для создания крутых личных кабинетов.
Например я уже делаю кое-что новое для modstore.pro.
Внутри админки всё работает через админку, через её контроллеры и процессоры. Но снаружи, на фронтенде, такого механизма нет. Там только чанки и сниппеты, и если ты хочешь сделать какой-то личный кабинет, всю систему тебе нужно изобретать самостоятельно.
Мне это давно надоело и тогда я придумал написать Office, который позволяет работать с юзером на фронтенде и не забивать себе голову сложностями. Пишешь контроллер, кладёшь его куда надо, забиваешь в нём методы и можешь обращаться к ним как
[[!Office?
&action=`ИмяКонтроллера\ИмяМетода`
]]
Таким же способом ты можешь обращаться и к другим методам через Ajax, просто отправляя нужный action на /assets/components/office/action.php.Заодно добавил всякие вещи, чтобы было просто на фронтенде использовать Ext JS для крутого функционала. Именно этот пример теперь можно увидеть в modExtra.
Ну и в новой версии любо разработчик может использовать Office, если он установлен на сайте, для своего личного кабинета. Я уверен, что многие люди смогут этим воспользоваться для создания крутых личных кабинетов.
Например я уже делаю кое-что новое для modstore.pro.
Ясно. Моя невнимательность подвела. Картинки слева — это админка, а справа — это фронт.
Еще вопрос, а скрипт ExtJs офис грузит?
Еще вопрос, а скрипт ExtJs офис грузит?
Конечно!
В основном классе для этого есть специальные методы.
Исходники Office открыты, можно посмотреть.
В основном классе для этого есть специальные методы.
Исходники Office открыты, можно посмотреть.
Ок. Спасибо.
Прикольная тема. Много перспектив для CRM систем и личных закрытых кабинетов.
Василий, а подскажи пожалуйста, как правильно заполнить параметр office_controllers_paths?
Регистрация своего контроллера проводится добавлением пути к нему в новом системном параметре office_controllers_paths.
Для упрощения этой работы лучше всего использовать методы Office::addExtenstion() и Office::removeExtension() — принцип такой же, как и при регистрации моделей компонентов в MODX. Вот, посмотрите на ресолвер modExtra.
Подскажите пожалуйста, как отключить функционал сброса пароля?
Т.е. мне не нужно чтобы человек ввел Логин(емайл) и ему тут же сбросился пароль.
Т.е. мне не нужно чтобы человек ввел Логин(емайл) и ему тут же сбросился пароль.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.