We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 19164
    • 1,215 Posts
    Приветствую други.

    Хочу анонсировать готовящийся к выпуску плагин, над которым я работаю уже какое-то время. Плагин directresize, пишется не с нуля, уже есть зарелизенные версии 0.5 на английском http://modxcms.com/forums/index.php/topic,13937.0.html и 0.7 с некоторыми изменениями на французском.

    Иногда необходимо вставлять в документы изображения и открывать их с эффектом lightbox, подобно тому как это делается в Maxigallery. Maxigallery хорош для создания галереи, но иногда необходимо вставлять в текст одиночные изображения и увеличивать их с подобным эффектом. Некоторые костыли уже были изобретены ранее http://modxcms.com/forums/index.php?topic=16159 но для клиента, работающего в TinyMCE этот вариант неприемлем.

    Итак, о чем это я. О плагине. Оригинальный плагин как раз и позволяет создавать подобные ссылки средствами TinyMCE (или без него). Все делается очень просто - в документ вставляется большое изображение (например 800х600 пикселов) которое уменьшается до размера превьюшки (например 120х90). Т.е. в коде мы имеем img src = width="120" height="90" .. Плагин обрабатывает код страницы перед тем как отдать ее посетителю, в коде отсеиваются все изображения, размер которых принудительно задан меньше чем реальный размер изображения. Для таких изображений автоматически генерируется тумба, которая кешируется на диске, а так же создается ссылка на увеличинное изображение в стиле lightbox. Правда подключать все необходимые ява-скриптовые библиотеки нужно вручную.

    Это то что было. А теперь о том, что будет (и уже практически есть) в новой версии, которую я собираюсь представить в ближайшее время:

    * Теперь плагин использует класс Thumbnail and Watermark. За счет этого (временно) пришлось пожертвовать поддержкой формата gif, но появилась возможность накладывать водяные знаки на изображения и тумбы (все параметры целиком взяты в MG)

    * Теперь поддерживается система шаблонов и плейсхолдеров и классы Chunkie и PHx, что позволит прикрутить практически любой эффект открытия изображения (highslide, slimbox, slidebox..) а не только lightbox, который раньше был намертво вшит в код

    * Параметров по настройке стало гораздо больше и для удобства они вынесены в конфиг-файлы (как это сделано в ditto или wayfinder). Можно хранить несколько конфиг-файлов, в которых будут прописаны разные параметры и подключать нужные, легко переносить файлы параметров на другие свои сайты. В конфиге задаются шаблоны, код подключения нужных ява-скриптовых функций, настраиваются параметры водяных знаков и т.д.

    * Новый метод изменения размера тумбы - обрезка. Тумба сначала уменьшается, затем отрезается все что не помещается в прямоугольник заданных размеров. Удобно для создания тумб строго заданных размеров.

    * Ну и главная фича - при открывании документа с уменьшенными изображениями в визуальном редакторе, подгружаются не оригинальные (800х600 пикселов или какие там) изображения, а сгенерированные тумбы (например 120х90), что существенно увеличивает загрузку и экономит трафик. Но эта тумба логически связана с оригинальным большим изображением. При изменении размеров тумбы (например до 40х30) будет создана новая тумба с lightbox-ссылкой на оригинальное изображение.

    Вот вроде бы и все, подождите немного и можно будет попробовать этот плагин в действии.

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

    У меня есть одна большая просьба (для чего я все это и написал до релиза плагина), требуется человек, более менее свободно владеющий английским языком, чтобы иметь возможность перевести документацию и описание нового плагина и представить его на суд интернациональной общественности. Собственные знания английского не позволяют сделать достаточно внятный перевод. Буду благодарен любой помощи.
      DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

      Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

      [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
      • 897
      • 1,620 Posts
      дядька, респект тебе за труды. НО неразумнее твой плагин на сохранение документа повесить в замен отдачи оного?
        "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

        Не используйте Revo для "просто сайтов". Используйте Evo

        Who can defeat the Russian bear?
        • 19164
        • 1,215 Posts
        Плагин вешается на 3 события - OnWebPagePrerender , когда собственно клиенту отдается страница с лайтбокс ссылками, OnDocFormPrerender - при редактировании документа, когда большие картинки в админке заменяются на превью и OnBeforeDocFormSave при сохранении того же документа, когда превью заменяются обратно на оригинальное изображение.

        Если вешать плагин на сохранение, то это означает что придется вносить изменения в исходный код документа, код меняется единожды и безповоротно - повернуть из кода лайтбоксной ссылки обратно в исходное изображение при помощи регулярных выражений будет весьма непросто, учитывая что вид лайтбоксной ссылки задается произвольно в шаблоне с использованием PHx.
          DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

          Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

          [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
          • 19164
          • 1,215 Posts
          Пока писал, начал думать, что действительно было бы неплохо повесить плагин на сохранение, ибо вызывать его каждый раз при рендере документа без всякой возможности закешировать - западло.

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

          И вдруг возникла интересная идея - если плагин на сохранении будет заменять все подходящие картинки img src="xxx" height="xxx" width="xxx" alt="xxx" .... не сразу на лайтбоксный код, а на вызов кешируемого сниппета: [[directimage?&src=`xxx` &height=`xxx` &width=`xxx` &alt=`xxx`]] а сниппет уже в свою очередь по полученным параметрам будет генерировать лайтбоксные ссылки.

          Это позволит уже не морочится о кешировании - пускай система сама ломает голову и кеширует сниппет, а во-вторых из кода документа вызов сниппета [[directimage ... ]] легко преобразовать обратно в исходный код картинки в тот момент, когда пользователю понадобится отредактировать данный документ.

          Подумаю над этой идеей...
            DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

            Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

            [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
            • 26586
            • 184 Posts
            ну собственно я и написал себе такой сниппет - image. Вызывается - [[image? &path=`pic.jpg` &title=`подпись`]]
            <?php
            $smallsize  = isset($smallsize) ? $smallsize : '200x150';
            
            $big_prefix   = $modx->config["base_url"].'640x480/assets/images/';
            $small_prefix = $modx->config["base_url"].$smallsize.'/assets/images/';
            if (file_exists($modx->config["r_base_url"].'assets/images/'.$path) && ($imginfo = @getimagesize($modx->config["r_base_url"].'assets/images/'.$path))) {
            	if (($imginfo[0]<=640) && ($imginfo[1]<=480))
            		$big_prefix = $modx->config["base_url"].'assets/images/';
            }
            
            
            $note  = isset($note) ? $note : 1;
            $title = (empty($title) || empty($note)) ? '' : htmlspecialchars($title);
            
            return "<li><a href=\"$big_prefix$path\" title=\"$title\" rel=\"lightbox\"><img src=\"$small_prefix$path\" alt=\"$title\"></a>".(empty($title)?'':"$title")."</li>";
            ?>
            

            маленькие-большие картинки формируются через ссылку типа
            /200x150/assets/images/pic.jpg
            /400x/FFCCDD/assets/images/pic.jpg (с заданным фоном)
            в .htaccess указано:
            RewriteRule ^(([0-9]*)(x[0-9]*))/([0-9A-F]+)/(.*)$ thumb/phpThumb.php/far=C;bg=$4;q=95;$1;/$5 [L]
            RewriteRule ^(([0-9]*)(x[0-9]*))/(.*)$ thumb/phpThumb.php/$1;/$4 [L]


              • 19164
              • 1,215 Posts
              В первом посте есть ссылка на подобную реализацию, которую я использовал раннее. Но это неудобно и уж тем более неочевидно для люде (читать - клиентов), которые далеки от веб-разработок.

              В моем случае - во-первых используется кеширование изображений, а не формирование их каждый раз на лету. Во-вторых кешируется сам хтмл-вывод (не так как написано в моем предыдущем посте, я решил эту проблему иначе), плагин вызывается лишь один раз, зачем результат забирается из системного кеша как обычно, в третьих, замена изображений происходит автоматически, без необходимости ручного вызова сниппета для изображения.

              И т.д. и т.п., основные фичи описаны в первом посте. Возможно ваш способ подойдет, когда требуется вывести изображение, например из TV, в случае же использования в тексте документа произвольного количества изображений вызов сниппета весьма затруднителен для непосвященных. Из-за чего я и начал разработку этого плагина.
                DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

                Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

                [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
                • 26586
                • 184 Posts
                дык... я не спорю =)
                  • 26564
                  • 162 Posts
                  Попробовал очень понравилось!!! Даж TVimage с ним работает. Конец Adobe ImageReady. :’(
                  И сразу понял, что меня беспокоит. Представь что будет, если у тебя пара тысяч картинок в одной папке? Найти нужную будет непросто. Возможно комуто нравится когда все в кучу, но у меня котлеты отдельно. Вот это смущает.
                    • 19164
                    • 1,215 Posts
                    В моей версии под каждый документ будет выделена своя подпапка (по аналогии с MaxiGallery), все сгенерированные превьюшки будут лежать в своей отдельной подпапке.

                    Правда HTML-вывод, как я писал выше, кешироваться не будет, на этапе разработки с этим возникли проблемы, чтобы закешировать HTML-вывод, придется либо пожертвовать универсальностью и плагин будет работать только для [*content*], либо писать парсер типа PHx, который по сути будет выполнять функции системного парсера.

                    В общем, от кеширования HTML пока отказался.
                      DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

                      Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

                      [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
                      • 794
                      • 34 Posts
                      А когда появится сам плагин? Мне как раз для проекта пригодился бы...