[ms2Gallery] Более просторная версия 1.5.0

Привет, друзья!

Хочу представить вам новую версию компонента для управления файлами ресурсов MODX ms2Gallery, в котором стало гораздо больше рабочего пространства.
  • Было
  • Стало
Теперь в один экран входит лишний ряд файлов вместе с постраничной навигацией, а загрузчик не мозолит глаза лишний раз — он выводится в отдельном окошке:
Остальной список изменений, о которых я не писал с версии 1.4.3, под катом.

Добавлены две новые системные настройки:
  • new_tab_mode — более правильная регистрация галереи на странице ресурса, которая хорошо работает с AjaxManager, но не работает с miniShop2 и Articles (по их вине)
  • disable_for_ms2 — возможность включить или отключить вывод галереи на странице товара miniShop2. Раньше галерея там всегда отключалась.
— [#8] Процессор загрузки теперь возвращает данные только что созданного файла

— [#9] Исправлена сортировка файлов, которые не являются картинками

— [#10] Улучшена работа с файлами на русском языке

— Исправлена загрузка больших файлов (от 50 Мб и выше)

— Процессор загрузки может принимать url вместо пути к файлу на локальном сервере.

Вот пример консольной загрузки картинки с удалённого сайта:
<?php
define('MODX_API_MODE', true);
require 'index.php';

$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');

$res = $modx->runProcessor('gallery/upload', array(
	// Ссылка на файл
        'file' => 'https://modx.pro/inc/img/modx_pro_sm.png',
	// Id ресурса с галереей
        'id' => 1,
    ),
    array(
        'processors_path' => MODX_CORE_PATH . 'components/ms2gallery/processors/mgr/'
    )
);
if ($res->isError()) {
    print_r($res->getAllErrors());
}
else {
    print_r($res->getObject());
}
Обновляем, тестируем, пишем отзывы.
Василий Наумкин
14 августа 2015, 08:25
modx.pro
4
3 986
+10

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

but1head
14 августа 2015, 11:41
0
Василий, может стоит замутить галерею до сохранения ресурса, а не после?
Менеджеры ноют, что нужно обновлять страницу, да и честно говоря мне тоже кажется это не удобным.

При создании ресурса кидать фото в /assets/images/temp к примеру, после сохранения присваивать ресурсу (вроде файлы в tickets так и работают).

Ну и тоже самое для ms2
    Василий Наумкин
    14 августа 2015, 11:45
    0
    А потом менеджеры накидают 100500 файлов и админка повиснет при сохранении документа, потому что не успеет их переместить.

    А если еще вспомнить, что галерея может работать с удалённой файловой системой, где-нибудь на Amazon S3, то всё становится гораздо более сложным.

    Так что, извини, пока нет.
      but1head
      14 августа 2015, 11:54
      0
      Дубль 2.

      после сохранения у нас файлы лежат в assets/images/resources/{$id}
      При создании ресурса создавать папку, к примеру assets/images/resources/{$timestamp}

      После сохранения ресурса переименовывать {$timestamp} на {$id} созданного ресурса
      Тут конечно может время совпасть при создании нескольких товаров но очень сомнительно.

      ну и папку переименовать не так проблемно как перенести кучу фоток. amazon в пример не берем.
        Василий Наумкин
        14 августа 2015, 12:01
        +2
        После сохранения ресурса переименовывать {$timestamp} на {$id} созданного ресурса
        Как узнать, какой timestamp для какого ресурса был создан?

        Что делать, если менеджер загрузил 200 файлов и ушел гулять? Или у него отключили интернет на 2 дня?

        amazon в пример не берем.
        В смысле, нужно переписать компонент так, чтобы он больше не работал с источниками файлов и складывал всё всегда на локальном сервере?

        Наверное, приятно думать, что автор дополнения ленивая скотина и просто из вредности не хочет реализовывать твои хотелки, но, к сожалению, в данном случае это не так.
          Максим
          14 августа 2015, 18:39
          0
          Мне сегодня как раз пришла в голову та же идея, хотя именно для ms2Gallery я ее удачной не считаю (: Но у меня есть отличие — $timestamp записывается в отдельную таблицу modx_temporary_ids, а при сохранении ресурса удаляется. Это как раз позволит решить проблему «если менеджер загрузил 200 файлов и ушел гулять»: при входе в админку просто удаляем записи из modx_temporary_ids (и связанные файлы), которые старше чем время жизни сессии.
            Василий Наумкин
            14 августа 2015, 19:17
            0
            Менеджер открыл 2 вкладки в браузере и там залил разные файлы.

            Как сохранять? Какой timestamp принадлежит какому будущему ресурсу?
              Максим
              14 августа 2015, 19:46
              0
              Добавить в форму скрытый input name=«timestamp». Если менеджер открыл 2 вкладки, то будет два разных timestamp. Но у меня задача сохранять картинки в tv в папки типа assets/images/id.
              С галереей такое делать нет никакой выгоды: создали документ — сохранили документ — залили картинки == создали документ — залили картинки — сохранили документ. Выигрыша по времени 0.
                but1head
                14 августа 2015, 21:27
                0
                выйгрыш есть, особенно во время заполнения товара.

                Создать товар — заполнили все поля — сохранили, пошли дальше.

                А сейчас создали товар — подождали перезагрузки страницы — заполнили поля — сохранили, пошли дальше.

                и не совсем понятно, почему доп.параметры товара (размер, цвет) сделаны во время создания товара, а галерея и тд после
                  Василий Наумкин
                  14 августа 2015, 21:41
                  0
                  Итак, у нас есть 3 операции:
                  1. Заполнение полей
                  2. Сохранение товара
                  3. Загрузка файлов

                  Они есть все 3, и как их местами не меняй, они все занимают одно и то же время.
                  Создать товар — заполнили все поля — сохранили, пошли дальше.
                  Вот здесь ты забыл, что при сохранении товара тоже нужно подождать перезагрузки страницы. Или менеджер жмёт Ctrl+S и, не дожидаясь ответа от сервера, закрывает окошко?

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

                  От перемены слагаемых местами ничего не изменится.
                    Максим
                    14 августа 2015, 21:47
                    0
                    и не совсем понятно, почему доп.параметры товара (размер, цвет) сделаны во время создания товара, а галерея и тд после
                    Потому что в галерее картинки привязаны к id ресурса, который известен только после сохранения.
                      but1head
                      14 августа 2015, 21:48
                      0
                      цвета и размеры это не пугает, значит какой-то параметр есть.
                        Василий Наумкин
                        14 августа 2015, 21:51
                        0
                        Загрузка файлов куда-то есть. Которых может быть 1000 штук весом на 5 гигабайт.

                        Как об стенку горох, ничего понимать не хочешь вообще.
                          but1head
                          14 августа 2015, 21:58
                          0
                          да я уже давно понял, тут уже давно идет обсуждение.
                      Василий Наумкин
                      14 августа 2015, 21:49
                      +1
                      Я больше скажу — это галерея ресурса. Пока ресурса нет — нет и его галереи.

                      Иначе мы бы в одном окошке создавали галерею, в другом ресурс, а третьем бы их соединяли друг с другом — как до сих пор работает Gallery.
                        Александр Рахимов
                        16 августа 2015, 14:18
                        0
                        Не холивара ради. Можно же наверно сделать, чтобы вкладка галереи появлялась после сохранения, без перезагрузки страницы.
                          Василий Наумкин
                          16 августа 2015, 14:39
                          +1
                          При создании ресурса страница перезагружается, так уж в MODX устроено.

                          Потому что за создание и обновление ресурса отвечают разные контроллеры.
                        Владимир
                        16 августа 2015, 15:08
                        0
                        Кстати, большинству контент менеджеров было бы понятнее, если бы при нажатии Создать, создавался бы сохраненный но неопубликованный документ, например с ID в пейджтайтле, в алиасе и т.п. А то они не помнят о сохранить, хоть убей их. Жаль, не предусмотрено это «из коробки», плагином, разве что… Или это будет изврат?
                          Василий Наумкин
                          16 августа 2015, 15:17
                          +3
                          Теоретически-то, наверное, можно сделать. Но мне кажется, что будет дофига неопубликованных забытых ресурсов — бардак будет в админке

                          Человек создаст ресурс (со случайным именем и alias, наверное) — а потом возьмёт, и опубликует его случайно. Он же не понимает, что делает в админке — почему бы и не опубликовать тогда?

                          В общем, у нас тут какая-то очередная волна «улучшений для дебилов» надвигается.

                          Ну неужели нельзя найти менеджеров, которые хоть немного умеют работать с компьютером, и закончили школу? Сейчас же кризис, много способных людей ищет работу — дайте им шанс.
                          Владимир
                          16 августа 2015, 16:12
                          0
                          Василий, работодатели на контент-менеджерах экономят. Может кризис вылечит, как знать....?
                          Я объясняю: создали документ, заполнили пейджтайтл- сохраните, далее все остальное… Увы, это так сложно…
                          Василий Наумкин
                          16 августа 2015, 16:26
                          0
                          Ну, плагин такой и правда написать можно, и даже несложно.

                          При открытии страницы создания, сразу сохранять ресурс со случайным названием и редиректить на контроллер обновления с новым id — а там уже всё будет.

                          В принципе, даже не видно будет панель создания, просто сразу почти редирект на редактирование.
                          Владимир
                          16 августа 2015, 16:30
                          0
                          Многим бы это подошло. Потому что их логика- создали, значит он уже есть. Про ID и т.п. слушают в полуха.
                          Эх… Но лучше бы они усвоили порядок действий)
                          Руслан Сафин
                          16 августа 2015, 16:32
                          0
                          так как я писал ниже =)
                          Вспомнил, на yii кто то таким образом сделал.
      Руслан Сафин
      16 августа 2015, 14:31
      0
      Где то видел применения другого способа, не складывать картинки во временную папку, а при создании нового ресурса мы его сохраняем и редиректим на его редактирование. В итоге ИД ресурса у нас есть и ничего никуда перемещать не надо. Но появляется другая проблема, что делать если пользователь передумал «создавать» ресурс, чистить раз в месяц базу если поля пустые?
        Владимир
        19 августа 2015, 17:15
        0
        Василий, подскажи, в новой версии ms2Gallery, загрузку файлов в модальном окне, что несколько непривычно, ты навсегда сделал? Прежний способ казался удобнее. Или я чего то не понимаю?
        PS данный вопрос не содержит ГМО (зачеркнуто) претензий :))
          Василий Наумкин
          19 августа 2015, 17:57
          0
          Да, навсегда.

          Один лишний клик стоит трети рабочей области.
            Владимир
            19 августа 2015, 18:02
            0
            Ок. Привыкнем)
              Евгений
              20 августа 2015, 04:10
              +1
              А реально ли сделать основную рабочую область зоной приема drag'n'drop? Т.е. просто перетаскиваешь из папки в на страничку галереи, а затем уже всплывает текущее окно загрузки файлов.
              *Мечты*
                Василий Наумкин
                20 августа 2015, 06:05
                0
                Теоретически реально, а практически — не факт, что у меня хватит для этого знаний javascript и ExtJS.

                Окошко вот тоже изначально сделать не мог. Попробую, позже.
              Василий Наумкин
              02 октября 2015, 10:29
              +1
              Доступна новая версия, в которой загрузка файлов выглядит вот так:

              Окошко и таблицу выкинул совсем, всё стало гораздо быстрее и удобнее.
            DarWiM
            29 января 2016, 20:26
            0
            Василий, подскажите пожалуйста, как вывести с помощью ms2Gallery только картинки без тегов?
              Rustam Shadjalilov
              12 мая 2016, 10:23
              0
              Василий, спасибо за пример загрузки файлов к ресурсам.

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

              Задача в регулярном обновлении галереи, с частичной заменой фото в ней.

              Есть ли у вас пример удаления отдельных файлов, или вообще всех файлов галереи конкретного ресурса?
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                32