Отображение листинга директории с автогенерацией превью изображений
Автор: Misha v.3 [08 февраля 2008]
Версия: 1.4
Тэги: Графика
Иногда хочется выложить знакомым файлы для скачивания. Но если среди выложенных файлов есть изображения (например фотографии последней пьянки), то для посетителей неудобно, когда отсутствуют превью. Заниматься ручным их созданием для временно выкладываемых файлов бывает лениво, к тому же с этим нормально может справится и робот.
Предлагаемый класс выводит список файлов директории по аналогии с модулем апача mod_autoindex, но кроме этого он может осуществлять автоматическую генерацию превью для изображений.
Класс использует для своей работы объект одного из классов для работы с изображениями. Однако объект этот нужен только в том случае, если вам требуется автоматическое создание превью. Если же оно не требуется (например вы не хотите отображать превью или хотите создавать их руками) — объект указанного класса не нужен.
Чтобы использовать данный класс необходимо в каталоге, где вы планируете выкладывать подкаталоги с файлами, поместить файл auto.p, в методе @main[] которого нужно создать объект класса AutoIndex с нужными параметрами и вызвать его метод exec. Примерно так:
@main[][sDir;oAutoIndex]
$sDir[/dir/with/files]
$oAutoIndex[^AutoIndex::create[$sDir;
# options for generating previews
$.bAutoCreatePreviews(true)
$.oImg[^NConvert::create[
$.sScriptPath[/../exec]
$.sScriptName[nconvert.exe]
$.bRemoveMeta(true)
$.bKeepRatio(true)
$.iQuality(75)
$.iColors(^hParams.iColors.int(64))
]]
$.iWidth(120)
$.iHeight(120)
# operation options
# $.bRemoveUnusedPreviews(true)
# display options
$.hOrder[
$.sField[N]
# $.sDirection[desc]
]
$.tExclude[^table::create{sName^#0Aindex.htm}]
# $.bIconsAreLinks(false)
# $.bSuppressSorting(true)
# $.bSuppressPreview(true)
# $.bSuppressIcon(true)
# $.bSuppressLastModified(true)
# $.bSuppressSize(true)
# $.bSuppressDescription(true)
]]
^oAutoIndex.exec[]
#end @main[]
После этого создаёте каталог, помещаете в него ваши файлы, заглушечный index.html (в котором написано например только @dummy[]) и вуаля: при первом же обращении для изображений будут созданы превью и будет отображён индекс директории. Класс сам будет удалять неиспользуемые более превью (если вы не запретите ему делать это) и генерить их заново, если какие-либо изображения будут обновлены.
С помощью настроек можно задать размеры создаваемых превью, управлять отображением столбцов и их сортировкой.
Если вам станет лень копировать заглушечный index.html, то вы всегда можете почитать про mod_rewrite и с его помощью ещё больше облегчить себе жизнь.
Ограничения: в случае, если вы закините в каталог много изображений, наверняка процесс создания для них превью затянется и броузер отватился по таймауту. Возможно в будущем я сделаю чтобы этого не происходило, а пока просто понажимайте Reload :)
Я не планирую добавлять функциональность для изменения оригинальных файлов, т.к. назначение класса — генерация индексной страницы со списком файлов.
Скачать:
AutoIndex.zip
(08.02.2008
36,6 КБ)
Архив класса с примером использования