[Анонс] frontendManager

Последние дня 4 занимаюсь созданием фронтэнд менеджера, решил подсмотреть в сторону mobiledetect, а точнее в парсинг тегов.

Собственно вот, что получается:



Подробности под катом.






Чанки и сниппеты которые вы захотите редактировать с фронтэнда оборачиваете в / , далее вся работа за frontendManager. Если получится расширить парсер то мало чего изменится, «разрешенные» чанки придется где-нибудь указывать.

И тут созрел такой вопрос: хоть кому-нибудь это надо?) Такую хотелку высказал один клиент, который привык к битриксу.

p.s. далее будет:
— редактирование контента страницы вместе с tv
— редакторы в textarea
— кнопка сброса кэша
— да и большинство кнопок из битрикса
but1head
11 декабря 2015, 05:06
modx.pro
3 223
+8

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

Антон Фомичёв
11 декабря 2015, 08:17
0
Достаточно интересно!
В абсолютном большинстве своих проектов я использую именно управление с фронта, кроме меня как разработчика и администратора в админку MODX никто доступа не имеет. Всё управление контентом с фронта. Но чанки клиентам, как правило, я редактировать так же не даю, хотя и такая возможность может быть полезной. А вот возможность вставлять плейсхолдеры, подставляющие УРЛ ресурса в ссылку, очень нудны. Сам использую для этих целей всякие костыли, руки никак не дойдут сделать компонентом.
Поэтому мне бы твой компонент точно бы понадобился:)
    but1head
    11 декабря 2015, 08:21
    0
    значит я не одинок, буду пилить дальше)
    Василий Наумкин
    11 декабря 2015, 08:32
    0
    Я хотел добавить подобный функционал в AdminPanel, но до сих пор руки не дошли.

    Да и непонятно уже, дойдут ли когда-нибудь. Но функционал интересный, многие просят.
      Василий Столейков
      11 декабря 2015, 10:31
      +1
      Функционал интересный и очень нужный!
      Я тоже долгое время смотрел на битрисовскую панель администратора, всё хотел на MODX такую, но тоже руки не доходят никак…
      Особенно нужна панель и всякие такие штучки на ней, типа: включить/отключить режим правки, прикрепить/открепить панель, очистить кэш (было бы круто очищать кэш и текущего ресурса), возможность легко расширять панель другими функциональными кнопками.
        but1head
        11 декабря 2015, 12:29
        0
        Добавил кнопку очистить кэш «этого ресурса»
        Владимир
        11 декабря 2015, 11:04
        0
        Может чанку все же добавлять префикс, не оборачивая в теги?
          but1head
          11 декабря 2015, 11:08
          +1
          как вариант где-то перечислять перечень список чанков которые доступы для редактирования, и парсить их.
          Но опять же, все упирается в расширение класса парсера.

          Вообще самый крутой вариант в чанке ставить галочку «доступен с фронтэнда» и выводить к нему иконку.
          Володя
          11 декабря 2015, 11:04
          0
          да затея интересная, я в свое время над этим немного работал. Была рабочая версия, можно редактировать и контент и чанки и сниппеты g.recordit.co/JpEQyfdURP.gif
          но потом забросил.

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

          Успехов!
            but1head
            11 декабря 2015, 11:06
            0
            Пытался это сделать, спрашивал в сообществе и в конфе в скайпе, помощи 0. Не получается расширить парсер modx'a, хотя мне нужно одну функцию чуть-чуть изменить и все.
                but1head
                11 декабря 2015, 11:10
                0
                мои познания в api не дали мне результатов :)
                  but1head
                  11 декабря 2015, 11:31
                  0
                  точнее как это заставить работать из моего класса frontendmanager.class.php
                    Сергей Шлоков
                    11 декабря 2015, 11:43
                    0
                    Для этого есть системная настройка parser_class. Указывай в ней свой класс парсера.
                      but1head
                      11 декабря 2015, 11:45
                      0
                      тогда умрет pdoParser, а мне этого не надо.
                        Сергей Шлоков
                        11 декабря 2015, 11:48
                        0
                        Расширяй pdoParser своими функциями, зачем писать полностью новый.
                Руслан Кундиус
                11 декабря 2015, 15:54
                0
                Может через плагин на событие OnParseDocument это сделать?
                  but1head
                  11 декабря 2015, 16:21
                  0
                  Вот так это работает сейчас
                  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;
                  	}
                    Руслан Кундиус
                    11 декабря 2015, 16:37
                    0
                    Вроде того.

                    Еще обертка часто может ломать верстку. Когда делал что-то подобное, писал все в атрибут, на основе которого уже создавались кнопки управления.
                      but1head
                      11 декабря 2015, 16:38
                      0
                      ну собственно все обвернуто в , без классов, поидее не должно ломать, да и это будет доступно только админу
                        Руслан Кундиус
                        11 декабря 2015, 17:11
                        0
                        Имею ввиду несколько другие случаи, например селекторы вроде > или *-child, или если тег будет в атрибуте прописан? Конечно, неугодные можно отключить, но это не совсем удобно.

                        Пробовал через xpath искать и в dom атрибут подставлять (регулярку, с поиском и в содержимом, и в атрибутах, не осилил).
                        Что меня смущало, так это количество срабатываний OnParseDocument…
                          but1head
                          11 декабря 2015, 18:09
                          +2
                          Полностью согласен насчет кол-ва срабатываний, ибо он рекурсивно работает.
                          Но если переписать одну функцию ( не помню название) в modParser то теги можно вылавливать в разы быстрее.

                          Поидее можно <*chunk></*chunk> и т.д. вырезать через js у администраторов. Но пока что остановлюсь на версии с парсером, посмотрим насколько это дело будет востребованно.

                          Вот кстати что получилось
                            Руслан Кундиус
                            11 декабря 2015, 18:37
                            0
                            Неплохо. А штука нужная, особенно для пришедших с битрикса)
                              Василий Столейков
                              11 декабря 2015, 20:37
                              0
                              А панель крепится к верху экрана или к верху страницы? В битриксе там была кнопка, которая крепила панель при прокрутке (position:fixed) и открепляла её. Это тоже было бы удобно, например мне удобнее чтобы панель всегда была перед глазами, а кому-то может мешать.
                Сергей Шлоков
                11 декабря 2015, 11:46
                0
                Вещь нужная. У меня в планах тоже висит создание дополнения для управления ресурсами из фронтэнда, но я хотел сделать по другому. Теперь может и не буду.
                  Виталий
                  11 декабря 2015, 13:18
                  2
                  0
                  А видел компоненты Андрея Чирко на эту тему?
                  modx.com/extras/package/aloha
                  modx.com/extras/package/frontendsimpleedit

                  Делали года 3 назад наверно — может быть будет полезно.
                    but1head
                    11 декабря 2015, 13:19
                    0
                    Только aloha, спасибо!
                    but1head
                    11 декабря 2015, 22:05
                    0
                    Возникла проблема:
                    $resource->get('content'); обрабатываются чанки внутри контента, как избавиться от этого? Как обойти парсер?
                    При всплывающем окне (редактирования страницы) получаю отпарсенный контент…
                    Антон Вьюков
                    11 декабря 2015, 23:02
                    0
                    Компонент очень нужный! Подписываюсь)
                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                      31