Кастомизация админки фотоальбома

Хочу расширить функциональность.

Добавить свои поля для того, что бы позже их использовать (например Caption).

Не пойму, это реально велосипед с квадратными колёсами, который переделать сложнее чем свой сделать?

Ладно что надо в ДБ добавить. Хрен с ним что в нескольких шаблонах привить надо...

Но на кой хрен в режиме редактирования при клике по картинке наворотили огород с JS скриптами?

Зачем элементы добавляются в JS? ( photos.js )


<div class="p-description">
            <span class="editable" id="photo-description" style="display: none;">Первая картинка</span>
            <textarea id="photo-description-input" style="height: 50px; width: 970px;"></textarea>
           <br>
           <input type="button" id="photo-description-save" value="Сохранить"> 
           <em class="hint" id="photo-description-hint">Ctrl+Enter</em>
...

Зачем ловить описание в span а затем перемещать в textarea??????

Что за фигня? Зачем?

Будет ли нормально сделано в обозримом будущем так, что бы можно было кастомизировать и не лазить непонятно где?

10 ответов

  • 2
    Николай Webasyst 27 августа 2016 10:37 #

    Если вы не понимаете почему всё организовано именно так, а не иначе — возможно вам поможет понять причины более тщательное изучение архитектуры фреймворка:
    https://developers.webasyst.ru

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

    • 0
      r939 r939 27 августа 2016 18:45 #

      Прошу меня извинить, но то, как Вы ответили не является конструктивной формой диалога. Скорее Ваш ответ выглядит нападением с отстаиванием своего решения, каким бы оно не являлось с переходом на мою недалёкость в понимании вселенских идей.

      Я не говорил про архитектуру в целом и даже про фотоальбом. Я лишь поинтересовался, почему из 2 случаем из 3 всё редактируется как надо, без лишних костылей, а третий, по клику на картинку не очень удачный, ведущий к избыточной нагрузке, лишнему коду а так же не очевидной логике, которая в свою очередь мешает кастомизировать админку без лишних заморочек под нужды проекта. Архитектура тут совершенно не причём, это лишь подход в реализации частной задачи по смене наименования, комментария и картинки.

      Прошу меня понять правильно! Замечания, заметки и наблюдения даже в адрес Битрикс и НетКат не встречались с таким скрытым наездом и намёком на необразованность в данном вопросе. Если я писал что то, что не желали рассматривать, то для этого были более мягкие ответы. Культурно и вежливо благодарят и "отписываются" что рассмотрят когда дойдут руки или будет время. Это называется - Маркетинг, направленный на укрепление лояльности разработчиков.

      Даже если я не доволен тем, что чего то нет или работает "криво" , а уж поверьте и в такой серьёзной системе как Битрикс много чего работает не должным образом, то получив вежливый ответ, я остаюсь с ними, потому что "верю" , что им есть дело до каждого.

      И да, я находил не мало того, что разработчики Битрикс пропустили и в результате исправляли. Не смотря на мою занудность, стиль изложения и иногда грубость, Вы должны понимать, что я Вам пишу только для того, что бы Вы стали лучше и зарабатывали больше. Те кто не пишут и не спрашивают, наткнувшись на "хрень" просто уходят и не помогают Вам.


      • +2
        Михаил Ушенин Михаил Ушенин Webasyst 29 августа 2016 15:30 #

        То, как вы задали свой "вопрос", ещё меньше похоже на конструктивное начало диалога. Но давайте не будем обсуждать манеру общения, а перейдём к сути вопроса. Опишите, пожалуйста, ещё раз, в чём именно состоит ваш вопрос. Желательно без употребления слов "хрень", "фигня" и тому подобных жаргонизмов. Какие конкретно поля и куда именно вы хотите добавить и как именно вы хотите их использовать?

        Предлагаю пока что опустить дискуссию о том, для чего именно разработчики приложения в режиме редактирования при клике по картинке наворотили огород с JS скриптами, зачем элементы добавляются в JS и зачем ловить описание в span а затем перемещать в textarea. А лучше опишите подробнее, как именно "нормально" вы хотели бы, чтобы приложение было сделано (в обозримом будущем).

        • +1
          r939 r939 30 августа 2016 16:16 #
          Здравствуйте.

          Спасибо за Ваш конструктивный ответ.

          Возможно я был прямолинеен и не очень любезен в постановке вопроса. Прошу меня извинить если это Вам показалось попыткой оскорбления. Я не пытался выпятиться или кого то уесть.

          По существу:

          Суть такая.

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

          Соответственно в базе добавил поле (текстовое), после чего необходимо научить его для начала читать в админке.

          в db добавляю в массив photos_photo новую, доп строку 'add_description' => array('text'),

          в PhotoList.html (actions) оба вида отображения

          231стр. <div class="p-description">
          {%#p.add_description.truncate(255)%}</div>
          то же касается 312стр.
          всё как бы нормально, отображается.

          Но есть ещё клик по миниатюре, который уводит в default.html (layout)

          Вот там и сложности. А именно:


           <div class="p-description">
                      <span class="editable" id="photo-description">{%#p.description%}</span>
                      <a href="javascript:void(0);" class="hint inline-link" id="photo-description-edit-link"><i class="icon10 edit"></i><b><i>[`edit`]</i></b></a>
                  </div>

          Что отсылает нас в photos.js который и надо править ради того, что бы на странице редактирования добавить/вывести имеющееся поле.

          Пляска с бубном со стр .1283

          И там не всё так просто как могло быть. В связи с чем я имел дурость выразить то, что думаю на этот счёт. Зачем городить такой огород с вставкой кода через JS не лету? Почему не сделать и подготовить все имеющиеся поля сразу в в PHP/smarty (на странице), а по клику их отображать выводя из инвизибл, сколько бы их не было и как бы не назывались?

          Это же проще, а учитывая что полей там быть может ну скажем не много, то скрытое поле или инклюд его из JS ну не играют разницы по производительности, а удобство на лицо. Если надо добавил поле по шаблону и вуаля. В скрипте прошлись по дочерним элементам родителя и все нашли, открыли, после только в скрипт сохранения добавить что надо и всё. Гибко, быстро, масштабируемо/кастамизируемо.

          Пожалуйста, поправьте меня если я не прав.


          С Уважением,
          Никульшин Сергей

          • +1
            Михаил Ушенин Михаил Ушенин Webasyst 30 августа 2016 17:32 #

            Думаю, что вы заходите не с той стороны. Исходный приложения крайне желательно не редактировать совсем — это нерекомендуемая практика. Лучше попытаться решить задачу путём написания плагина. В этом вам помогут следующие материалы:

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

            • +1
              r939 r939 30 августа 2016 18:54 #

              Не хотел городить огород, засорять админку лишними плагинами.

              Чаще бывает так, что поставил CMS и забыл, не обновляешь, если всё работает.

              По сему хотел - быстро и "дёшево".

              То что не рекомендуется админку править, это у всех, но куда без этого?

              • +2
                Manakhov Sergey Manakhov Sergey 1 сентября 2016 09:14 #

                А потом находится критическая уязвимость... И вот Вам уже нужно обновиться, а у Вас, а у Вас... всё переписано. И в итоге все труды Ваши и Ваших коллег канут в лету, когда кто-то в инсталлере нажмет "обновить".

                • +1
                  r939 r939 1 сентября 2016 21:54 #

                  И такое бывает. Но если мы знаем, что делали, то и накрутить по новой не составит труда. Есть бакап, есть локальная копия или архив, либо кусок того, что делал.

                  Как практика показывает, чаще всего разработчики привносят либо что то новое, либо пилят ядро, а уж второстепенных модулей касаются раз в пол года, а то и 3 года не заглядывают (как в случае с битриксом).

                  По разному бывает.

  • 1
    Евгений Леман 29 августа 2016 18:10 #

    Здравствуйте! Я учитель физкультуры и сегодня мы попробуем покодить...

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите