Вы здесь

iCitizenForum.com

Версия системы: 
Друпал 6

В конце 2007 года, Aten Design Group в сотрудничестве с The Colonial Williamsburg Foundation запустили сайт iCitizenForum.com, сайт на Друпале о гражданстве. Этот документ описывает некоторые факты, которые привели к выбору Друпала и описывает технические вопросы его создания.

iCitizenForum.com

Справка

The Colonial Williamsburg Foundation управляет крупнейшим в мире историческим музеем в Williamsburg, Virginia. Кроме того, фонд занимается историей 301-acre Historic Area; управляет музеями, социальными программами и библиотекой John D. Rockfeller; ведёт важные археологические исследования относящиеся к вопросам возникновения Америки. В соответствии со своим девизом — That the Future Learn from the Past — фонд заинтересован не только в восстановлении истории XVIII века, но и содействует просвещению людей о возникновении Америки.

iCitizenForum.com содействует ведению дискуссий по вопросам касающимся гражданства, так как это является продолжением основной задачи фонда.

Исследование

Когда мы были вовлечены в проект в конце 2007 года, работа уже началась. Дизайн был уже разработан. Сайт был закодирован в ColdFusion. Возможности используемые сообществом были реализованы с использованием решения на базе платформы .NET. Концепция сайта уже прошла несколько рассмотрений и вопрос реализации проекта был уже не за горами.

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

  • Блоги, которые организованы по темам и тегам, как основное средство привлечения пользователей
  • Использование видео, в качестве средства обмена информацией как в блогах, так и в других местах сайта
  • Использование форумов в качестве дополнительной платформы обсуждений
  • Обеспечение глубокой работы с материалами, включая перевод некоторых документов с основной информацией на тему гражданства

Выбор Друпала

В процессе разработки проекта мы столкнулись с определёнными трудностями. Программное обеспечение использовавшееся для сообщества не поддерживало разнотипную классификацию. Мы хотели использовать две таксономии для одного содержания: одна для пяти разделов форумов, которые служили бы контейнерами для входящих в них тем, а другая для свободного ввода тегов. Дополнительно, мы видели возможные проблемы с созданием документов, которые не являлись бы записями в блоге, упорядоченными в иерархическое меню, но имели бы такие же возможности классификации как и документы в блогах. В то время, эти возможности были просто недоступны, во всяком случае без необходимости серьёзной работы с кодом и программирования всех возможностей с нуля.

Наши проблемы в основном заключались в системе классификации — как раз в том, что хорошо умеет делать Друпал. Кроме классификации содержания, Друпал даёт широкие возможности для сообщества, такие как настраиваемые типы документов, управление доступом, гибкая система меню, удобная публикация RSS-лент. Дополнительно, управление содержанием в целом, было темой, которую мы часто обсуждали с Colonial Williamsburg, и часто отказывались от разных вариантов вследствие их стоимости, лицензирования или отсутствия совместимости с уже существующей архитектурой. Как достаточно изолированная часть спектра их деятельности, iCitizenForum.com был идеальной тестовой площадкой для Друпала.

Windows-хостинг

Colonial Williamsburg использует IIS на серверах Windows NT, ColdFusion и базу данных MS SQL Server. Это не слишком часто встречающееся окружение для Друпала. Временные ограничения и существующие договора по обслуживанию NT-сервера делали использование LAMP невозможным, таким образом мы начали изучение возможностей хостинга для работы Друпала в Windows. Мы установили PHP 5, MySQL и дополнительный модуль для IIS (ISAPI Rewrite, аналог mod_rewrite) для возможности использовать чистые URL.

Внедрение

После завершения работ с настройкой сервера, мы приступили к созданию на нём нашего сайта.

iCitizenForum.com

Типы документов

  • Записи в блогах. Активность пользователей сосредотачивается вокруг записей добавляемых сотрудниками iCitizenForum и добровольных помощников, среди которых видеорежиссёры, политические обозреватели, журналисты и так далее, включая Craig Newmark (Craiglist.org)
  • Обсуждения. Каждое обсуждение имеет свою категорию (входит в неё) и имеет связанный с ним документ
  • Темы форумов. Сайт даёт возможность вести традиционные форумные обсуждения
  • Страницы. Страницы используются для статического содержания, включая также глубокие материалы о гражданстве
  • Переведённые страницы. Мы использовали специальный тип документов, для переводов используя поле CCK Node Reference, которое связывает перевод с его оригинальной версией на английском языке

Разработка

Типы документов и их списки

Мы разрабатывали типы документов с использованием CCK и создали дополнительные блоки с PHP-кодом для управления списками документов.

Кроме того, каждый документ категории «Обсуждение» имеет на сайте связанный с ним документ «Тема форума», назначенный на её категорию, который служит заглушкой для списка связанных документов. Этот подход обеспечивает управление документооборотом для категорий, который уже доступны для документов. Новые темы не будут появляться на сайте до тех пор, пока соответствующий пользователь не опубликует связанный документ «Тема форума».

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

Прикреплённые изображения

Авторы нуждаются в том, чтобы использовать связанные с документом изображения. Это было сделано путём создания дополнительного блока, который показывает изображения прикреплённые к любому документу сайта при помощи поля ImageField.

Текстовый редактор

Первоначально, документы редактировались с помощью TinyMCE. Позднее мы переключили TinyMCE на использование разметки Markdown, что позволило решить некоторые старые проблемы связанные выводом JavaScript текстового редактора (подробности смотрите в статье WYSIWYG vs Markdown).

CAPTCHA

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

Перевод

Переводы документов на разные языки осуществляются на основе типов документов, в которых существует поля типа — ссылка на документ, которое позволяет ссылаться на оригинальный документ. Возможность перевода можно посмотреть на странице http://icitizenforum.com/about, которая содержит описание содержания и цели сайта iCitizenForum.com, также на определённых языках доступен список всех дополнительных ресурсов сайта. Так как всё это было реализовано на основе типов документов и дополнительных полях, эти списки генерируются динамически и расстановка ссылок на переводы была реализована очень быстро и просто.

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

iCitizenForum.com

Видеозаписи

Некоторые из самых интересных возможностей сайта iCitizenForum.com связаны с управлением видеозаписями. На начальной стадии разработки проекта, мы добавляли видео путём вставки кода с сервисов YouTube, Vimeo, Blip и подобных им прямо в содержание документа. Позднее, мы обсудили пути сбора документов с видеозаписями в одну ленту, которая формирует видеобиблиотеку. Кроме того, редакторы видео из Colonial Williamsburg хотели получить возможность управления качеством публикуемых видеозаписей, что означало хранение и обработку этих видеозаписей локально. Мы хотели управлять возможностью сбора видео с других видеосервисов, но хотели улучшения управления качеством оригинальных записей публикуемых на iCitizenForum.com.

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

Видеобиблиотека

Чтобы реализовать первое требование, мы создали модуль VideoLib, который позволяет настраивать вид для вывода видеозаписей, связанных таксономий и связанное видео в отдельных блоках. Модуль переопределяет несколько функций оформления, что позволяет получить более полное управление за тем, как видео будет выглядеть в библиотеке. Это включает JavaScript, который применяет определённые AJAX-действия к таксономии и навигации по связанным видеозаписям, обеспечивает реагирование при просмотре пользователями отдельных страниц.

iCitizenForum.com

Видео прикрепляется к документам через CCK-поле. Любой тип документов может содержать видео путём добавления в него этого поля. На странице настройки VideoLib, администратор сайта может определить типы документов, которые будут иметь это поле и из каких типов документов видео будет включаться в библиотеку. Дополнительно, администратор может выбрать словари для вывода их в качестве блоков навигации. В этом случае, мы хотели чтобы темы обсуждения показывались как параметры навигации в левой колонке, но это были бы не теги.

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

Сбор видео

Мы предприняли попытку, которую сделал Брэд (beeradb), которая быстро переросла в модуль YouTube API, который предоставляет широкие возможности по сбору видеоматериалов и эти возможности вышли далеко за наши первоначальные цели. Модуль YouTube API позволяет программно управлять видео, имеет интеграцию с FeedAPI, видеоленты, комментирование, идентификацию, рейтинги и управление предпочтениями между Drupal-сайтом и сервисом YouTube.

В дополнение к автоматическому размещению видео на YouTube и Vimeo, видеобиблиотека содержит ленту с видеоматериалами, которая включает все документы из библиотеки, их краткое содержание и связанное с ними видео.