К содержанию

[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
5 847
Реклама

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

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

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

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

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

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

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

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

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

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

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

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

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