[frontendManager] Первая версия


Ввиду того что были утеряны все прошлые исходники пришлось написать заного.




Демо
http://s5830.h5.modhost.pro/manager/ s5830 lz249FCKEwW4

Собственно все что компонент умеет это грузить фрейм админки добавляя в нее немного css для скрытия ненужных блоков.

Нет никаких настроек, только чанк и плагин, чанк tpl.frontendmanager.panel для вывода панели и ссылок и плагин frontendmanager для вставки панели на страницу (доступен естественно залогиненным в админку пользователям).

На панель вынесены
— редактирование страницы
— пользователи
— настройки контекста (я например туда пихаю телефоны, скрипты группы вк и тд)
— настройки контекста



Требуется pdoTools и fenom!

Исходники на github: https://github.com/but1head/frontendmanager

Пожелания можно писать сюда, потихоньку буду добавлять.
30 june 2016, 23:51    but1head   
14    1558 +20

Comments (77)

  1. Евгений Webinmd 01 july 2016, 00:27 # 0
    Это феноменально!!!

    Этак можно же для различных блоков нацеплять ссылок на редактирование (если они являются ресурсами)
    1. but1head 01 july 2016, 00:30 # +1
      <a href="manager/?a=resource/update&id={$_modx->resource.id}" data-action="iframe">Редактировать страницу</a>
      По сути да, вообще поидее можно много чего выжать.
    2. Павел Гвоздь 01 july 2016, 01:38 # +2
      Очень классно получилось! Ещё было бы круто, чтоб после редактирования обновлялось содержимое страницы. :)
      1. Илья Уткин 01 july 2016, 15:26 # +3
        Отправил автору пулл-реквест с этой фишкой. Надуюсь, одобрит и включит в пакет…
        1. but1head 01 july 2016, 15:40 # +1
          Как добавлю вынос css и чанка в настройки выложу новый пакет в модстор, гит обновил
      2. t3mnikov 01 july 2016, 08:46 # 0
        Спасибо! Крутой компонент получился!
        1. Илья Уткин 01 july 2016, 10:46 # 0
          Еще бы возможность в любое место вставить ссылку на редактирование конкретного чанка… Я, например, как разработчик, в сайдбар вставляю чанк с каким-то текстом, а рядом ссылку «Редактировать». Тогда клиенту не надо будет объяснять, что такое чанк, как его найти и прочее…
          1. Илья Уткин 01 july 2016, 10:57 # 0
            А, пардон, оказывается, можно)))
            1. but1head 01 july 2016, 14:06 # 0
              Коммитнул твои доработки, даже не подумал о такой возможности, спасибо!
              1. lexikon 12 october 2016, 01:34 # 0
                а почему в версии 1.0.9 нет возможности комментировать чанки? или это надо как то реализовать дополнительно?
            1. Василий Столейков 01 july 2016, 12:17 # 0
              Спасибо — очень круто!!!
              А можно вынести путь к css-файлу в настройки, чтобы при обновлении не затёрся? Или где можно изменить CSS, который прячет левую и верхние панели?
              Они мне не особо мешают если есть (я про левую), но вот если спрятаны, и панелька слева в админке не была задвинута кнопкой, то в модалке получается пустое некрасивое пространство.
              1. but1head 01 july 2016, 12:20 # +2
                Вынесу css который вставляется в фрейм, и который грузится на фронтэнд в настройки
              2. Echo 01 july 2016, 16:18 # +1
                При установке плагина сайт игнорирует тэг «base», в результате чего у меня пропали шрифты-иконки с сайта. А в целом — круто и удобно.
                1. but1head 01 july 2016, 17:49 # +4
                  1.0.3-beta
                  ==============
                  — Стили, скрипты, чанк вынесены в настройки
                  — Перезагрузка страницы после сохранения
                  https://modstore.pro/packages/utilities/frontendmanager
                  1. SEQUEL.ONE 02 july 2016, 02:54 # 0
                    А так же кастомные таблицы можно редактировать которые выгружены на страницу через VirtualPage?
                    1. but1head 02 july 2016, 03:08 # +1
                      Если у них есть ссылка в админке и ее можно как-то подставить на фронтэнде — да.

                      Повторюсь, открывается просто iframe админ панели по ссылке которая висит на кнопке.

                      Редактирование товара, список заказов, пользователей, группы пользователей, конкретного пользователя и тд.

                      Можно в чанке списка товара/тикета подставить кнопку редактирования, у каждого коментария ссылку на редактирование пользователя и тд.
                    2. Евгений Webinmd 06 july 2016, 20:57 # 0
                      Может кому пригодится. У меня сайт в подпапке (на время разработки) и стили для фрейма не подгружались, в плагине поменял пути:

                      if ($_GET['frame']) {
                      			$modx->regClientCSS(MODX_ASSETS_URL.'components/frontendmanager/css/mgr/'.$modx->getOption('frontendmanager_manager_css', NULL, 'manager.css'));
                      			$modx->regClientStartupScript(MODX_ASSETS_URL.'components/frontendmanager/js/mgr/'.$modx->getOption('frontendmanager_manager_js', NULL, 'manager.js'));
                              }
                      
                      1. but1head 06 july 2016, 21:03 # +1
                        Обновил git
                      2. but1head 07 july 2016, 17:07 # +1
                        Исправил серьезный баг с кэшем, рекомендую всем кто использует компонент срочно обновиться.
                        1. Aleksandr Huz 08 july 2016, 10:41 # 0
                          Привет, Никита!
                          Иконки компонента, конфликтуют (перебивают) с иконками, которые установлены на сайте.
                          Я исправил для себя, но было бы круто, если бы ты исправил и в компоненте.
                          Файл:
                          assets/components/frontendmanager/css/fonts/style.css
                          Было:
                          [class^="icon-"], 
                          [class*=" icon-"] {
                              /* use !important to prevent issues with browser extensions that change fonts */
                              font-family: 'frontendmanager' !important;
                              speak: none;
                              font-style: normal;
                              font-weight: normal;
                              font-variant: normal;
                              text-transform: none;
                              line-height: 1; 
                          
                              /* Better Font Rendering =========== */
                              -webkit-font-smoothing: antialiased;
                              -moz-osx-font-smoothing: grayscale;
                          }
                          Стало:
                          .fm-panel [class^="icon-"], 
                          .fm-panel [class*=" icon-"] {
                              /* use !important to prevent issues with browser extensions that change fonts */
                              font-family: 'frontendmanager' !important;
                              speak: none;
                              font-style: normal;
                              font-weight: normal;
                              font-variant: normal;
                              text-transform: none;
                              /* line-height: 1; */
                          
                              /* Better Font Rendering =========== */
                              -webkit-font-smoothing: antialiased;
                              -moz-osx-font-smoothing: grayscale;
                          }
                          Спасибо за компонент!
                          1. but1head 11 july 2016, 00:44 # 0
                            Обновил modstore и git
                            1. Valikhan 05 november 2016, 23:00 # 0
                              Точно? Че то я не углядел… Версия 1.0.9beta
                          2. Андрей 16 july 2016, 11:01 # 0
                            Как его включить то? Установил, но никакой панели не появляется. Версия modx 2.5.0, версия плагина 1.0.7-beta, pdoTools тоже последней версии.
                            1. Евгений Webinmd 19 july 2016, 12:17 # 0
                              в версии 1.0.7-beta дополнения frontendManager, события плагина отмеченные галочками, не совпадают с теми что прописаны в условиях самого плагина, поэтому пока не переставишь галки, будет казаться что плагин не работает. Надо зайти в плагин и в списке событий отметить OnWebPagePrerender
                              1. but1head 19 july 2016, 12:35 # +2
                                Обновил
                            2. but1head 19 july 2016, 12:49 # +1
                              У компонента уже 70 скачек, хотелось бы услышать как он проявляет себя в работе и всего-ли хватает. А то вроде бы и пользуются, а фидбэков почти никаких.
                              1. Maxvel 19 july 2016, 18:06 # +1
                                Спасибо за компонент, давно не хватало подобного решения.
                                Из мелочей. Замените класс «logo» на какой-нибудь менее популярный, например «fm-logo». У меня, например, логотип modx уплыл вниз из-за того, что такой класс уже был присвоен к логотипу сайта.
                                1. but1head 19 july 2016, 19:40 # +1
                                  Поправлю
                                2. Александр Котлов 19 july 2016, 18:48 # 0
                                  Установил последнюю версию на голый сайт. Лого класс действительно стоит изменить, даже с обычной приветственной страницей MODX конфликтует. При клике на пункт меню открывается с админка, а не окно модальное. В консоли пишет что jquery undefined.
                                  1. but1head 19 july 2016, 19:40 # 0
                                    Подключите jquery к сайту, постараюсь сегодня сделать проверку на наличие.
                                  2. Sergey Perepechin 20 july 2016, 13:42 # 0
                                    Если не использовать base href в шаблоне страниц то логотип редактора не грузиться. надо бы абсолтным путь сделать? ну или fullurl…

                                    Продолжаем тестирование )
                                    Спасибо!
                                    1. Maxvel 20 july 2016, 13:53 # 0
                                      Ещё одно пожелание. Возможность менять расположение панели. Например, слева вертикально, или просто кнопка, которая раскрывается при наведении.
                                      Сейчас очень много адаптивных дизайнов, при котором верхнее меню при скролинге постоянно плавает, а панель иногда мешает навигации.
                                      Вот как-то так:
                                      1. @ndrew 26 july 2016, 06:18 # 0
                                        Компонент супер! Автору респект!
                                        Есть пожелание — было бы замечательно скрывать панель и при наведении курсора её показывать.
                                        1. @ndrew 27 july 2016, 02:52 # 0
                                          Сделал костыль в виде скрывающейся панели. Панель скрывается не полностью и при наведении курсора она выдвигается. Адаптивному дизайну не мешает.

                                          assets/components/frontendmanager/css/web/frontend.css
                                          Скопировать для возможности отката и заменить на измененный.

                                          @import "../fonts/style.css";
                                          
                                          .fm-panel {
                                              background-image: linear-gradient(to right,#3f4850 0,#365462 46%,#3e5554 60%,#42554d 68%,#573d4e 100%);
                                              box-shadow: 0 2px 0 #E4E4E4;
                                              height: 40px;
                                          	line-height: 40px;
                                          	font-size: 13px;
                                              position: fixed;
                                              z-index: 1040;
                                              top:-37px; // Величина отвечает на сколько будет торчать панель
                                              left: 0;
                                              right: 0;
                                              display: block;
                                              overflow-y: hidden;
                                              -webkit-transition: top 0.4s ease-in-out 0.1s;
                                              -moz-transition: top 0.4s ease-in-out 0.1s;
                                              transition: top 0.4s ease-in-out 0.1s;
                                          }
                                          
                                          .fm-panel:hover{
                                          	top: 0px;
                                          	-webkit-transition: top 0.4s ease-in-out 0.1s;
                                          	-moz-transition: top 0.4s ease-in-out 0.1s;
                                          	transition: top 0.4s ease-in-out 0.1s;
                                          }
                                          
                                          body.fm {padding-top: 0px !important;}
                                          .fm-panel a {color:#fff !important; border-right: 1px solid #2F4150;padding: 0 20px; display: inline-block; outline: 0 !important; text-decoration: none !important;    float: left;}
                                          .fm-panel a:hover {    background: #3B5C69;}
                                          
                                          .fm-panel a span {
                                              display: block;
                                              float: left;
                                              line-height: 40px;
                                              margin: 0 10px 0px 0;
                                          }
                                          
                                          .fm-panel a.logo img {height: 20px;}
                                          .fm-panel.button {
                                              display: inline-block;
                                              position: static;
                                              padding: 0 15px;
                                              color: #fff;
                                          }
                                          .fm-panel.button:hover {
                                              background: #3B5C69;
                                              text-decoration: none;
                                          }
                                          
                                          
                                          body .mfp-iframe-scaler iframe {
                                          	padding: 30px;
                                              background: #F2F2F2;
                                              border-radius: 5px;
                                          }
                                          
                                          @media all and (max-width: 768px) {
                                              .fm-text {
                                                  display:none !important;
                                              }
                                              .fm-panel a span {
                                                  margin:0;
                                              }
                                              body .mfp-iframe-scaler iframe {
                                              	margin:5px;
                                              }
                                          }
                                          
                                          
                                          /* Magnific Popup CSS */
                                          .mfp-bg {
                                            top: 0;
                                            left: 0;
                                            width: 100%;
                                            height: 100%;
                                            z-index: 1042;
                                            overflow: hidden;
                                            position: fixed;
                                            background: #0b0b0b;
                                            opacity: 0.8; }
                                          
                                          .mfp-wrap {
                                            top: 0;
                                            left: 0;
                                            width: 100%;
                                            height: 100%;
                                            z-index: 1043;
                                            position: fixed;
                                            outline: none !important;
                                            -webkit-backface-visibility: hidden; }
                                          
                                          .mfp-container {
                                            text-align: center;
                                            position: absolute;
                                            width: 100%;
                                            height: 100%;
                                            left: 0;
                                            top: 0;
                                            padding: 0 8px;
                                            box-sizing: border-box; }
                                          
                                          .mfp-container:before {
                                            content: '';
                                            display: inline-block;
                                            height: 100%;
                                            vertical-align: middle; }
                                          
                                          .mfp-align-top .mfp-container:before {
                                            display: none; }
                                          
                                          .mfp-content {
                                            position: relative;
                                            display: inline-block;
                                            vertical-align: middle;
                                            margin: 0 auto;
                                            text-align: left;
                                            z-index: 1045; }
                                          
                                          .mfp-inline-holder .mfp-content,
                                          .mfp-ajax-holder .mfp-content {
                                            width: 100%;
                                            cursor: auto; }
                                          
                                          .mfp-ajax-cur {
                                            cursor: progress; }
                                          
                                          .mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
                                            cursor: -moz-zoom-out;
                                            cursor: -webkit-zoom-out;
                                            cursor: zoom-out; }
                                          
                                          .mfp-zoom {
                                            cursor: pointer;
                                            cursor: -webkit-zoom-in;
                                            cursor: -moz-zoom-in;
                                            cursor: zoom-in; }
                                          
                                          .mfp-auto-cursor .mfp-content {
                                            cursor: auto; }
                                          
                                          .mfp-close,
                                          .mfp-arrow,
                                          .mfp-preloader,
                                          .mfp-counter {
                                            -webkit-user-select: none;
                                            -moz-user-select: none;
                                            user-select: none; }
                                          
                                          .mfp-loading.mfp-figure {
                                            display: none; }
                                          
                                          .mfp-hide {
                                            display: none !important; }
                                          
                                          .mfp-preloader {
                                            color: #CCC;
                                            position: absolute;
                                            top: 50%;
                                            width: auto;
                                            text-align: center;
                                            margin-top: -0.8em;
                                            left: 8px;
                                            right: 8px;
                                            z-index: 1044; }
                                            .mfp-preloader a {
                                              color: #CCC; }
                                              .mfp-preloader a:hover {
                                                color: #FFF; }
                                          
                                          .mfp-s-ready .mfp-preloader {
                                            display: none; }
                                          
                                          .mfp-s-error .mfp-content {
                                            display: none; }
                                          
                                          button.mfp-close,
                                          button.mfp-arrow {
                                            overflow: visible;
                                            cursor: pointer;
                                            background: transparent;
                                            border: 0;
                                            -webkit-appearance: none;
                                            display: block;
                                            outline: none;
                                            padding: 0;
                                            z-index: 1046;
                                            box-shadow: none;
                                            touch-action: manipulation; }
                                          
                                          button::-moz-focus-inner {
                                            padding: 0;
                                            border: 0; }
                                          
                                          .mfp-close {
                                            width: 44px;
                                            height: 44px;
                                            line-height: 44px;
                                            position: absolute;
                                            right: 0;
                                            top: 0;
                                            text-decoration: none;
                                            text-align: center;
                                            opacity: 0.65;
                                            padding: 0 0 18px 10px;
                                            color: #FFF;
                                            font-style: normal;
                                            font-size: 28px;
                                            font-family: Arial, Baskerville, monospace; }
                                            .mfp-close:hover,
                                            .mfp-close:focus {
                                              opacity: 1; }
                                            .mfp-close:active {
                                              top: 1px; }
                                          
                                          .mfp-close-btn-in .mfp-close {
                                            color: #333; }
                                          
                                          .mfp-image-holder .mfp-close,
                                          .mfp-iframe-holder .mfp-close {
                                            color: #FFF;
                                            right: -6px;
                                            text-align: right;
                                            padding-right: 6px;
                                            width: 100%; }
                                          
                                          .mfp-counter {
                                            position: absolute;
                                            top: 0;
                                            right: 0;
                                            color: #CCC;
                                            font-size: 12px;
                                            line-height: 18px;
                                            white-space: nowrap; }
                                          
                                          .mfp-arrow {
                                            position: absolute;
                                            opacity: 0.65;
                                            margin: 0;
                                            top: 50%;
                                            margin-top: -55px;
                                            padding: 0;
                                            width: 90px;
                                            height: 110px;
                                            -webkit-tap-highlight-color: transparent; }
                                            .mfp-arrow:active {
                                              margin-top: -54px; }
                                            .mfp-arrow:hover,
                                            .mfp-arrow:focus {
                                              opacity: 1; }
                                            .mfp-arrow:before,
                                            .mfp-arrow:after {
                                              content: '';
                                              display: block;
                                              width: 0;
                                              height: 0;
                                              position: absolute;
                                              left: 0;
                                              top: 0;
                                              margin-top: 35px;
                                              margin-left: 35px;
                                              border: medium inset transparent; }
                                            .mfp-arrow:after {
                                              border-top-width: 13px;
                                              border-bottom-width: 13px;
                                              top: 8px; }
                                            .mfp-arrow:before {
                                              border-top-width: 21px;
                                              border-bottom-width: 21px;
                                              opacity: 0.7; }
                                          
                                          .mfp-arrow-left {
                                            left: 0; }
                                            .mfp-arrow-left:after {
                                              border-right: 17px solid #FFF;
                                              margin-left: 31px; }
                                            .mfp-arrow-left:before {
                                              margin-left: 25px;
                                              border-right: 27px solid #3F3F3F; }
                                          
                                          .mfp-arrow-right {
                                            right: 0; }
                                            .mfp-arrow-right:after {
                                              border-left: 17px solid #FFF;
                                              margin-left: 39px; }
                                            .mfp-arrow-right:before {
                                              border-left: 27px solid #3F3F3F; }
                                          
                                          .mfp-iframe-holder {
                                            padding-top: 40px;
                                            padding-bottom: 40px; }
                                            .mfp-iframe-holder .mfp-content {
                                              line-height: 0;
                                              width: 100%;
                                              max-width: 1100px; }
                                            .mfp-iframe-holder .mfp-close {
                                              top: -40px; }
                                          
                                          .mfp-iframe-scaler {
                                            width: 100%;
                                            height: 0;
                                            overflow: hidden;
                                            padding-top: 56.25%; }
                                            .mfp-iframe-scaler iframe {
                                              position: absolute;
                                              display: block;
                                              top: 0;
                                              left: 0;
                                              width: 100%;
                                              height: 100%;
                                              box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
                                              background: #000; }
                                          
                                          /* Main image in popup */
                                          img.mfp-img {
                                            width: auto;
                                            max-width: 100%;
                                            height: auto;
                                            display: block;
                                            line-height: 0;
                                            box-sizing: border-box;
                                            padding: 40px 0 40px;
                                            margin: 0 auto; }
                                          
                                          /* The shadow behind the image */
                                          .mfp-figure {
                                            line-height: 0; }
                                            .mfp-figure:after {
                                              content: '';
                                              position: absolute;
                                              left: 0;
                                              top: 40px;
                                              bottom: 40px;
                                              display: block;
                                              right: 0;
                                              width: auto;
                                              height: auto;
                                              z-index: -1;
                                              box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
                                              background: #444; }
                                            .mfp-figure small {
                                              color: #BDBDBD;
                                              display: block;
                                              font-size: 12px;
                                              line-height: 14px; }
                                            .mfp-figure figure {
                                              margin: 0; }
                                          
                                          .mfp-bottom-bar {
                                            margin-top: -36px;
                                            position: absolute;
                                            top: 100%;
                                            left: 0;
                                            width: 100%;
                                            cursor: auto; }
                                          
                                          .mfp-title {
                                            text-align: left;
                                            line-height: 18px;
                                            color: #F3F3F3;
                                            word-wrap: break-word;
                                            padding-right: 36px; }
                                          
                                          .mfp-image-holder .mfp-content {
                                            max-width: 100%; }
                                          
                                          .mfp-gallery .mfp-image-holder .mfp-figure {
                                            cursor: pointer; }
                                          
                                          @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
                                            /**
                                                 * Remove all paddings around the image on small screen
                                                 */
                                            .mfp-img-mobile .mfp-image-holder {
                                              padding-left: 0;
                                              padding-right: 0; }
                                            .mfp-img-mobile img.mfp-img {
                                              padding: 0; }
                                            .mfp-img-mobile .mfp-figure:after {
                                              top: 0;
                                              bottom: 0; }
                                            .mfp-img-mobile .mfp-figure small {
                                              display: inline;
                                              margin-left: 5px; }
                                            .mfp-img-mobile .mfp-bottom-bar {
                                              background: rgba(0, 0, 0, 0.6);
                                              bottom: 0;
                                              margin: 0;
                                              top: auto;
                                              padding: 3px 5px;
                                              position: fixed;
                                              box-sizing: border-box; }
                                              .mfp-img-mobile .mfp-bottom-bar:empty {
                                                padding: 0; }
                                            .mfp-img-mobile .mfp-counter {
                                              right: 5px;
                                              top: 3px; }
                                            .mfp-img-mobile .mfp-close {
                                              top: 0;
                                              right: 0;
                                              width: 35px;
                                              height: 35px;
                                              line-height: 35px;
                                              background: rgba(0, 0, 0, 0.6);
                                              position: fixed;
                                              text-align: center;
                                              padding: 0; } }
                                          
                                          @media all and (max-width: 900px) {
                                            .mfp-arrow {
                                              -webkit-transform: scale(0.75);
                                              transform: scale(0.75); }
                                            .mfp-arrow-left {
                                              -webkit-transform-origin: 0;
                                              transform-origin: 0; }
                                            .mfp-arrow-right {
                                              -webkit-transform-origin: 100%;
                                              transform-origin: 100%; }
                                            .mfp-container {
                                              padding-left: 6px;
                                              padding-right: 6px; } }
                                          
                                          1. Виктор 29 july 2016, 23:50 # 0
                                            Отлично! Пользуюсь и радуюсь.
                                            1. @ndrew 30 july 2016, 19:28 # 0
                                              Допилил панель. Теперь она открывается и закрывается по триггеру.

                                              Кому интересно просто сделайте копию каталога assets/components/frontendmanager и скачайте мой архив

                                              Распакуйте и замените каталог frontendmanager.

                                              Автор если будешь развивать компонент, просьба вшить в него мою наработку, думаю она оптимальна. )
                                              1. @ndrew 30 july 2016, 19:52 # 0
                                                Самое главное забыл, в чанке tpl.frontendmanager.panel добавить сам триггер
                                                <div class="fm-trigger"><span class="icon-trigger"></span></div>
                                                1. but1head 30 july 2016, 19:55 # 0
                                                  Пул регвест сделвюайте на гитхаб, добавлю. Там жэ куки выставляются что панельку закрыли?
                                                  1. @ndrew 30 july 2016, 20:01 # 0
                                                    «Там жэ куки выставляются что панельку закрыли?» — не понял вопроса.
                                                    Честно не охото заморачиваться с гитхабом. Но если очень надо то заморочусь.
                                                    Могу подробно расписать что и где менял, а Вы можете добавить из моего архива.
                                                    1. but1head 30 july 2016, 20:05 # 0
                                                      После обновы страницы/перехода панель снова открывается (если была скрыта и наоборот). Через куки можно запомнить ее состояние, открыта/закрыта

                                                      По гиту — хотелось бы, компонент развивается совместными усилиями, я лишь сделал оболочку, от этого он и бесплатный
                                                      1. @ndrew 30 july 2016, 20:06 # 0
                                                        После обновы страницы/перехода панель в свернутом состоянии что бы не мешалась, открыть кликом по триггеру и делов)) У меня реализовано на jquery+css и добавил еще иконку в fonts. Выложу на гитхаб, а там надо думать как лучше.
                                                2. @ndrew 30 july 2016, 21:32 # 0
                                                  Выложил на гитхаб
                                                  Видел предложение на гитхабе по дополнению ссылок. Хорошее дополнение!
                                                  Особенно «Очистить кэш» будет очень удобно! Осталось только иконки прикрутить.
                                                  1. @ndrew 31 july 2016, 01:18 # 0
                                                    Обновил на гитхабе. Добавил работу панели с куками)
                                                    1. @ndrew 31 july 2016, 11:08 # 0
                                                      Для работы панели с куками требуется библиотека query.cookie.js
                                                      1. lexikon 15 august 2016, 11:07 # +1
                                                        огромное человеческое спасибо! надеюсь дополнение будет развиваться!
                                                        2 нюанса: обновите в modstore до 1.0.9
                                                        и может вы сможете поправить ксс и воспользоватся наименованием по БЭМ?
                                                        чтобы не случилось пересечения классов.
                                                        На дефолтной странице modx после установки треш.
                                                        1. Александр 15 august 2016, 15:54 # 0
                                                          На тестовый сайт установил — почему-то главная страница стала недоступна. Если разлогиниться, то сайт открывается.
                                                          1. Александр Котлов 16 august 2016, 10:08 # 0
                                                            Столкнулся с проблемой — не на всех страницах нужна панель — например на экспорте в яндекс маркет. Было бы здорово иметь возможность отключить ее для отдельных ресурсов настройкой.
                                                            1. lexikon 16 august 2016, 10:16 # 0
                                                              на странице с типом содержимого xml, к примеру /sitemap.xml выдаёт ошибку!!!

                                                              This page contains the following errors:

                                                              error on line 1 at column 187: Extra content at the end of the document
                                                              Below is a rendering of the page up to the first error.
                                                              1. Илья Уткин 16 august 2016, 10:56 # +1
                                                                Вот коммит, который решает эту проблему: github.com/but1head/frontendmanager/commit/3a6980436065c7fa0a4d3f058bb9ffd7b01bdfde
                                                                1. lexikon 17 august 2016, 18:57 # 0
                                                                  видимо его не достаточно. Скачал исходники с гита — всё завелось.

                                                                  К тому же обращу ваше внимание на использование в стилях [class^=«icon-»] селектора! Это слишком обширное применение. Ломает верстку везде если есть классы icon-!
                                                                  1. but1head 17 august 2016, 20:21 # 0
                                                                    Сделайте пулрегвест на гитхаб, это никому из пользователей компонента не повредит.
                                                              2. Павел 01 november 2016, 16:00 # 0
                                                                Автор, а подскажи пожалуйста, зачем в плагине «frontendmanager» написано:

                                                                if ($modx->resource->content_type == 1) {
                                                                    $modx->resource->_output .=  $frontendManager->initialize($modx->context->key);
                                                                }
                                                                
                                                                Т.е. проверка на content_type с id 1? Ведь многие создают новый тип содержимого, где нет .html в расширении и получается если я хочу использовать другой тип содержимого для своих url, то у меня панелька не выходит.

                                                                Как вариант предлагаю системную настройку добавить, где через запятую можно указывать типы содержимого с которым панелька будет работать.
                                                                1. but1head 01 november 2016, 16:04 # +1
                                                                  в xml и robots выезжала панелька, некоторые думали, что от этого файл ломается, но по факту видит только админ. чуть позже добавлю, сейчас занят другим компонентом. исходники на гитхабе, если есть предложения можно туда пулять.
                                                                2. Василий Столейков 08 november 2016, 14:47 # 0
                                                                  Невозможно сменить шаблон страницы в модалке — идёт перезагрузка без изменений…
                                                                  Не критично, но интересно, можно ли как-то перехватить перезагрузку…
                                                                  1. Василий Столейков 11 november 2016, 09:22 # 0
                                                                    Нигде в статье не было указано, что не проверяются никакие права — тупо выдаётся чанк всем авторизованным пользователям! В итоге я не сразу это понял и поставил на несколько сайтов с пользователями разных групп. И (караул!) пользователи видели панель администратора, правда по ссылкам переходить не могли, т.к. у них не было доступа…

                                                                    1. Нужно ограничивать доступ по группам пользователей (в настройках указать для каких, по умолчанию только для Administrator)
                                                                    2. Иконкам указать другие префиксы, чтобы стилизация других иконок на сайте не ломалась
                                                                    3. Хорошо бы верхнее меню сделать в виде обычного ul-списка с вложенностью, чтобы можно было распологать подменюшки, т.к. много ссылок напрашиваются.
                                                                    4. Если поставить ссылку на CSS или JS файл (удобно быстро что-то поменять), то как-то указать таким ссылкам (может в data-параметре) необходимость перезагрузки страницы после сохранения, как это реализовано при редактировании ресурса.
                                                                    5. Предложение давать возможность менять положение панели (верх и лево), а также при необходимости собирать её кажется разумным.
                                                                    1. but1head 11 november 2016, 09:26 # 0
                                                                      Если мне память не изменяет там былапроверка на контекст mgr, да и впервые такой фидюэк вижу.

                                                                      Я смогу заняться ближе к концу ноября, сегодня улетаю в отпуск.

                                                                      Upd: почему-то нету проверки, хз как так произошло и никто не говорил. Постараюсь в субботу обновить.
                                                                      1. Василий Столейков 11 november 2016, 09:31 # 0
                                                                        Если мне память не изменяет там былапроверка на контекст mgr, да и впервые такой фидюэк вижу.
                                                                        Может дело в том, что у меня при авторизации на фронте пользователь авторизуется сразу в нескольких контекстах, в том числе и mgr? Это я сделал, чтобы авторизовавшись через фронт у админов сразу был доступ в админку. Обычный же пользователь, хоть и авторизован в mgr, но прав ни на что не имеет, а значит админка для него закрыта.

                                                                        сегодня улетаю в отпуск.
                                                                        Отдохни, наберись энергии и приезжай обратно к нам, ты нам тут нужен! ;) =P
                                                                        1. but1head 11 november 2016, 09:40 # +1
                                                                          пользователь авторизуется сразу в нескольких контекстах, в том числе и mgr?
                                                                          Так вот где собака зарыта)
                                                                          Проверка есть
                                                                          if (!$modx->user->hasSessionContext('mgr')) return;
                                                                          Добавлю еще и проверку группы.

                                                                          Отдохни, наберись энергии и приезжай обратно к нам, ты нам тут нужен! ;) =P
                                                                          Спасибо)
                                                                          1. Viktor Kushnir 26 april 2017, 22:42 # 0
                                                                            Подскажите как настроить для manager c ограниченным доступом в админку? Проверку на доступ в контекст mgr проходит, но панель на фронет не видит.
                                                                            1. but1head 26 april 2017, 22:51 # 0
                                                                              Там еще проверка на группу Administrator, можете закоментировать в плагине
                                                                        2. Василий Столейков 11 november 2016, 09:33 # 0
                                                                          почему-то нету проверки и никто не говорил. Постараюсь в субботу обновить.
                                                                          Похоже я первый осмелился подать голос ))))
                                                                          Ок, спасибо!
                                                                      2. Андрей 01 december 2016, 13:28 # 0
                                                                        Подскажите, а создавать страницы с фронта с помощью этого компонента можно? Мне нужно реализовать добавление новостей с фронта. Кстати, может еще чего посоветуете.
                                                                        1. but1head 01 december 2016, 14:00 # 0
                                                                          Добавить такую ссылку на панель
                                                                          manager/?id={parent}&a=resource/create&class_key=modDocument&parent={parent}&context_key=web
                                                                          
                                                                          Компонент это iframe админки, можно делать все, что можно в админке, в разумных пределах конечно.
                                                                        2. but1head 10 december 2016, 23:22 # +1
                                                                          1.1.0
                                                                          Добавил возможность скрыть панель
                                                                          Проверка на content_type (в настройках)
                                                                          Переписан css на .fm-селекторы

                                                                          Скрытая панель теперь выглядит так (сохраняется по кукам)


                                                                          Пытался отключить обновление модалки при смене шаблона, но при обновлении страницы в менеджере трется параметр frame=1, если кто-нибудь знает как его сохранить буду признателен
                                                                          1. Алексей Бгатов 11 december 2016, 02:05 # 0
                                                                            Уважаемый, спасибо, супер вещь.
                                                                            У себя дописал в плагин вот такое (строка 5):
                                                                            <?php
                                                                            if (!$modx->user->hasSessionContext('mgr')) return;
                                                                            switch ($modx->event->name) {
                                                                                case 'OnWebPagePrerender':
                                                                                    if (!$modx->resource->get('template')) break;
                                                                            

                                                                            дело в том, что на ресурсах без шаблона панель не то что не нужна, она мешает) например, наглухо ломает страницу, если ресурс заведен чисто для аякс запроса. Кроме того, хорошо бы проверять на тип — например, к sitemap.xml или robots.txt, если они сделаны ресурсами, совершенно не в кассу панель)
                                                                            1. but1head 11 december 2016, 02:26 # 0
                                                                              Впервые вижу страницу для аякс запроса, обычное такое через OnPageNotFound делают. По поводу роботс и сайтмап стоит проверка на тип ресурса (у роботс — txt, у сайтмап — xml) и на них панели нет в версии 1.1.0.
                                                                              1. Алексей Бгатов 11 december 2016, 02:36 # 0
                                                                                поподробнее про OnPageNotFound можно?
                                                                                у меня были случаи, когда было удобнее всего сделать ресурс без шаблона, который откликается только на аякс-запрос, а при прямом открытии редиректит. Например, корзина во всплывающем окне с полноценным редактором количества и удалением товаров. При прямом обращении она в обычную корзину отправляет.
                                                                                1. but1head 11 december 2016, 02:43 # 0
                                                                                  Если корзина то согласен, быстрое решение, так же делал. Панелька только админу выводится, на страницы без шаблона добавлю проверку.
                                                                                  А вообще bezumkin.ru/sections/tips_and_tricks/2918/ для не существующих страниц и oNHandleRequest для всяких аякс запросов, пример завтра смогу скинуть если напомнишь
                                                                                  1. Алексей Бгатов 11 december 2016, 02:46 # 0
                                                                                    напомню, спасибо
                                                                                    1. Алексей Бгатов 13 december 2016, 14:26 # 0
                                                                                      напоминаю :)
                                                                                      спасибо за оперативные обновления
                                                                              2. Павел 11 december 2016, 13:02 # +1
                                                                                Автор, большая просьба сделать системную настройку, через которую можно будет выбирать, где меню будет зафиксировано, либо сверху, либо снизу… просто бывает на сайте фиксированное верхнее меню и оно может перебить панельку или наоборот, панелька перебьёт меню.
                                                                                1. but1head 11 december 2016, 22:11 # +3
                                                                                  Добавил, можно обновляться
                                                                                  1. Павел 11 december 2016, 23:12 # 0
                                                                                    Быстро, спасибо)
                                                                                  2. Алексей Бгатов 13 december 2016, 14:26 # 0
                                                                                    а я пару строчек дописывал в css, тоже довольно удобно. типа так:
                                                                                    .h_menu {
                                                                                    	position: fixed;
                                                                                    	top: 0;
                                                                                    }
                                                                                    .fm .h_menu {
                                                                                    	top: 40px;
                                                                                    }
                                                                                    
                                                                                  3. Николай 24 december 2016, 10:25 # 0
                                                                                    Есть глюк в много язычных сайтах, не отображается по такому пути site.ru/ru/stranica или site.ru/en/stranica, а по адресу site.ru/stranica всё замечательно.

                                                                                    Видимо его пугает мой контекст:
                                                                                    base_url: /ru/
                                                                                    http_host: site.ru
                                                                                    site_url: http://site.ru/ru/
                                                                                    1. Александр 24 february 2017, 19:26 # 0
                                                                                      Доброго дня!
                                                                                      А как сделать в нём редактирование чанков?
                                                                                      You need to login to create comments.