miniShop 1.9.0

Совершенно неожиданно выпустился MiniShop 1.9.0! Хотя нет, шучу, я запарился его выпускать.
Причина банальна — мало времени и много работы.

Что нового?

Возможность сортировки элементов галереи перетаскиванием.

А к ней еще и новое поле для сортировки в таблице ModGallery. То есть, мышкой таскаем картинки в админке и выводим их потом на сайте в этом порядке, сортируя по полю fileorder.

Добавлен вывод родительских категорий у категорий товара в админке

Небольшое, но приятное изменение. Теперь будет понятнее, что и где лежит.


Добавлены события msOnBeforeTVUpdate и msOnTVUpdate.

События для плагинов, чтобы ловить изменения ТВ параметров из админки miniShop.

Добавлены события msOnBeforeProductUpdate и msOnProductUpdate

То же самое, только для обновления товаров.

Метод getProduct теперь может возвращать массив объектов а не значений.

Это для программистов. У метода getProduct добавился новый параметр, и если он отличен от нуля, то вместо массива данных товара вернется массив с объектами. Кому интересно — смотрите исходник.

Если не задано поле «img» у товара, то админка попытается вывести в таблицу первое изображение из галереи этого товара.

С появлением галереи, поле картинки в свойствах товара начинает отмирать. То есть, ее не интересно никому заполнять, если у товара больше одного изображения (а обычно, это так). Поэтому, с новой версии, если не указано img у товара, то в админку быдет выводиться первая картинка из ModGallery (если есть, конечно).
Ну а на сайте, тогда, где надо вызывайте сниппет msGetGallery с &limit=`1`.

Импорт товаров из *.csv

Ну и напоследок я оставил самое важное новшество — импорт товаров из файлов csv. Он прячется за незаметной кнопочкой возле «Создать», на вкладке товаров.

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

Возможные поля для испорта назначаются в системной настройке minishop.import_fields.
Их несколько типов:
  • Начинаются на tv_ — ТВ параметры. Например, у вас есть ТВ параметр discount, тогда в настройке его надо задать как tv_discount.
  • Начинаются на ms_ — свойства товаров: задавать как ms_price, ms_weight, ms_remains и т.д.
  • Специальные слова, их пока 2: tag и gallery. Тут понятно, поле для тега и файла галереи.
  • Тип none — поля с этим типом обрабатываться не будут.
  • Все остальное. Эти поля импорт попытается засунуть в modResource, то есть: pagetitle, content, introtext и т.п.
Таким образом, в настройке у нас будет строка, типа: «pagetitle,longtitle,introtext,content,ms_price,ms_weight,ms_article,ms_img,tag,gallery,ms_add1,ms_add2,ms_add3,tv_meta».

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

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

Таким образом, импортироваться должны файлы любого размера (поэтому и работаем с уже загруженным на сервер *.csv).

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

Для размышления

Как обычно, практически полностью, обновление оплачено веб-студией Simple Dream и только на импорт мы собирали отдельно.

Насобирали 6950 рублей, из 10000, причем 3200 перечислил Виталий Дощенко, директор все того же Simple Dream! Отсюда выходит, что сообществом неравнодушных людей мы насобирали аж 3750 руб.

При этом, компонент скачан более 2700 раз, а документацию в день читают не менее 100 человек. Хочется много что сказать по этому поводу, но не буду. Лучше скажу «спасибо» тем, кто раскошелился. Только из-за вас, я таки сделал эту функцию, хоть и дешевле\дольше, чем собирался. А пользоваться будут, как обычно, все.

Вывод простой: больше никаких сборов средств на разработки, на вопросы, типа «а давайте соберем бабло на то-то, это очень полезно всем» буду реагировать резко.

Удачи с новой версией, жду багрепорты.

История изменений


Комментарии ()

  1. Виталий Батушев 23 августа 2012, 23:25 # 0
    А у меня вот не показывается кнопка импорта. Все есть — кнопки нет. Может, потому что я цинично отказался на нее сбрасываться.
    1. Василий Наумкин 23 августа 2012, 23:30 # 0
      Ctrl+F5
      1. Виталий Батушев 23 августа 2012, 23:31 # 0
        Василий, и Ctrl+F5, и Ctrl+U, и выход-заход в админку. Не стал бы тревожить, если бы хоть что-то из этого помогло.
        1. Василий Наумкин 23 августа 2012, 23:42 # 0
          Проверил на modx-test.com, все на месте.

          Разбирайтесь со своим кэшем.
          1. Виталий Батушев 23 августа 2012, 23:44 # 0
            Да, тоже проверил на других своих сайтах — все нормально. Значит, этот дурит. Прошу прощения.
    2. Андрей Чирко 24 августа 2012, 00:26 # 0
      wdevblog.net.ru/blog/pro-idiotizm.html
      Просто информирую об этой записи. Можешь этот коммент удалить.
      1. Василий Наумкин 24 августа 2012, 00:28 # 0
        =)

        Пусть висит, так смешнее!
        1. Андрей Чирко 24 августа 2012, 00:29 # 0
          Что тебя так повеселило? =) В чём я не прав, объясни дурачку.
          1. Иван Брежнев 24 августа 2012, 13:49 # 0
            Мне вот тоже интересно было услышать ГРАМОТНУЮ и КУЛЬТУРНУЮ переписку двух разработчиков, а не брызганье кислотой друг в друга
            1. Антон Хайэксель 24 августа 2012, 18:07 # 0
              Первое время использовал Шопкипер, но minishop за короткое время превзошел его в разы
              1. Василий Наумкин 24 августа 2012, 18:10 # 0
                тссс!
                1. Valeriy Kurdyukov 25 августа 2012, 17:00 # 0
                  Плюсую, не одно расширение от автора shopkeeper'a не заменит расшерения Василия Наумкина)
                2. Антон Слободчук 24 августа 2012, 18:16 # 0
                  Согласен. Тоже использовал Шопкипер, но Минишоп стал намного круче :)
                  1. Виталий Евдокименко 01 сентября 2012, 01:38 # 0
                    около месяца изучал вопрос, создал сравнительную таблицу с зелеными плюсиками))

                    с тех пор минишопу только опции сравнения не хватает

                    а вот возможность выбора Склада — и различных цен для этих слкадов… это для меня стало самым важным. Да и в общем — свежий подход, разумные решения… как то душевнее. ИМХО
                    1. Иван Брежнев 02 сентября 2012, 02:53 # 0
                      Сравнение товаров сделать довольно просто.
          2. Максим Франц 24 августа 2012, 13:35 # 0
            Честно сказать не совсем понятна ваша реакция касаемо импорта (Для размышления).
            За обновление спасибо.
            1. Василий Наумкин 24 августа 2012, 13:44 # 0
              По моему, тут все понятно: ­решил пойти на встречу просящим — и они дружно разбежались в ­кусты.

              Больше так делать не буду.
              1. Виталий В. 25 августа 2012, 20:57 # 0
                Откуда такой стереотип?
                Я и сам бы ничего и не узнал, если бы случайно не зашел на ваш сайт.
                Так что утверждение о разбежавшихся в корне неверное.
                Спорить и разъяснять не буду. Каждый видит то, что хочет видеть.
                1. Василий Наумкин 25 августа 2012, 21:10 # 0
                  Элементарно, Ватсон.

                  Несмотря на обсуждения и объявления, никто оставшиеся 3050 не заносит. Даже, после выпуска этого обновления с импортом.

                  Посещаемость сайта — от 200 уников в день, 1000 просмотров в сутки минимум, из них половина — документации miniShop.

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

                  Один раз попробовал, больше не буду. Это все пишу, чтобы разъяснить свою позицию.
            2. Иван Брежнев 24 августа 2012, 13:47 # 0
              Наш народ еще в зачаточном состоянии «Донаторства» находится, это не Америка и не Европа.
              1. Василий Наумкин 24 августа 2012, 13:48 # 0
                Да фиг с ним, с донаторством. Сделали и ладно! Щас опять начнем одно да долго обсуждать.

                Лучше отписывайте впечатления.
              2. Антон Слободчук 24 августа 2012, 13:47 # 0
                Спасибо!
                Логика работы многих магазинов несколько иная. Есть несколько поставщиков, у которых прайс-листы (csv, xml, yml) выгружается раз в несколько часов, а скрипт должен импортировать эти данные. Было бы замечательно, если импорт прайса каждого поставщика можно было ставить на cron или на CronManager.
                Особенно актуально показывать самые свежие данные для Яндекс Маркета, их СКК постоянно следит за наличием реальных товаров, тут лучше не напортачить, иначе дисквалифицируют.
                1. Василий Наумкин 24 августа 2012, 13:51 # 0
                  Импорт делается через процессор, так что с кроном проблем быть не должно — bezumkin.ru/blog/2012/06/20/19/

                  Но будет проблема с правами, так как для создания ресурсов надо быть авторизованным в админке юзером.

                  Но опять же, есть процессоры для логина. В общем, это отдельная тема, которую надо изучать.

                2. Антон Хайэксель 24 августа 2012, 16:07 # 0
                  В упор не вижу что не так

                  в tpl.getResources.row добавляю [[+content]]

                  однако контент не выводится %)
                  1. Василий Наумкин 24 августа 2012, 16:09 # 0
                    У getResources есть параметр includeContent, по умолчанию он не включен.

                    Надо включить. rtfm.modx.com/display/ADDON/getResources
                    1. Антон Хайэксель 24 августа 2012, 16:12 # 0
                      Огромное спасибо
                  2. Антон Слободчук 24 августа 2012, 17:25 # 0
                    А что за файл import_example.php?
                    1. Василий Наумкин 24 августа 2012, 17:31 # 0
                      Пожалуй, ссылку на google translate будет невежливо ­давать.

                      Поэтому отвечу честно — это пример импорта. Он лежит там ­чуть ли не с первой версии магазина.

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

                      Теперь и такое есть.
                      1. Антон Слободчук 24 августа 2012, 17:40 # 0
                        Это подтверждает мои лучшие опасения :)
                        Буду использовать, как основу для импорта и обновления цен / наличия на складе товаров у поставщика.
                        1. Василий Наумкин 24 августа 2012, 17:43 # 0
                          На здоровье!

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

                          Всегда считал, что этого достаточно.
                          Вот это еще будет полезно bezumkin.ru/blog/2012/06/26/modx_api/
                    2. Николай Мордынский 25 августа 2012, 22:14 # 0
                      Спасибо автору. Россия такая Россия по 200 р. с киви жаль было накидать по капельки стыдно народ.
                      1. Василий Наумкин 26 августа 2012, 17:49 # 0
                        Ой, ну ладно тебе. Родина то тут при чем?

                        В любом случае — есть новая версия, а в ней есть импорт. Нормально все вышло, дальше будет только лучше.
                        1. Николай Мордынский 28 августа 2012, 13:19 # 0
                          Я не про родину а про людей. Хотя бывают и исключения
                      2. Viktor Minator 26 августа 2012, 16:46 # 0
                        спасибо за импорт.
                        1. Василий Наумкин 26 августа 2012, 17:47 # 0
                          Тебе спасибо!
                        2. Павел Галанкин 26 августа 2012, 20:39 # 0
                          Василий, как на счет иконки для импорта? Может сделать? Есть ли возможность её разместить в кнопку, что бы было как то заметнее?
                          1. Василий Наумкин 29 августа 2012, 04:41 # 0
                            Можно и разместить.

                            Только, эта кнопка и не должна быть заметна. Кому надо — знает, а рядовому менеджеру незачем глаза мозолить.

                            В общем, если есть время на рисование — давай иконку =)
                          2. dr Del 27 августа 2012, 02:15 # 0
                            Спасибо
                            1. Иван Брежнев 27 августа 2012, 03:07 # 0
                              «Возможность сортировки элементов галереи перетаскиванием.»
                              Не заметил такой фичи на демо сайте. Т.е. таскать мышей не получается.

                              1. Василий Наумкин 27 августа 2012, 06:00 # 0
                                Там версия старая, скоро обновлю.

                                Свежую версию всегда можно погонять на modx-test.com
                              2. Иван Брежнев 27 августа 2012, 03:19 # 0
                                Может я чего-то не понимаю но в таблице modGallery нет поля «order», а есть «fileorder»

                                https://github.com/bezumkin/miniShop/blob/master/core/components/minishop/processors/mgr/goods/gallery/create.php#L28
                                1. Иван Брежнев 27 августа 2012, 03:35 # 0
                                  Прокомментировал строчки где возможно ошибки есть
                                  https://github.com/bezumkin/miniShop/commit/2c5f823b561ad0103ec7d04203be881af4708aaa
                                  1. Василий Наумкин 27 августа 2012, 06:00 # 0
                                    Спасибо, поправил.
                                  2. dr Del 27 августа 2012, 22:35 # 0
                                    Вопрос, быть может и не к месту, всеже
                                    После обновления минишопа перестала работать загрузка картинок из каталога, ни ошибок ни чего просто ровным счетом ничего не происходит после выбора каталога и нажатию сохранить и закрыть
                                    И второй миниатюра в каталоге теперь для всех товаров генерируется для всех товаров одна и таже из последней загружённой картинки
                                    В какую сторону рыть?
                                    1. Denys Butenko 27 августа 2012, 23:23 # 0
                                      Если загружаете в галерею фотографии из каталога, действительно после нажатия сохранить ничего не происходит, но если нажать закрыть(диалоговое окно выбора папки) и обновить(в окне Галерея) то фотографии появляются.
                                      1. dr Del 27 августа 2012, 23:47 # 0
                                        Раньше все именно так и было, я был не точен имелась в веду кнопка сохранить и закрыть
                                        Плюс к этому и странное поведение миниатюр даже если ручками удалять кеши с картинками внутри content. goods все нормально, у каждого товара при том что они тоже жмутся phpThumb
                                        1. dr Del 28 августа 2012, 00:02 # 0
                                          2 вопрос снят дело в одинаковых именах файлов в разных каталогах и md5

                                          Может и на первый найдется ответ на свежую голову))
                                          1. Василий Наумкин 28 августа 2012, 03:31 # 0
                                            1 — моя ошибка, сейчас будет пакет с исправлением.
                                    2. Denys Butenko 28 августа 2012, 00:18 # 0
                                      А меня интересует вопрос загрузки csv файлов через менеджер файлов, то есть через админку, формат csv а загружать не хочет, точнее все загружается, файл так и не появляется нигде. Создал тестовый сайт на modx-test.com — тоже самое. Зашел в настройки указал параметр upload_file добавил формат csv, обновил кэш — результат тот же, то есть его нет(
                                      1. Denys Butenko 28 августа 2012, 00:23 # 0
                                        Решилось изменением параметра upload_maxsize в настройках modx'a
                                      2. Denys Butenko 28 августа 2012, 03:20 # 0
                                        Подскажите, как загрузить более 1 фотографии в галерею? Какого формата должны быть url и какой разделить?
                                        1. Василий Наумкин 28 августа 2012, 03:31 # 0
                                          Назначайте тип gallery нескольким полям файла.

                                          В версии 1.9.1 можно указывать директории с файлами.
                                        2. Антон Слободчук 28 августа 2012, 18:26 # 0
                                          У меня что-то с изображениями в галерее — не могу их добавить. Не получается, как при добавлении из директории, так и при добавлении отдельного изображения. Открывается окно, выбираю директорию / изображение, после нажатия на «Сохранить и закрыть», это же окно остается, не закрывается и в галерее не появляются новые изображения.
                                          1. Василий Наумкин 28 августа 2012, 18:51 # 0
                                            Исправил.

                                            Обновите на 1.9.1.
                                            1. Антон Слободчук 28 августа 2012, 19:11 # 0
                                              Класс, спасибо, все работает!

                                              Кстати, для изображений нет возможности указывать директории по аналогии с источниками файлов?
                                              1. Василий Наумкин 28 августа 2012, 19:12 # 0
                                                Так там используется файловый менеджер, который работает с источниками файлов.

                                                Так что, все есть.
                                                1. Антон Слободчук 28 августа 2012, 19:19 # 0
                                                  Неправильно выразился: есть ли возможность ограничить фотографии товаров одним источником файлов? (Создать новый источник 'products', присвоить ему директорию, далее в компоненте магазина давать возможность выбирать картинки только из этого источника, а не из 'filesystem' и 'products').
                                                  1. Василий Наумкин 28 августа 2012, 19:38 # 0
                                                    Именно так — нет.

                                                    Но ограничить источники для юзера — да. И тогда он будет видеть только из везде, и в Галерее тоже.
                                          2. Антон Слободчук 28 августа 2012, 22:07 # 0
                                            Заметил еще один баг-особенность.
                                            Если для TV не указана его максимальная длина, то при редактировании TV у товара через компонент будет выводиться ошибка:
                                            Максимальная длина для этого поля {maxLength}
                                            1. Василий Наумкин 29 августа 2012, 04:01 # 0
                                              Это не баг, да.
                                              Удобнее не получилось пока сделать.
                                            2. Антон Слободчук 28 августа 2012, 22:12 # 0
                                              И еще, в плагине miniShop для события OnEmptyTrash не хватает:
                                              $modx->removeCollection('ModGallery', array('gid:IN' => $ids));
                                              1. Василий Наумкин 29 августа 2012, 04:00 # 0
                                                Верно, спасибо!
                                              2. Prizrak Pro 01 сентября 2012, 16:23 # 0
                                                У меня не появляеться кнопка импорта.
                                                Установил с нуля modx версии 2.2.4.
                                                И только один компонент minishop версии 1.9.1.
                                                Установил через админку с официального репозаитария.
                                                Проблема осталась, кнопки нет.
                                                Подскажите может для неё необхидимы определнные условия.
                                                Компоненты дополнительные или настойка сервера.
                                                В качествет локального сервера использую XAMPP.

                                                Ещё есть проблема с катогориями.
                                                Разработку я начал ещё с версии 1.8.
                                                Обновился до 1.9. Но проблема осталась.
                                                Заключаеться она в том, что категории не отображаються. Аказываеться только категория 0(все)
                                                Какие бы настройки в minishop я не делал. И что бы не указывал в качествет ресурса категории.
                                                Единственное при указании на ресурс 2.
                                                Которого вообщне нет, выводятся категории используя все ресурсы на сайте.
                                                Может кто то сталкивался с проблемой.
                                                Катогории имеют 4 уровня вложения. При установки с нуля, катогории работают корректно.
                                                Но на основном ресурсе очень много материалов и переносить сложно.
                                                Пытался и удалять-установливать по новой. И чистил кеш. Результат тот же.
                                                1. Василий Наумкин 01 сентября 2012, 16:25 # 0
                                                  1. Прочитайте ветку от первого комментария.

                                                  2. В настройках нужно указать номер шаблонов для категорий, через запятую.
                                                  1. Prizrak Pro 01 сентября 2012, 16:46 # 0
                                                    1. Я прочитал, что Виталий Батушев переставил и у него заработало. Последовал его примеру, но у меня не заработало. Поэтому и спрашиваю.

                                                    2. Так нужно указывать id шаблоны а не id ресурсов?
                                                    1. Василий Наумкин 01 сентября 2012, 16:54 # 0
                                                      1. Речь о том, что js скрипты сильно кэшируются браузером. Понажимайте Ctrl+F5 и кнопка должна появиться.

                                                      2. Вот это читали? bezumkin.ru/modx/minishop/settings.html
                                                      1. Prizrak Pro 01 сентября 2012, 16:56 # 0
                                                        1. Место XAMMP использовал winginx. Кнопка появилась.

                                                        2. Читал. Да вот только не внимательно видать. Думал нужен id ресурса.

                                                        Спасибо.
                                                2. Denys Butenko 01 сентября 2012, 19:59 # 0
                                                  Подскажите, пожалуйста, есть база с товарами забитая в ручную, есть прайс лист. Если я его загружу, и попробую «перезаписать товары» по каким полям будет идти поиск совпадений? Вот например, в базе есть артикулы и в прайсе есть артикулы, если они совпадут дубликат не создаться?
                                                  1. Василий Наумкин 01 сентября 2012, 20:03 # 0
                                                    Сочетание parent и pagetitle, артикулы побоку.

                                                    Видимо, надо будет сделать настройку уникального поля.
                                                  2. Иван Брежнев 02 сентября 2012, 02:48 # 0
                                                    https://github.com/bezumkin/miniShop/blob/master/core/components/minishop/processors/mgr/combo/cats_and_goods.php#L11

                                                    Зачем $this->modx->getOption(), если ниже везде вы пишете $modx->getOption().

                                                    Работает и так и так! )
                                                    1. Василий Наумкин 02 сентября 2012, 06:39 # 0
                                                      Да кто меня знает?

                                                      Скопипастил из другого места, поди.
                                                    2. Denys Butenko 02 сентября 2012, 15:36 # 0
                                                      Если в будущем полностью отказаться от поля img, не плохо бы сделать более настраиваемый вызов сниппета msGallery, в частности не хватает задать стиль для первой фотографии, достаточно 2 чанка, outer и row. Обычно, у товара 1 большое изображение, а остальные меньше.
                                                      1. Василий Наумкин 02 сентября 2012, 16:02 # 0
                                                        Неплохая мысль, надо будет ее обдумать.

                                                        Img явно просится на удаление и автоматическую замену. Но это надо сделать так, чтобы не порушить совместимость. Поэтому, пока будет жить — а там посмотрим.
                                                      2. Alexander Orel 05 сентября 2012, 19:51 # 0
                                                        Здравствуйте!

                                                        При создании нового товара, не активны TVs, Галерея и Категории.
                                                        Приходится сохранять и закрывать > искать в списке сохранённых товаров (нет ни фокуса не стиля, выделяющих созданный товар) > открывать и продолжать редактировать.

                                                        Планируете ли Вы в ближайших обновлениях улучшить в юзабилити miniShop?
                                                        1. Василий Наумкин 05 сентября 2012, 19:57 # 0
                                                          Нет, я специально делаю все максимально неудобно — чисто из вредности.

                                                          А если серьезно, то ТВ, Галерея и Категории могут работать только с существующим товаром, ибо там элементы сохраняются при изменении, и нужно знать, к какому товару сохранять.

                                                          Что же до выделения после создания — могу только предложить пользоваться поиском по артикулу\имени и фильтрацией по категориям.

                                                          Из врожденной вредности напоминаю, что исходный код доступен на Github и вы всегда можете внести свой персональный вклад в улучшение юзабилити miniShop.
                                                          1. Alexander Orel 05 сентября 2012, 20:06 # 0
                                                            Именно поиском и ловим.
                                                            На счёт персонального вклада, могу придумать, нарисовать и заверстать :), но вот программная часть явно не за мной.
                                                            1. Василий Наумкин 05 сентября 2012, 20:10 # 0
                                                              Придумать, нарисовать и заверстать на MODX админке не нужно.

                                                              Все построено на ExtJS и он прекрасно сам верстает и рисует.

                                                              В общем, удобнее сделать не представляется возможным.

                                                              Еще вы можете создавать товары импортом.
                                                              1. Alexander Orel 05 сентября 2012, 20:15 # 0
                                                                Спасибо! А сортировка по времени создания в списке товаров сложно реализуется?
                                                                1. Василий Наумкин 05 сентября 2012, 20:16 # 0
                                                                  Неа. Но у меня со временем сложно.
                                                                  1. Alexander Orel 05 сентября 2012, 20:17 # 0
                                                                    Я туплю. По ID ведь можно сортирнуть.
                                                                    1. Василий Наумкин 05 сентября 2012, 20:18 # 0
                                                                      Ага, и я туплю =)
                                                                      1. Alexander Orel 05 сентября 2012, 20:18 # 0
                                                                        Фигня, бывает. :)
                                                                        1. Alexander Orel 05 сентября 2012, 21:16 # 0
                                                                          Добавьте пожалуйста хотя бы ещё кнопку типа «Сохранить и обновить»
                                                        Добавление новых комментариев отключено.