[Office] Версия 1.3.0-pl и расширение другими компонентами

Привет, друзья! Продолжаю улучшать свои дополнения, и анонс этой версии Office стоит разделить на две части: для обычных пользователей и для разработчиков.

В первую очередь, обновился внешний вид личного кабинета 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, можно загружать.
Василий Наумкин
01 октября 2015, 08:07
modx.pro
6
4 913
+18

Комментарии: 14

Павел Гвоздь
01 октября 2015, 20:50
+4
На самом деле это очень мощно. Есть пара задач, в скором времени для которых мною будет использовано это чудо. Василий молодец!
    Сергей Шлоков
    02 октября 2015, 08:20
    -1
    А правильно так делать для платного компонента? В самом лучшем случае этим воспользуется 1% разработчиков.
    П.С. Это я про Office.
      Василий Наумкин
      02 октября 2015, 08:38
      +4
      1% больше чем 0%.

      Для меня достаточная причина, что я сам этим воспользуюсь и не один раз =)
        Сергей Шлоков
        02 октября 2015, 08:48
        -2
        Понятно, что хозяин-барин. Но мне кажется это неправильно даже для бесплатного дополнения. А уж для платного вдвойне. Логичнее было бы выложить это отдельным решением для желающих, например, modxExtraOffice. Чтобы остальным 99% не пришлось выпиливать это из своих дополнений. Имхо, разумеется.
          Василий Наумкин
          02 октября 2015, 08:51
          +3
          Я его даже начал делать (officeModExtra) и на середине понял, что дублирую практически всё от modExtra.

          Не люблю что-то дублировать, поэтому удалил и дописал в modExtra. Если есть желание — можешь добавить скрипт выпиливания, который удалит новые директории.
      Сергей Шлоков
      03 октября 2015, 08:51
      0
      Честно говоря, не могу понять связи картинок из админки и вызовом своего контроллера офисом. Видимо возраст сказывается. Василий разъясни специально для меня бестолкового. Офис загружает пользовательский контроллер во фронте (примеры с ключами и продажами), а картинки в админке показывают таблицу предметов как в предыдущей версии без офиса. Т.е. связь интерфейса в админке с офисом от меня ускользнула. А еще эта загадочная фраза Собака друг человека
      Вам вовсе не обязательно использовать Ext JS, это просто пример возможностей.
      еще больше меня запутала.
        Василий Наумкин
        03 октября 2015, 09:40
        +1
        Речь о том, что сейчас в modExtra есть таблица в БД, для которой есть интерфейс внутри админки, и снаружи сайта.

        Внутри админки всё работает через админку, через её контроллеры и процессоры. Но снаружи, на фронтенде, такого механизма нет. Там только чанки и сниппеты, и если ты хочешь сделать какой-то личный кабинет, всю систему тебе нужно изобретать самостоятельно.

        Мне это давно надоело и тогда я придумал написать Office, который позволяет работать с юзером на фронтенде и не забивать себе голову сложностями. Пишешь контроллер, кладёшь его куда надо, забиваешь в нём методы и можешь обращаться к ним как
        [[!Office?
        	&action=`ИмяКонтроллера\ИмяМетода`
        ]]
        Таким же способом ты можешь обращаться и к другим методам через Ajax, просто отправляя нужный action на /assets/components/office/action.php.

        Заодно добавил всякие вещи, чтобы было просто на фронтенде использовать Ext JS для крутого функционала. Именно этот пример теперь можно увидеть в modExtra.

        Ну и в новой версии любо разработчик может использовать Office, если он установлен на сайте, для своего личного кабинета. Я уверен, что многие люди смогут этим воспользоваться для создания крутых личных кабинетов.

        Например я уже делаю кое-что новое для modstore.pro.
          Сергей Шлоков
          03 октября 2015, 09:51
          0
          Ясно. Моя невнимательность подвела. Картинки слева — это админка, а справа — это фронт.
          Еще вопрос, а скрипт ExtJs офис грузит?
            Василий Наумкин
            03 октября 2015, 11:03
            0
            Конечно!

            В основном классе для этого есть специальные методы.

            Исходники Office открыты, можно посмотреть.
      Андрей Степаненко
      03 октября 2015, 16:29
      +2
      Прикольная тема. Много перспектив для CRM систем и личных закрытых кабинетов.

        Павел
        21 января 2016, 16:17
        -1
        Василий, а подскажи пожалуйста, как правильно заполнить параметр office_controllers_paths?
          Василий Наумкин
          21 января 2016, 16:36
          0
          Регистрация своего контроллера проводится добавлением пути к нему в новом системном параметре office_controllers_paths.

          Для упрощения этой работы лучше всего использовать методы Office::addExtenstion() и Office::removeExtension() — принцип такой же, как и при регистрации моделей компонентов в MODX. Вот, посмотрите на ресолвер modExtra.
          Константин Ильин
          28 ноября 2016, 18:52
          0
          Подскажите пожалуйста, как отключить функционал сброса пароля?
          Т.е. мне не нужно чтобы человек ввел Логин(емайл) и ему тут же сбросился пароль.
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            14