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

Данное техническое задание публикуется, как пример ТЗ на один из компонентов информационной системы. Если кому-то надо - пользуйтесь.

1. Введение

Данное техническое задание описывает цикл работ по написанию галереи для персонального блога, созданного на базе CMF Drupal. Требуется разработать систему показа пользовательских изображений, которая будет позволять группировать их в отдельные наборы изображений(галереи), позволит раскладывать эти изображения по отдельным категориям, а так же будет давать пользователю возможность просмотра изображений увеличенных/уменьшенных в различных вариантах размеров.

2. Основные определения

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

 

HTML
это язык разметки документов. Все веб-страницы создаются при помощи языка HTML(или XHTML). Язык HTML интерпретируется браузером и отображается в виде документа, удобном для человека. HTML соответствует международному стандарту ISO/IEC 15445:2000.
Сайт
это одна или совокупность страниц в формате HTML или каком либо другом, доступных в интернете через протоколы HTTP/HTTPS. Страницы сайта объединены общим корневым адресом сайта, а также обычно темой, логической структурой, оформлением и/или авторством.
Адрес сайта
синоним(URL — uniform resource locator) - это стандартизированный способ записи адреса ресурса в сети. Стандарт адреса cайта определяется RFC 1738.(см. Приложение1).
Пользователь
лицо или организация, которое использует действующую систему для выполнения конкретной функции.
Веб-приложение
приложение, в котором клиентским приложением выступает браузер, а сервером - веб-сервер
Веб-обозреватель или браузер(из англ. Web browser)
это программное обеспечение для просмотра сайтов, то есть для запроса документов формата HTML, для их обработки, вывода и перехода от одной страницы к другой.
Комментарий
сообщение пользователя в ответ на какую либо статью или новость на сайте. Публикуется на странице новости или при переходе по ссылке «показать комментарии».(в drupal реализован штатным модулем comment)
Учетная запись пользователя
набор данных, содержащийся в базе данных, с информацией о пользователе: его имени в системе, его пароль, другие его учетные данные.
Владелец сайта
человек или организация, которая занимается отслеживанием всего что на сайте происходит, которая имеет возможность управления сайтом(примечание: в данном случае термин «владелец» может не совпадать с термином «заказчик»).
CMF(Content Management Framework)
набор библиотек или библиотека, или готовая система управления контентом, которая используется для разработки сайтов с системой управления с целью сокращения временных расходов на разработку базового функционала(системы учетных записей, системы категорий, системы создания документов для сайта)

 

3. Основания для разработки

Drupal — готовый инструментарий для создания сайтов. В нем реализован модуль блогов, модули лент новостей сайта, есть возможности для размещения коротких новостных заметок, есть форма обратной связи.

Кроме того в Drupal имеется набор бесплатных модулей(drupal.org/project/modules), реализующих ту или иную функциональность, которой нет в поставке.

В частности пакет модулей Image может использоваться для загрузки на сайт изображений, где изображение можно хранить в нескольких размерах, и оно является отдельным документом(node) в рамках системы Drupal.

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

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

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

4. Описание компонентов системы

4.1 Модуль изображений.

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

Данный модуль каждое изображение хранит в системе как отдельный документ(node), что подходит требованиям нашей задачи.

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

4.2. Модуль для изменения размеров изображений.

Предлагается использование модуля imagecache указанного выше. Данный модуль позволяет создавать профили настроек, в каждом из которых можно указать, какие преобразования вы хотите сделать.

Потом при обращении к изображению по адресу вида /files/imagecache/<имяпрофиля>/<начальный путь до изображения> в случае, если правильно настроен веб-сервер и система путей Drupal, если не найдено изображение - модуль imagecache создаст преобразованное изображение, и отдаст его браузеру пользователя. Если файл уже создан - он отдается сразу.

Таким образом модуль позволяет не задаваться вопросом как преобразовать большое количество изображений к нужному виду, а делает это тогда, когда нам это необходимо.

4.3. Модуль для раскладывания изображений по категориям в зависимости от тегов exif при загрузке изображений на сайт.

После того как пользователь загрузил файл с помощью модуля Image модуль должен взять из файла изображения теги и указать их для данного изображения.

То есть найти существующие с помощью exif_read_data()(поле 'COMMENT' возвращаемого функцией массива) теги. Потом пройти по всем тегам, создать в таксономии те, которые еще не существуют и назначить их данному документу.

Так же модуль буде хранить всю дополнительную информацию по изображению и при показе изображений показывать всю эту информацию.

Причем этот показ можно будет темизировать и вынести в блок.

Других действий от модуля не требуется.

4.4. Модуль галереи.

Данный модуль должен создать в системе свой тип материала «gallery», который будет использован для группировки других галерей и изображений. Почему именно отдельный тип материала — потому, что возможно, владелес сайта разрешит другим пользователям создавать свои галереи. А давать такие возможности в рамках модуля taxonomy, как делает Image Gallery - проблематично просто поскольку будут проблемы с невозможностью разделения прав собственников на их галереи.

Что должно быть реализовано.

4.4.1. Обложка галереи.

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

4.4.1.1. Загрузка изображений.

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

4.4.1.2. Возможность сделать обложкой любое изображение из данной галереи.

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

4.4.2. Темизация и показ.

Показ обложки галереи и собственно галереи должен иметь максимум возможностей для темизации.

В функции темы должны быть вынесены:

  • показ тизера галереи
  • показ изображений и галерей в галерее
  • показ одиночного изображения.

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

Будет задействован показ документов модуля Image, а модуль галереи всего лишь будет отслеживать — если документ состоит в какой либо из галерей - будет отображаться лента уменьшенных изображений из галереи(несколько до просматриваемого в данный момент и несколько после) . Так же будут выведены элементы управления вида «вперед-назад» для перехода на картинку вперед или на картинку назад.

4.4.3. Вложенные в галерею объекты.

В галерею должны иметь возможность вкладываться объекты вида «галерея» и «изображение».

При показе галереии будет листинг в котором сначала будут идти вложенные в нее другие галереи, а потом же другие изображения.

Для связей предполагается использовать отдельную таблицу связей.

4.4.4. Создания изображения в галерее.

Для создания документа изображения модуля Image используется стандартная форма Drupal измененная с помощью его хуков. Предполагается при показе галереи отображать ссылку «Добавить изображение в галерею» которая будет вести на эту же форму но с параметром запроса gallery_id с идентификатором той галереи, в которую мы его вкладываем. Наш модуль, отследив этот параметр, создаст в форме скрытое поле с идентификатором галереи и добавит в форму информацию что мы создаем изображение именно в этой галерее а не в другой.

После создания документа модуль занесет запись в таблицу связей.

Таким образом изображение будет добавлено в галерею.

Аналогично в галерею будет вкладываться другая галерея.

4.5.5. Страницы показа галерей на сайте.

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

Модуль должен будет создать 2 типа листингов.

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

По урлу gallery/userid, где userid - идентификатор пользовательской учетной записи, будут выдаваться списки галерей созданные конкретным пользователем, отсортированные аналогично.

5. Требования к программному обеспечению необходимому для использования набора модулей.

  • веб-сервер Apache версии 1.3 и выше(возможно использования nginx при соответствующем изменении конфигурации сервера);
  • система запуска скриптов PHP 5.2.6 и выше с возможностью запуска PHP скриптов на сервере;
  • сервер MySQL версии 4.2 и выше.

6. Стадии и этапы разработки.

  1. Создание модуля для проставления exif тегов(1-4дня).
  2. Создание модуля галерей.(3-5 дней).
  •  

Комментарии