[ms2form] Новые возможности для редактирования




Вышла новая версия компонента для публикации и редактирования товаров minishop2 c фронтэнда сайта.

Скачать можно здесь, документация
Скоро обновится версия в modstore

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

  • Полноценная работа с галерей изображений minishop2, загрузка, запись на диск, создание превью, поддержка настройки через источник файлов, возможность удалить старые картинки и загрузить новые.
  • Возможность выбрать один из двух редакторов quilljs или bootstrap-markdown. Оба редактора удобные, один визуальный другой использует markdown синтаксис.
  • Создание новых и поиск существующих категорий родителей в одном поле. Для автодополнения используется msearch2 со всеми его богатыми настройками.
  • Из соображений безопасности добавлена фильтрация контента с помощью библиотеки HTML Purifier
Эти функции добавились к уже реализованной поддержке тегов, мультикатегорий, tv и шаблонов.

Остальные поля товаров поддерживаются, но не полностью.
Простые поля поля типа price, нужно добавить в параметр allowedFields, вывод доступен через плейсхолдер [[+price]]. Их нужно добавить в чанки вручную.
<div class="form-group">
    <label>price</label>
    <input type="text" class="form-control"  name="price" value="[[+price]]]" maxlength="50"/>
  </div>
Для множественных полей, таких как color доступен только вывод типа [[+color.0]] [[+color.1]], их редактирование еще нужно доделать.

Исходный код доступен на github создавайте issue если найдете ошибку и для идей по дальнейшему улучшению.

Компонент так будет оставаться бесплатным в modstore, так что донейшен будет весьма кстати.
Форма для донейшена

Кстати за то что я довел компонент до сегодняшнего уровня стоит благодарить Wassi Wassinen )
Антон Мамрашев
30 апреля 2015, 23:35
modx.pro
15
9 417
+7

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

Wassi Wassinen
01 мая 2015, 03:06
0
Если кому интересно — Антон делает отличные дополнения. Если нужен адекватный разработчик с редким умением сделать всё именно так, как вы задумали и даже удобнее и лучше — рекомендую.
    Александр Н
    07 сентября 2015, 22:04
    0
    При редактировании не выводит контент — только заголовок и прикрепленые файлы. Вы сталкивались с подобным?
    При этом в логах ошибка:
    (ERROR @ /index.php) No foreign key definition for parentClass: modUser using relation alias: up2Profile
    Ещё к сожалению поле контента не всегда подгружается. приходится перезагружать страницу, хотя снипет вызывается не кэшируемым (редактор bootstrapMarkdown)
    Wassi Wassinen
    01 мая 2015, 03:10
    0
    Не увидел в описании, что дополнение умеет создавать категории. А это значит, что вы можете создавать блоги, разделы с статьями и все что вам вздумается. Можно публиковать товар в несколько категорий или использовать теги. И многое, многое другое.
    Дмитрий Кондаков
    01 мая 2015, 05:29
    0
    Галерея это круто, давно была такая необходимость, будем тестить
      Александр
      13 мая 2015, 15:51
      0
      Добрый день! Помогите разобраться, не записываются данные в tv-поля. https://modx.pro/help/5493/#comment-39775
        Валерий Савинов
        13 мая 2015, 18:37
        0
        Здравствуйте.
        Не могу взять в толк, доступ к контексту ms2formUserPolicy у администратора стоит по умолчанию, но даже будучи залогиненным форма не отображается.

        И я прочитал в первом комментарии, что вы можете помочь, скажите сколько стоит установка и настройка вашего компонента на сайт по тз?
          Антон Мамрашев
          13 мая 2015, 18:42
          0
          Пришлите доступ на me6iaton@gmail.com, я посмотрю в чем проблема
          Василий Столейков
          19 мая 2015, 10:30
          0
          1. Текстовый редактор [bootstrap-markdown] поддерживает визуальный режим редактирования?
          Просто некоторые заказчики упорно не хотят видеть код и разбираться в нём, хотят чтобы было как в «ворде».
          2. Если нет, насколько проблемно самому сменить редактор на какой-нибудь визуальный, например на jhollingworth.github.io/bootstrap-wysihtml5/?
          Николай Загумённов
          17 июня 2015, 23:14
          1
          0
          Не сразу понял что TV при этом должно иметь имя типа «tv2». =))))
          2 = Это id дополнительного поля.
            but1head
            09 июля 2015, 22:30
            0
            minishop2 2.1.10-pl + ms2form = белый экран при вызове компонента.
            Права стоят.

            $ms2form = $modx->getService('ms2form'....
            будто не видит это
              but1head
              09 июля 2015, 22:52
              0
              причем на modhost завелось сразу. может какие-то либы нужны на сервере не стандартные? и там и там чистая сборка 2.3.5-pl
                but1head
                10 июля 2015, 00:58
                0
                core/components/ms2form/model/ms2form/ms2form.class.php
                return $this->success("ok", ['html' => $html, 'file' => $file]);
                ругается на это, видимо на моем хосте нет нужной либы, какая нужна?
                  Олег Максименко
                  10 июля 2015, 11:49
                  +1
                  php 5.4 нужен
                    but1head
                    10 июля 2015, 12:47
                    0
                    Спасибо, почему-то был уверен, что 5.4 стоит

                    но все равно Parse error: syntax error, unexpected '[' in /var/www/carticket/data/www/carticket.ru/core/components/ms2form/model/ms2form/ms2form.class.php on line 188
                Александр
                15 июля 2015, 21:02
                0
                Подскажите, можно как-то вывести список документов, созданных определенным пользователем?
                  Антон Мамрашев
                  16 июля 2015, 07:17
                  0
                  да, стандартными снипплетами вывода ресурсов, с фильтрацией по полю createdby
                  kostik
                  26 октября 2015, 20:08
                  0
                  Если добавлять товар из админки, то поле предлагает ранее введенные варианты, можно ли это сделать при вводе в поля ms2form с фронтенда, как это сделать?
                    Юрий
                    02 февраля 2016, 11:49
                    0
                    Привет. Отличное дополнение.
                    Но почему-то на никак не получается заставить его работать.
                    Для пользователей даны права:
                    Доступ к группам ресурсов: TicketSectionPolicy
                    Доступ к контекстам: ms2formUserPolicy
                    Доступ к источнику файлов (MS2 Images): Media Source User

                    Выскакивают ошибки
                    консоль браузера
                    Failed to load resource: the server responded with a status of 400 (Bad Request)
                    Консоль ошибок Modx
                    [2016-02-02 11:35:28] (ERROR @ /assets/components/ms2form/action.php) У вас недостаточно прав для этого действия.
                    И пи попытке загрузить файлы:
                    Ошибка HTTP.
                    Что-то еще необходимо разрешить?
                      Иван Сергеевич
                      15 февраля 2016, 18:37
                      0
                      Вы нашли решение?
                        Юрий
                        16 февраля 2016, 00:35
                        0
                        На этом ресурсе достаточно умных людей, которых раздражают «Глупые вопросы».
                        Поэтому пока не решил. Но если честно, еще толком не занимался.
                        Юрий
                        04 марта 2016, 16:32
                        0
                        Хатабыч, Вы не сталкивались с такой проблемой — при редактировании ресурса контент подгружается
                        вместе со всеми html-тегами
                        Ни как не могу найти решение этой проблемы
                      Юрий
                      16 февраля 2016, 08:10
                      0
                      Да, несколько.
                      Но если зайти по админом, то все работает.
                        Иван Сергеевич
                        16 февраля 2016, 11:00
                        +1
                        У меня два контекста web и web2.
                        Так у меня работает:

                        В настройках группы пользователей выставляю:
                        права доступа > доступ к контекстам >

                        web Member — 9999 ms2formUserPolicy
                        web2 Member — 9999 ms2formUserPolicy (форма вызывается здесь)

                        Доступ к группам ресурсов: пусто
                        Доступ к источнику файлов (MS2 Images): пусто

                          Юрий
                          16 февраля 2016, 12:49
                          0
                          Спасибо, Хоттабыч.
                          Действительно, помогло добавление прав доступа пользователю к основному контексту (web), кроме того, на котором стоит форма

                          Век живи, век учись
                        Wassi Wassinen
                        14 июня 2016, 22:45
                        +1
                        Свежие версии теперь на гитхабе:
                        github.com/vasilueff/ms2form
                          Иван Бондаренко
                          05 апреля 2017, 15:03
                          0
                          Wassi Wassinen, есть 2 вопроса по поводу ms2Form:

                          1) Продолжает ли компонент поддерживаться автором?
                          2) Вопрос по поводу безопасности компонента: вырезает ли он всякие «бяки» из коробки как Тикетс или нет? Имеется в виду, насколько все защищено и можно ли давать доступ к публикациям всем пользователям без разбора. Просто хочу сделать возможность добавления товаров из фронтенда любыми пользователями.
                          G@G
                          G@G
                          16 июня 2016, 23:34
                          0
                          Здравствуйте.
                          Подскажите как настроить права.

                          Под всеми пользователями, включая админа, вместо формы отображается «ms2form_err_no_auth».

                          MODX 2.5 (php7), один контекст.
                          Ставлю, например, права группе администраторы: web — Member — 9999-ms2formUserPolicy, пробовал web-Super User — 0 — ms2formUserPolicy, результат один ms2form_err_no_auth.

                          Что ещё нужно сделать ни как не пойму.
                            G@G
                            G@G
                            16 июня 2016, 23:53
                            0
                            Попробовал переустановить, при установке выдало:
                            Error 23000 executing statement: INSERT INTO `rcps_transport_packages` (`signature`, `created`, `state`, `workspace`, `provider`, `disabled`, `source`, `package_name`, `version_major`, `version_minor`, `version_patch`, `release`, `release_index`) VALUES ('pdotools-2.5.3-pl', '2016-06-16 08:50:41', 1, 1, 2, 0, 'pdotools-2.5.3-pl.transport.zip', 'pdoTools', 2, 5, 3, 'pl', 0) Array ( [0] => 23000 [1] => 1062 [2] => Duplicate entry 'pdotools-2.5.3-pl' for key 'PRIMARY' )
                            Could not save package pdoTools
                            PHP notice: Undefined index: package_action
                            Успешно установлен пакет ms2form-1.3.0-beta
                              Андрей Gryn
                              24 декабря 2016, 22:48
                              0
                              Вдруг неожиданно, при добавлении картинки, она загружается в папку уже существующего товара, например:
                              /assets/images/products/68/
                              Почему именно этот id 68, почему в него именно загружается? Я никак не мог понять, и удалил такой товар.
                              Теперь картинки грузились в другой товар, /assets/images/products/89/
                              Удалил и 89й.
                              Стало грузится в другой, /assets/images/products/72/
                              При этом сам новый товар создается, кроме изображения — все в порядке.

                              Почему так может происходить? Ошибок в логах нет.
                              Пробовал две версии, из репозитория modstore 1.3.0. и форк с гитхаба vasilueff 1.3.5 — результат один и тот же.

                              Я раньше не замечал, как работает форма и куда загружается картинка. А ведь, действительно, куда она загружается, если товар еще не создан и ему не присвоен id?
                                Андрей Gryn
                                25 декабря 2016, 16:19
                                0
                                Все таки есть в логах ошибка, после добавления товара
                                (ERROR @ /var/www/sitename/core/components/ms2form/processors/web/product/categories.class.php : 27) PHP warning: Invalid argument supplied for foreach()
                                  Максим
                                  30 декабря 2016, 21:36
                                  1
                                  0
                                  решил проблему? Я тоже сидел мучился пока в чанке не удалил input type=«hidden» name=«pid» value=«0»
                                  не знаю правильно ли это и вообще хотелось бы почитать что это за поля. и какие поля возможно еще добавить.

                                  У меня тут появилась новая сложность я добавляю товары только по 1 шаблону
                                  [[!ms2form?
                                  &parents=`28`
                                  &parentsIncludeTVs=`price`
                                  &template=`5`
                                  &tags=`0`
                                  &tagsNew=`0`
                                  ]]
                                  Но почему то после создание оказывается что шаблон не назначен
                                    Максим
                                    27 февраля 2017, 04:55
                                    0
                                    Решили проблему с назначением шаблона? Такая же вот беда не могу решить пока
                                Андрей
                                07 января 2017, 21:09
                                0
                                Добрый день. Можно ли в данном компоненте прикрутить добавление даты публикации и даты снятия с публикации?
                                  Wassi Wassinen
                                  07 января 2017, 22:46
                                  1
                                  +1
                                  Это уже работает. Создавайте поле в чанке ms2form и в него добавляйте дату вида yyyy-mm-dd. Самое простое — прикрутить скрипт datepicker. И сохраняйте значение в поле publishedon и т.д.
                                  Артём
                                  20 февраля 2017, 18:47
                                  0
                                  Добрый день! Помогите решить 2 вопроса:
                                  1. Важный: настроил форму, впринципе все работает, но при редактировании tv значения не обновляются, хотя при создании, tv отлично записываются. Уточните, где может быть проблема? Логи modx не фиксируют проблему. Стандартные поля обновляются (pagetitle, longtitle и тд.), а tv не хотят.
                                  2. Можно ли как то разделить поле Категории на 2 разных: Главная категория и второстепенные?
                                    Антон Левиц
                                    Антон Левиц
                                    26 февраля 2017, 01:25
                                    0
                                    Кто-нибудь знает как решить проблему с сохранением tv полей?
                                      Руслан Валеев
                                      12 марта 2017, 11:45
                                      0
                                      Спасибо за отличный компонент!

                                      Столкнулся с такой проблемой.
                                      на сайте реализована авторизация и лк пользователя, откуда можно добавлять товары на сайт. каждый зарегистрированный пользователь в ЛК может просматривать созданные им товары, а так же редактировать их, но если в адресной строке изменить id товара &pid=107
                                      то пользователь получает возможно отредактировать товар другого пользователя
                                      вариант решения вижу такой, получить значение поля автор объявления и сравнить его с текущем пользователем, но что-то в кучу все собрать не получается… может есть у кого готовые решения или идеи?
                                        Руслан Валеев
                                        12 марта 2017, 12:20
                                        0
                                        Решил через вот так
                                        [[!If?
                                        &subject=`[[+modx.user.id:userinfo=`username`]]`
                                        &operator=`EQ`
                                        &operand=`[[+createdby:userinfo=`username`]]`
                                        &then=`yes`
                                        &else=`no`
                                        ]]
                                          Артём
                                          30 марта 2017, 06:52
                                          0
                                          Можно реализовать без расширения IF. У меня так реализовано:
                                          [[!+fi.createdby:is=`[[!+modx.user.id]]`:then=`[[$Чанк_формы_редактирования]]`:else=`Вы не можете редактировать эту запись`]]
                                          А вообще в ms2form есть встроенная проверка, у меня она работает. Другой момент, если вы вошли под админом, то там вроде полный доступ, но если войти под обычным юзером, то он не сможет редактировать ресурс другого юзера.
                                          Fred
                                          13 апреля 2017, 01:42
                                          0
                                          Столкнулся с ms2form_err_no_auth для любого пользователя включая админа, естественно я авторизован в этот момент, поиск ничего не дал, здесь тоже вопрос этот выше висит без ответа и еще в вопросах два сообщения и тоже тишина. Вроде все сделал как описано, в чем проблема может быть?
                                            Николай Савин
                                            28 июня 2017, 15:27
                                            0
                                            Каким образом прикрепить изображение к галереи minishop?
                                            Сама загрузка файла у меня происходит относительно нормально. Но при сохранении товара — изображение не сохраняется в галереи.
                                              Андрей
                                              28 июня 2017, 15:32
                                              0
                                              Тоже сталкивался с такой проблемой. У вас при создании нового товара не сохраняет галерею? Возможно это как и при создании товара через админку, пока не сохранишь ресурс, галереи по факту не существует.

                                              Я в итоге отставил загрузку фото только при редактировании товара, тогда всё сохраняет нормально.
                                                Николай Савин
                                                28 июня 2017, 15:37
                                                0
                                                Хм. Возможно.
                                                А как при редактировании формы правильно прикрепить файл? Можно пример вызова сниппета и\или шаблона.
                                                Насколько я понимаю должно быть поле name=«image[]»?
                                                  Андрей
                                                  28 июня 2017, 15:54
                                                  0
                                                  Делал так:

                                                  1. Из чанка tpl.ms2form.create — просто убрал загрузку файлов (код как в пункте 2).
                                                  2. В чанке — tpl.ms2form.update:

                                                  <div class="form-group">
                                                      <div class="ticket-form-files">
                                                        [[+files]]
                                                      </div>
                                                    </div>

                                                  На самой странице товара:

                                                  {if $_modx->user.id > 0 && $_modx->resource.createdby == $_modx->user.id}
                                                                  
                                                      {if $.get['pid']}{else}
                                                          <a href="{$_modx->resource.id | url}?&pid={$_modx->resource.id}" title="Редактировать">Редактировать</a>
                                                      {/if}
                                                  	
                                                   {/if}
                                                  
                                                  {if $.get['pid']}
                                                                  
                                                  	[[!ms2form?
                                                  		&parent=`1`
                                                  		&templates=`1`
                                                  		&allowedFields=`pagetitle`
                                                  		&requiredFields=`pagetitle`
                                                  	]]
                                                  
                                                  {/if}

                                                  Не знаю, насколько это верно реализовано, но работает =)
                                            Impulse
                                            14 декабря 2017, 11:53
                                            0
                                            Установил данный пакет, в консоли ошибка curl.js:16 Uncaught Error: Multiple anonymous defines encountered
                                            at curl.js:16
                                            at HTMLScriptElement.c.onload.c.onreadystatechange (curl.js:14)

                                            Само собой компонент не работает вообще, кто знает что с этим можно сделать?
                                              Виктор Долгий
                                              10 января 2018, 19:37
                                              0
                                              Тут дело в загрузчике curl.js (который в ms2form используется для загрузки других библиотек). Желательно его грузить последним, иначе может вылететь ошибка из-за загрузки других AMD-модулей раньше него. Чаще всего AdminPanel грузится после, тем самым выбивает curl. Попробуйте деактивировать плагин AdminPanel.
                                                Александр
                                                01 марта 2018, 03:11
                                                0
                                                А если плагина AdminPanel вообще нет, а ошибка всё равно присутствует?
                                                  Александр
                                                  01 марта 2018, 03:43
                                                  0
                                                  На странице вместе с ms2form был вызван mSearchForm. После того, как убрал форму поиска, ошибка исчезла
                                                Роман
                                                07 февраля 2019, 10:02
                                                0
                                                Всем привет. А каким образом можно удалить товар из фронтенда?
                                                  Alexander
                                                  13 февраля 2019, 15:38
                                                  0
                                                  Роман, доброго дня! Нашли ответ на сей вопрос?
                                                    Роман
                                                    13 февраля 2019, 20:53
                                                    0
                                                    Не-а…
                                                      Alexander
                                                      13 февраля 2019, 20:57
                                                      0
                                                      Я написал разработчику—мож ответит…
                                                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                  58