[Анонс] frontendManager
Последние дня 4 занимаюсь созданием фронтэнд менеджера, решил подсмотреть в сторону mobiledetect, а точнее в парсинг тегов.
Собственно вот, что получается:
Подробности под катом.
Чанки и сниппеты которые вы захотите редактировать с фронтэнда оборачиваете в / , далее вся работа за frontendManager. Если получится расширить парсер то мало чего изменится, «разрешенные» чанки придется где-нибудь указывать.
И тут созрел такой вопрос: хоть кому-нибудь это надо?) Такую хотелку высказал один клиент, который привык к битриксу.
p.s. далее будет:
— редактирование контента страницы вместе с tv
— редакторы в textarea
— кнопка сброса кэша
— да и большинство кнопок из битрикса
Собственно вот, что получается:
Подробности под катом.
Чанки и сниппеты которые вы захотите редактировать с фронтэнда оборачиваете в / , далее вся работа за frontendManager. Если получится расширить парсер то мало чего изменится, «разрешенные» чанки придется где-нибудь указывать.
И тут созрел такой вопрос: хоть кому-нибудь это надо?) Такую хотелку высказал один клиент, который привык к битриксу.
p.s. далее будет:
— редактирование контента страницы вместе с tv
— редакторы в textarea
— кнопка сброса кэша
— да и большинство кнопок из битрикса
Комментарии: 31
Достаточно интересно!
В абсолютном большинстве своих проектов я использую именно управление с фронта, кроме меня как разработчика и администратора в админку MODX никто доступа не имеет. Всё управление контентом с фронта. Но чанки клиентам, как правило, я редактировать так же не даю, хотя и такая возможность может быть полезной. А вот возможность вставлять плейсхолдеры, подставляющие УРЛ ресурса в ссылку, очень нудны. Сам использую для этих целей всякие костыли, руки никак не дойдут сделать компонентом.
Поэтому мне бы твой компонент точно бы понадобился:)
В абсолютном большинстве своих проектов я использую именно управление с фронта, кроме меня как разработчика и администратора в админку MODX никто доступа не имеет. Всё управление контентом с фронта. Но чанки клиентам, как правило, я редактировать так же не даю, хотя и такая возможность может быть полезной. А вот возможность вставлять плейсхолдеры, подставляющие УРЛ ресурса в ссылку, очень нудны. Сам использую для этих целей всякие костыли, руки никак не дойдут сделать компонентом.
Поэтому мне бы твой компонент точно бы понадобился:)
значит я не одинок, буду пилить дальше)
Я хотел добавить подобный функционал в AdminPanel, но до сих пор руки не дошли.
Да и непонятно уже, дойдут ли когда-нибудь. Но функционал интересный, многие просят.
Да и непонятно уже, дойдут ли когда-нибудь. Но функционал интересный, многие просят.
Функционал интересный и очень нужный!
Я тоже долгое время смотрел на битрисовскую панель администратора, всё хотел на MODX такую, но тоже руки не доходят никак…
Особенно нужна панель и всякие такие штучки на ней, типа: включить/отключить режим правки, прикрепить/открепить панель, очистить кэш (было бы круто очищать кэш и текущего ресурса), возможность легко расширять панель другими функциональными кнопками.
Я тоже долгое время смотрел на битрисовскую панель администратора, всё хотел на MODX такую, но тоже руки не доходят никак…
Особенно нужна панель и всякие такие штучки на ней, типа: включить/отключить режим правки, прикрепить/открепить панель, очистить кэш (было бы круто очищать кэш и текущего ресурса), возможность легко расширять панель другими функциональными кнопками.
Добавил кнопку очистить кэш «этого ресурса»
Может чанку все же добавлять префикс, не оборачивая в теги?
как вариант где-то перечислять перечень список чанков которые доступы для редактирования, и парсить их.
Но опять же, все упирается в расширение класса парсера.
Вообще самый крутой вариант в чанке ставить галочку «доступен с фронтэнда» и выводить к нему иконку.
Но опять же, все упирается в расширение класса парсера.
Вообще самый крутой вариант в чанке ставить галочку «доступен с фронтэнда» и выводить к нему иконку.
да затея интересная, я в свое время над этим немного работал. Была рабочая версия, можно редактировать и контент и чанки и сниппеты g.recordit.co/JpEQyfdURP.gif
но потом забросил.
как совет, могу лишь сказать что самостоятельные обертки неудобны. Посмотри в сторону подмены парсера для администратора и в нем уже сделай автоматически обертывание редактируемых элементов. Так будет намного универсальнее.
Успехов!
но потом забросил.
как совет, могу лишь сказать что самостоятельные обертки неудобны. Посмотри в сторону подмены парсера для администратора и в нем уже сделай автоматически обертывание редактируемых элементов. Так будет намного универсальнее.
Успехов!
Пытался это сделать, спрашивал в сообществе и в конфе в скайпе, помощи 0. Не получается расширить парсер modx'a, хотя мне нужно одну функцию чуть-чуть изменить и все.
мои познания в api не дали мне результатов :)
точнее как это заставить работать из моего класса frontendmanager.class.php
Для этого есть системная настройка parser_class. Указывай в ней свой класс парсера.
тогда умрет pdoParser, а мне этого не надо.
Расширяй pdoParser своими функциями, зачем писать полностью новый.
Может через плагин на событие OnParseDocument это сделать?
Вот так это работает сейчас
public function OnParseDocument($sp){
$content = $this->parseDocument($this->modx->documentOutput);
$this->modx->documentOutput = $content;
}
public function parseDocument($content){
$regexp = '/<(\w+)>(\[\[[$!]+([^\]]+)\]\])<\/(\w+)>/u';
$replace = '
<span data-fem="1" data-element="$1" data-name="$3">
<span class="editor-panel"><span data-action="edit">Редактировать</span></span>
<span class="editor-original">$2</span>
</span>
';
$content = preg_replace($regexp, $replace, $content);
return $content;
}
Вроде того.
Еще обертка часто может ломать верстку. Когда делал что-то подобное, писал все в атрибут, на основе которого уже создавались кнопки управления.
Еще обертка часто может ломать верстку. Когда делал что-то подобное, писал все в атрибут, на основе которого уже создавались кнопки управления.
ну собственно все обвернуто в , без классов, поидее не должно ломать, да и это будет доступно только админу
Имею ввиду несколько другие случаи, например селекторы вроде > или *-child, или если тег будет в атрибуте прописан? Конечно, неугодные можно отключить, но это не совсем удобно.
Пробовал через xpath искать и в dom атрибут подставлять (регулярку, с поиском и в содержимом, и в атрибутах, не осилил).
Что меня смущало, так это количество срабатываний OnParseDocument…
Пробовал через xpath искать и в dom атрибут подставлять (регулярку, с поиском и в содержимом, и в атрибутах, не осилил).
Что меня смущало, так это количество срабатываний OnParseDocument…
Полностью согласен насчет кол-ва срабатываний, ибо он рекурсивно работает.
Но если переписать одну функцию ( не помню название) в modParser то теги можно вылавливать в разы быстрее.
Поидее можно <*chunk></*chunk> и т.д. вырезать через js у администраторов. Но пока что остановлюсь на версии с парсером, посмотрим насколько это дело будет востребованно.
Вот кстати что получилось
Но если переписать одну функцию ( не помню название) в modParser то теги можно вылавливать в разы быстрее.
Поидее можно <*chunk></*chunk> и т.д. вырезать через js у администраторов. Но пока что остановлюсь на версии с парсером, посмотрим насколько это дело будет востребованно.
Вот кстати что получилось
Неплохо. А штука нужная, особенно для пришедших с битрикса)
А панель крепится к верху экрана или к верху страницы? В битриксе там была кнопка, которая крепила панель при прокрутке (position:fixed) и открепляла её. Это тоже было бы удобно, например мне удобнее чтобы панель всегда была перед глазами, а кому-то может мешать.
Вещь нужная. У меня в планах тоже висит создание дополнения для управления ресурсами из фронтэнда, но я хотел сделать по другому. Теперь может и не буду.
А видел компоненты Андрея Чирко на эту тему?
— modx.com/extras/package/aloha
— modx.com/extras/package/frontendsimpleedit
Делали года 3 назад наверно — может быть будет полезно.
— modx.com/extras/package/aloha
— modx.com/extras/package/frontendsimpleedit
Делали года 3 назад наверно — может быть будет полезно.
Только aloha, спасибо!
Возникла проблема:
$resource->get('content'); обрабатываются чанки внутри контента, как избавиться от этого? Как обойти парсер?
При всплывающем окне (редактирования страницы) получаю отпарсенный контент…
$resource->get('content'); обрабатываются чанки внутри контента, как избавиться от этого? Как обойти парсер?
При всплывающем окне (редактирования страницы) получаю отпарсенный контент…
Обрывать выполнение или слать запросы к своему файлу
$resource->content;
Или $resource->__get('content');
Проблема в том, что это помещается в чанк с формой) и он как раз обрабатывается.
Буду тогда аяксом контент вытягивать. Всем спасибо.
Буду тогда аяксом контент вытягивать. Всем спасибо.
Компонент очень нужный! Подписываюсь)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.