Колориметрия, печать и препресс: технологии Главная Форум Галерея Контакты Download Статьи
Сражаясь неустанно,
доживём мы, Санчо,
до Золотого века!
 

Форум колористов и полиграфистов

Колориметрия и печать: технологии
 
Текущее время: 2:57, Пт, 23 июн 2017
Темы без ответов | Активные темы


Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 19:15, Пн, 26 дек 2016 
Не в сети
Администратор

Зарегистрирован: 16:58, Ср, 18 авг 2004
Сообщения: 721
Откуда: Москва
При конвертации форума из 2 версии в 3 потерялись превьюшки для вложенных картинок. Вторая причина телодвижений, на мобильной версии форума мне не понравились размеры имеющихся превьюшек (слишком мелкие), созданных в 3 версии, и захотелось их все перегенерить для красивого представления на телефоне.
Вторая задача решается легко: скачиваем себе всю папку вложений, выделяем все файлы со странными именами вроде 2_6528b86408e87fe6c87b7a551c8fac72 без расширения имени. Это файлы изображений в формате jpg, png, gif. И к ним в той же папке есть превью в jpg с теми же странными именами и префиксом "thumb_". Генерим на локальной машине в фотошопе или там в FastStone нужные превьюшки и с нужными именами. У меня было не много, чуть больше сотни таких файлов, и я прогнал из экшном Automate/Fit Image на уменьшение, ну и чуть подшарпил для красоты. И сохранил все жпегами. Потом добавляем к имени новых файлов префикс "thumb_" и удаляем расширение jpg, все это пакетно. Заменяем старые файлы превью на новые с теми же именами на сервере.

Первую проблему - старые картинки без превьюшек - тоже решил, решение на крохотном яваскрипте. Расскажу по порядку в деталях.
Изображения от второй версии форума хранятся в папке вложений с осмысленными именами, но так же не совпадающими с названием файла по базе {_file.DOWNLOAD_NAME}. Их характерные особенности таковы: расширение есть и всегда маленькими буквами, все символы в файле маленькими буквами, вместо пробела в названиях стоит подчеркивание "_", на конце файла четыре символа - подчеркивание и трехзначное число.
Берем все эти файлы и генерим на своем компе в фотошопе или FastStone или ACDSee или в чем хотите нужные превьюшки для них с теми же именами в отдельную папку. Причем превью png так же сохраняем в png, а gif - в gif, в моем решении я не загонял все превью в jpg.
Потом пакетно переименовываем все файлы в этой папке: добавляем префикс "thumb_" и убираем 4 символа справа в имени до расширения. Расширения jpg, gif. png оставляем как есть - главное все расширения маленькими буквами.
У меня таких файлов без превью от старого форума набралось 170 штук. И с одинковыми именами, типа untitled_1, различающимися лишь 4 последними символами у меня не было к счастью.
Кладем эту папку на сервер, но не в каталог форума, а на уровень выше, рядом с папкой форума (форум может капризничать с правами доступа к папке внутри него).
И теперь делаем пару маленьких правочек в шаблонах стилей в файле attachment.html из папки styles/prosilver(subsilver и проч)/template:

Для стиля prosilver и базирующихся на нем в файле attachment.html находим блок аттачей файлов и дописываем к нему условие на JavaScript. Найти:
Код:
      <!-- IF _file.S_FILE -->
      <dl class="file">
         <dt><!-- IF _file.UPLOAD_ICON -->{_file.UPLOAD_ICON} <!-- ENDIF --><a class="postlink" href="{_file.U_DOWNLOAD_LINK}">{_file.DOWNLOAD_NAME}</a></dt>
         <!-- IF _file.COMMENT --><dd><em>{_file.COMMENT}</em></dd><!-- ENDIF -->
         <dd>({_file.FILESIZE} {_file.SIZE_LANG}) {_file.L_DOWNLOAD_COUNT}</dd>
      </dl>
      <!-- ENDIF -->

и заменить на следующее:
Код:
      <!-- IF _file.S_FILE -->
        <script type="text/javascript">
      var fileUrlUp = "{_file.DOWNLOAD_NAME}";
      var fileLink = fileUrlUp.toLowerCase().replace(/\ /gi, "_");
      var fileLinkar = fileLink.split('.');
      var ext = fileLinkar[fileLinkar.length-1]; 
      if(ext == 'png' || ext == 'jpg' || ext == 'gif') {
      document.write('<dl class="thumbnail">');
      document.write('<dt><a href="{_file.U_DOWNLOAD_LINK}"><img src="../../forum_files/thumb_'+fileLink+'" class="postimage" alt="{_file.DOWNLOAD_NAME}" title="{_file.DOWNLOAD_NAME} ({_file.FILESIZE} {_file.SIZE_LANG}) {_file.L_DOWNLOAD_COUNT}" /></a></dt>');
      document.write('<!-- IF _file.COMMENT --><dd> {_file.COMMENT}</dd><!-- ENDIF -->');
      document.write('</dl>');
   } else {
         document.write('<dl class="file">');
         document.write('<dt><!-- IF _file.UPLOAD_ICON -->{_file.UPLOAD_ICON} <!-- ENDIF --><a class="postlink" href="{_file.U_DOWNLOAD_LINK}">{_file.DOWNLOAD_NAME}</a></dt>');
         document.write('<!-- IF _file.COMMENT --><dd><em>{_file.COMMENT}</em></dd><!-- ENDIF -->');
         document.write('<dd>({_file.FILESIZE} {_file.SIZE_LANG}) {_file.L_DOWNLOAD_COUNT}</dd>');
         document.write('</dl>');
         }
         </script>
            <noscript>
            <dl class="file">
         <dt><!-- IF _file.UPLOAD_ICON -->{_file.UPLOAD_ICON} <!-- ENDIF --><a class="postlink" href="{_file.U_DOWNLOAD_LINK}">{_file.DOWNLOAD_NAME}</a></dt>
         <!-- IF _file.COMMENT --><dd><em>{_file.COMMENT}</em></dd><!-- ENDIF -->
         <dd>({_file.FILESIZE} {_file.SIZE_LANG}) {_file.L_DOWNLOAD_COUNT}</dd>
      </dl>
            </noscript>   
      <!-- ENDIF -->

Замечу, что мы полностью сохраняем родной код в тегах <noscript> на всякий. А яваскрипт находит имя и расширение файла, если расширение совпадает с png, jpg, gif - берет для них превьюшку из нашей папки на одном уровне с папкой форума с именем forum_files. Ну и соответственно уменьшает регистр, убирает пробелы - то есть все то, что проделал с файлами старый форум 2 версии.

Для стиля subsilver и основанных на нем исправление attachment.html выглядит так, находим блок:
Код:
      <!-- IF _file.S_FILE -->
         <span class="genmed">
            <!-- IF _file.UPLOAD_ICON -->{_file.UPLOAD_ICON} <!-- ENDIF -->
            <a href="{_file.U_DOWNLOAD_LINK}">{_file.DOWNLOAD_NAME}</a> [{_file.FILESIZE} {_file.SIZE_LANG}]
         </span><br />
         <span class="gensmall">{_file.L_DOWNLOAD_COUNT}</span>
      <!-- ENDIF -->

и заменяем на:
Код:
      <!-- IF _file.S_FILE -->
        <script type="text/javascript">
      var fileUrlUp = "{_file.DOWNLOAD_NAME}";
      var fileLink = fileUrlUp.toLowerCase().replace(/\ /gi, "_");
      var fileLinkar = fileLink.split('.');
      var ext = fileLinkar[fileLinkar.length-1]; 
      if(ext == 'png' || ext == 'jpg' || ext == 'gif') {
      document.write('<a href="{_file.U_DOWNLOAD_LINK}"><img src="../../forum_files/thumb_'+fileLink+'" class="postimage" alt="{_file.DOWNLOAD_NAME}" /></a><br />');
      document.write('<span class="gensmall">{_file.DOWNLOAD_NAME} [ {_file.FILESIZE} {_file.SIZE_LANG} | {_file.L_DOWNLOAD_COUNT} ]</span>');
   } else {
         document.write('<span class="genmed">');
         document.write('<!-- IF _file.UPLOAD_ICON -->{_file.UPLOAD_ICON} <!-- ENDIF -->');
         document.write('<a href="{_file.U_DOWNLOAD_LINK}">{_file.DOWNLOAD_NAME}</a> [{_file.FILESIZE} {_file.SIZE_LANG}]');
         document.write('</span><br />');
         document.write('<span class="gensmall">{_file.L_DOWNLOAD_COUNT}</span>');
         }
         </script>
            <noscript>
            <span class="genmed">
            <!-- IF _file.UPLOAD_ICON -->{_file.UPLOAD_ICON} <!-- ENDIF -->
            <a href="{_file.U_DOWNLOAD_LINK}">{_file.DOWNLOAD_NAME}</a> [{_file.FILESIZE} {_file.SIZE_LANG}]
         </span><br />
         <span class="gensmall">{_file.L_DOWNLOAD_COUNT}</span>
            </noscript>
      <!-- ENDIF -->

Если почему-то яваскрипт на клиентской машине выключен - ничего страшного - отработает стандартный нетронутый нами код из блока <noscript>. Просто будет штатно ссылка без превьюшки.
При желании закрываем доступ к листингу нашей папки с превьюшками строчкой в файле .htaccess для этой папки: Options -Indexes. Все задача решена, решение работает целиком на клиенсткой машине и никак не затрагивает ни базы данных ни php-скриптов форума. Хотелось бы и в форуме как в gallery иметь возможность перегенерить сервером скопом все превьюшки, но пока таких экстеншнов нет, я все перерыл, прежде чем решать задачку самостоятельно на яваскрипте.


Вернуться к началу
2018.navalny.com
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
© CIELab.XYZ
Создано на основе phpBB® Forum Software © phpBB Limited
Конференция запущена 18 августа 2004 года | Защищено от спама системой stopforumspam
Всего посещений - 3921870 | Всего за день - 4233 | Уникальных сегодня - 329, вчера - 285, позавчера - 230