Плагин PageAvatar 2.27 для CMF Cotonti

Создание плагина для загрузки медиафайлов и генерации миниатюр на лету, а также для связки с ними страниц

Разработка плагина загрузки изображений

1. Что такое PageAvatar?

PageAvatar – это плагин для CMF Cotonti, позволяющий ассоциировать страницу с файлом и/или, если это изображение, с его миниатюрой (миниатюрами), и управлять такой связью.

2. Как работает PageAvatar 2.27?

2.1 Загрузка изображения

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

2.2 Пример логики работы плагина:

pictures|datas/pictures/|thumb1_-100_-100 thumb2_-120_-120|1|0
  1. Для раздела страниц pictures
  2. Загрузить файл в каталог datas/pictures
  3. Создать миниатюры 100*100px и 120*120px
  4. Файл должен быть загружен обязательно
  5. Допускаются расширения всех графических файлов

Загружаемые файлы переименовываются по маске page_PAGEID.*, где PAGEID – это ID страницы.
Миниатюры создаются по маске PREFIX_page_PAGEID, где PREFIX – это префикс миниатюры в соответствии с настройками плагина, а PAGEID – это ID страницы.

2.3 Изменение и удаление изображения

В режиме правки страницы пользователь видит информацию о загруженном файле и может удалить его, либо загрузить другой файл, что означает удаление предыдущего файла и его миниатюры (миниатюр) и загрузку нового файла с созданием его миниатюры (миниатюр).
В режиме правки страницы при выборе пункта «Удалить страницу» файл и его миниатюра (миниатюры) будут удалены вместе с удалением страницы.

3. Установка и настройка PageAvatar 2.27

Для обеспечения корректной работы плагина необходимо:

  1. Скачать и установить библиотеку Cotlib
  2. Распаковать содержимое архива в каталог plugins/
  3. Отредактировать файл page.add.tpl:
    <tr>
    	<td>{PAGEADD_FORM_AVATAR_TITLE}:</td>
    	<td>{PAGEADD_FORM_AVATAR}</td>
    </tr>
  4. Отредактировать файл page.edit.tpl:
    <tr>
    	<td>{PAGEEDIT_FORM_AVATAR_TITLE}:</td>
    	<td>
    		{PAGEEDIT_FORM_AVATAR}
    		<!-- IF {PAGEEDIT_FORM_AVATARFILE} -->
    			<p>{PHP.L.Uploaded}: {PAGEEDIT_FORM_AVATARFILE}<br /> 
    			{PHP.L.Delete}: {PAGEEDIT_FORM_AVATARDELETE}</p>
    		<!-- ENDIF -->
    	</td>
    </tr>
  5. Добавить свойство
    enctype="multipart/form-data"
    в декларацию форм page.add и page.edit
  6. Отредактировать настройки плагина по своему усмотрению (см. ниже)
  7. Создать каталоги для загрузки файлов в соответствии с настройками плагина

Настройки плагина представляют собой текстовое поле, в котором построчно вписаны контейнеры настроек для каждого типа загрузок вида:

all|datas/photos|thumb_100-100|0|frame

, где

  • all означает применение настроек ко всем разделам
  • datas/photos означает каталог загрузки файлов и миниатюр
  • thumb_100-100 означает создание одной миниатюры с именем thumb_page_PAGEID и размерами 100*100px
  • 0 означает что для создания страницы загрузка файла необязательна
  • отсутствие предпоследнего параметра (расширений) означает все разрешенные расширения графических файлов
  • последний параметр определяет режим обработки миниатюры

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

4. Примеры настроек PageAvatar 2.27

Пример 1

all|datas/photos|thumb_100-100|0|crop

Для любых разделов плагин будет загружать картинки в каталог datas/photos и создавать одну миниатюру размером 100*100px. Загрузка картинки не является обязательной для создания страницы. Миниатюра будет скадрирована.

Пример 2

all|datas/photos|thumb_100-100|0|frame
shop|datas/shop|thumb_120_120|1||width
mp3music|datas/music||1|mp3|
gallery|datas/gallery|thumb_100-100 bigthumb_800-600|1||crop

Для любых разделов плагин будет загружать картинки в каталог datas/photos и создавать одну миниатюру размером 100*100px. Загрузка картинки не является обязательной для создания страницы. Миниатюра будет вписана в размеры 100 на 100 ресайзом.
Для раздела shop загрузка картинок будет производиться в каталог datas/shop, размер миниатюр 120*120px, приоритет по высоте.
Для раздела mp3music разрешается загрузка только файлов с расширением mp3. Файлы будут грузиться в каталог datas/mp3.
Для раздела галерей будет создаваться две миниатюры загружаемых файлов с загрузкой в каталог datas/gallery. Миниатюры будут скадрированы.