Глава 1. Предисловие к Plone
Предисловие к Plone
Компания, не имеющая собственного Web-сайта является недальновидной. Большинство компаний имеют несколько сайтов. Это может быть внешний сайт, предназначенный для предоставления информации клиентам, внутренний - предназначенный для использования сотрудниками, или сайт для организации взаимодействия между клиентами и поддержания обратной связи с ними. У владельцев всех этих Web-сайтов существует одинаковая проблема - как управлять их содержимым. Это вызов, принятие которого очень часто может потребовать от организации много времени и усилий. Создание мощной и гибкой системы для подобных сайтов, требования к которой постоянно изменяются в процессе её роста (из-за возникающих у компании новых потребностей) - непростая задача.
Независимо от того, какие требования предъявляются к объёму содержимого вашего сайта или числу его пользователей, использование Plone будет наилучшим решением, которое позволит вам легко добавлять и редактировать любые типы информации через Web (Through The Web - TTW), производить навигацию и поиск по содержимому вашего сайта, а также устанавливать правила безопасности и последовательность инстанций (рабочий цикл), через которые проходият документы сайта перед их опубликованием.
Plone позволяет вам содержать практически любой Web-сайт и легко его обновлять. Он также позволяет вам значительно ускорить время создания сайтов с большим количеством хранящейся на нём информации (content-rich), что даёт возможность получить существенное преимущество перед конкурентами. В заключение, возможно лучшее, что можно сказать об этой системе, это то, что она является бесплатной (free) и содержит все исходные коды (open source). C его многочисленными впечатляющими свойствами, Plone является сопоставимым, если не более хорошим, чем аналогичные системы, не доступные в исходных кодах и стоящие сотни и тысячи долларов.
Mike Sugarbaker сказал для сайта Mindjack (http://www.mindjack.com/events/oscom.html) следующее, когда выступал на Open Source Management Conference (OSCOM) в 2002 году:
"Я не буду говорить обо всех конкурирующих средах разработки с доступными исходными кодами. Я поставлю точку в имеющейся гонке: Победитель - Plone. Этот продукт, функционирующий на платформе Zope является пакетом с наибольшим числом вспомогательных средств, наиболее профессионально выполнен, представляющий из себя наиболее законченный продукт из всех."
Web-сайт Plone можно увидеть посетив адрес http://www.plone.org , как показано на рисунке 1-1. Попробовать использовать Plone очень легко - демонстрационная версия доступна по адресу http://demo.plone.org . Там вы cможете легко и быстро добавить и отредактировать содержимое через Web. Вы сможете реальным образом добавить события, загрузить изображения, добавить документы, и всё это через рабочую среду (framework), которую предоставляет Plone.
Рисунок 1-1. Web-сайт Plone
Что такое система управления контентом?
Простейшее определение описательного характера для системы управления контентом (Content Management System - CMS) - это система, предназначенная для управления содержимым сайта (контентом). Подобное определение скорее бесполезное, поэтому разделим его на несколько небольших частей для более полного понимания. Начнём с широкого определения контента: Контент - это единица данных, в которой содержится какая-либо внешняя информация. Эта часть данных может быть Web-страницей, информацией о происходящих событиях, документ Microsoft Word, изображение, видеоролик или любые другие единицы данных, которые имеет значение для организации, разрабатывающей систему.
Все эти единицы информации называются контентом (content) и все они имеют схожие атрибуты, такие как необходимость быть добавленными или отредактированными определёнными пользователями и быть опубликованными различными путями. Эти атрибуты контролирует система под названием workflow. Workflow (абочий цикл документа) логически определяется бизнес-правилами организации и описывает систему для управления контентом.
Исторически различия между системами управления контентом и системами управления документами были, однако позже обе эти системы были объединены. Существенные различия были в документах, управление которыми имело место; очень часто считалось, что контент - это любая единица информации, а под документом понималось нечто созданное или отредактированное человеком с использованием различных продуктов, например Microsoft Word. Возьмём, например, книгу: книга содержит множество разделов и для её использования требуется некоторое управление содержимым, которое немного отличается от того, которое необходимо самому её содержимому. Однако, в большинстве случаев, это несущественные различия и продукты, такие, как Plone способны управлять как незначительными единицами информации, так и большими её блоками и переопределять их.
Учитывая повсеместность использования Web, многие системы управления контентом (CMS) в настоящий момент классифицируются как системы управления Web-контентом либо потому, они имеют собственный Web-интерфейс, либо потому что их основная направленность - это основанные на Web системы, функционирующие в Internet или Intranet. Plone обеспечивает своим пользователям и то и другое.
В продолжение - одно из определений CMS (http://www.contentmanager.eu.com/history.htm):
CMS (система управления контентом) - это инструмент, который даёт возможность различным техническим (централизованным) и (децентрализованным) нетехническим командам создавать, редактировать, управлять и, в конечном счёте, публиковать (делать доступными для всеобщего обозрения) различный контент (информацию, например текстовую, графическую, видео и другую) в соответствии с установленными правилами, которые гарантируют связанное, проверенное представление всего Web-сайта в целом.
Вы хотите систему управления контентом?
Несмотря на то, что CMS имеет множество преимуществ, самое главное из них это возможность легко поддерживать сайт в согласованном состоянии. Представьте ситуацию, при которой один человек, вебмастер (Webmaster), координирует работу всего сайта, как внутреннего, так и внешнего. Контент (информация) поступает к нему от пользователей в самых различных форматах и вебмастер делает его пригодным для размещения на сайте, переводя в формат Hypertext Markup Language (HTML - язык разметки гипертекста). Если пользователи захотели изменить содержимое страницы, они отсылают изменения вебмастеру, который модифицирует существующие данные на сайте и так далее.
Это приносит организации множество неприятностей. Наибольшая из них это огромный объём контента, который проходит через одного человека. Один человек выполняет крайне большой объём работ, и если этот человек заболеет или прекратит свою деятельность в компании, продуктивность всей компании будет в упадке до тех пор, пока не будет найдена замена. Процесс публикации в этом случае становится абсолютно невозможным.
То, что нужно в данной ситуации - это система, выполняющая следующее:
Отделение содержимого страницы от её представления: Если содержимое отделено от представления, то автору нет необходимости знать HTML или то, как происходит отображение страницы. По факту, отдельно взятая часть контента может состоять из множества шаблонов, применённых к ней, включая форматы, отличные от HTML, такие, как Portable Document Format (PDF), или Scalable Vector Graphics (SVG). Когда вы хотите изменить внешний вид сайта, вы должны изменить только интересующий вас шаблон, а не всё его содержимое.
Разрешение определённым пользователям добавлять и редактировать контент: если определённый пользователь сможет легко добавлять и редактировать контент, то пропадает необходимость отсылать его вебмастеру или команде Web-разработчиков. Вместо этого, пользователь, который хочет создать страницу, может сделать это сам и редактировать её столько, сколько нужно.
Установка правил о том КТО может публиковать, ЧТО и КОГДА: Назначенные вами правила могут не позволять кому угодно публиковать контент на вашем сайте; например люди, которые занимаются маркетингом, будут иметь возможность публиковать документы в раздел сайта, посвещённый пресс-релизам, но не смогут публиковать документы в раздел разработчиков.
Возможность назначать правила (задавать рабочий цикл) для контента: если человек из группы по маркетингу создаст пресс-релиз, кто-то на законных основаниях может иметь необходимость просмотреть этот документ и одобрить его выход, либо отклонить. В этом случае документ будет проходить процесс утверждения, который гарантирует, что документ не выйдет в свет до тех пор, пока все все инстанции по подтверждению не будут пройдены.
Возможность интеллектуального поиска и индексирования информации: с тех пор, как CMS может хранить информацию о контенте (такую как имя автора, дата публикации, дата модификации, категории и т.п.), он может выводить список элементов контента, упорядоченную по указанным полям (например по автору). Предоставляемый поиск гораздо более быстрый и эффективный, чем обычный поиск по тексту.
Несмотря на то, что описанные стороны продукта являются сильными вообще, они имеют существенное значение в основном для больших организаций, которые могут получать все выгоды от использования данного продукта. На практике же, в основном небольшие организации, которые не имеют постоянного сотрудника для поддержания сайта, могут использовать лишь некоторые преимущества подобных систем. Тем не менее, установив CMS вы получаете возможность решить все вышеуказанные проблемы и не только.
Ключевой фактор любой CMS это обеспечить чёткое разделение элементов в следующем: безопасность, рабочие циклы (workflow), шаблоны и т.п. Например, шаблоны отображают какой-то элемент независимо от его содержимого. Это позволяет вам легко модифицировать внешний вид сайта.
Введение в особенности Plone
Plone это продукт лицензированный в рамках General Public License (GPL), содержащий все исходные коды, которые могут быть использованы без каких-либо ограничений. Для получения более подробной информации о GPL, посетите сайт http://www.gnu.org . Вы можете получить любую часть кода Plone и изменить её в соответствии с требованиями, предъявляемыми вашему приложению. Лицензия не является платной, имеет неограниченный срок действия и все исходные коды являются открытыми. Подобная философия открытых систем означает, что Plone уже имеет достаточно большую поддержку среди пользователей, а также множество разработчиков, специалистов по внедрению и применению, переводчиков, дизайнеров, способных работать с Plone. Выбирая для использования Plone, вы не ограничиваете себя сотрудничеством с одной компанией, наоборот множество компаний предлагают различные сервисы на платформе Plone.
Пакеты
Plone имеет удобные инсталляционные пакеты для Windows, Linux и Mac. Некоторые другие продукты являются включенными в инсталлятор. Использование качественных выпусков (releases) этих продуктов позволит вам установить и использовать их крайне легко. Кроме того, каждый новый выпуск поддерживает перенос путей и обновление существующей версии до новой без остановки работы вашего сайта.
Интернационализация
Весь пользовательский интерфейс Plone переведён более чем на 20 языков, включая корейский, японский, французский, испанский и немецкий. Добавить ваш собственный перевод - это просто (смотрите главу 4).
Использование
Plone использует опыт пользователей, что обеспечивает высокий уровень его полезности и доступности. При разработке не следует ограничиваться вниманием к красоте HTML. Вместо этого загляните в ядро Plone. Plone предоставляет интнрфейс, который является совместимым с промышленными и правительственными стандартами WAI-AAA и U.S. Section 508. Это даёт возможность людям с ограниченными возможностями по зрению использовать сайты, построенные с использованием Plone. Кроме этого, Plone позволяет получить неожиданную выгоду, которая заключается в возможности более хорошего индексирования вашей страницы в поисковых системах, например Google.
Скины
Plone разделяет контент и шаблоны, которые фактически используются при представлении этого контента, часто называемого скином (внешнее оформление). Скины создаются с использованием языка генерации шаблонов Zope Page Templates (ZPT) и большим количеством Каскадный Таблиц Стилей (CSS). С незначительным знанием Plone вы сможете создать множество скинов, сохранить их и в конечном итоге настраивать с их помощью внешний вид вашего сайта.
Регистрация и персонализация
Одно из свойств Plone - это законченная система регистрации пользователей. Регистрация пользователей в Plone происходит с использованием их имени, пароля, а также другой информации, которую вы можете захотеть добавить об этих пользователях. Вы также имеете возможность индивидуально настроить внешний вид пользовательского интерфейса для конкретного пользователя. Кроме того, вы можете использовать информацию, которая уже есть о пользователях, собранную из различных источников, таких как реляционная база данных Lightweight Directory Access Protocol (LDAP), Active Directory и других. Работы по созданию и настройке прав пользователей описаны в главе 8.
Рабочий цикл (workflow) и безопасность
Рабочий цикл контролирует логику прохождения контента через сайт. Вы можете настроить эту логику используя графические инструменты Plone. Администраторы сайта могут делать логику сложной простой, или такой, какая им нравится. Например, вы можете добавить такой инструмент, как рассылка напоминаний почтой или немедленное уведомление пользователей о чём-либо. В Главе 8 рассказывается о рабочих циклах во всех деталях.
Для любой единицы контента на Plone сайте вы можете установить список правил доступа для назначения тех, кто может получить доступ к данной единице информации и как он может взаимодействовать с ней. Хотите ли вы отредактировать установленные правила, просмотреть их или удалить? Всё это настраивается через Web (и спользованием Web интерфейса Plone) (Смотрите главу 9).
Расширяемость
Поскольку Plone является системой с открытыми исходными кодами, он легко может быть изменён. Вы можете менять почти любые аспекты работы Plone для достижения требуемого результата. Бесчисленные пакеты и утилиты для plone обеспечивают широкий набор опций как для маленьких сайтов, так и для больших. Хранилище бесплатных компонентов для расширения Plone доступно по адресу http://www.plone.org. С помощью утилиты для разработчиков Archetypes (описывается в главе 13) вы можете создавать и изменять код Plone быстро и легко через Web или используя инструменты Unified Modeling Language (UML). Глава 10 рассказывает об интеграции Plone с такими программами, как LDAP, Apache, Microsoft Internet Information Services (IIS), Macromedia Dreamweaver и другими.
Настройка контента
Пользователи Plone могут добавлять любой контент, и добавляемые данные не имеют никаких ограничений. Разработчики Plone могут создавать их собственные типы контента, которые также, как и имеющиеся мог быть управляемыми: предел накладывается только вашим воображением. В главах 11 и 12 будет рассказано о создании типов контента. Глава 13 будет введением в Archetypes - очень мощной системы для генерации типов контента, которая не требует знанния программирования: например, вы можете сгенерировать новый тип контента из утилиты UML.
Документация
Проект Plone имеет документацию, включая данную книгу, которая публикуется на правах Creative Commons лицензии. Лучшая отправная точка для ознакомления с документацией сообщества это http://www.plone.org/documentation.
Сообщество
Одна из лучших сторон, касающихся Plone - это сообщество разработчиков и компаний, которые поддерживают и разрабатывают Plone. Более чем 60 разработчиков вовлечены в проект по всему миру, что делает возможным получить необходимую помощь через интернет. Alan Runyan, Alexander Limi, и Vidar Andersen основали Plone, который быстро стал процветающим проектом благодаря привлечённым разработчикам. Сотрудничество этих разработчиков продолжается и сейчас.
Примеры сайтов, использующих Plone
Существует множество сайтов, работающих на платформе Plone. Для одних сайтов это очевидно из-за их внешнего вида, для других нет. Вот лишь небольшая часть этих сайтов:
Plone (http://www.plone.org)
Plone Demo Site (http://demo.plone.org)
Zope.org (http://www.zope.org)
Liquidnet (http://www.liquidnet.com)
Design Science Toys (http://www.dstoys.com)
Give Kids the World (http://www.gktw.org)
Propane (http://www.usepropane.com)
Maestro Headquarters (http://mars.telascience.org)
Для просмотра большего списка сайтов, использующих Plone, посетите страницу http://www.plone.org/about/sites, включая сайты, которые имеют изменённый пользовательский интерфейс. Не зная о том, что сайты используют Plone, достаточно тяжело об этом догадаться.
Участие в разработке Plone
Несмотря на то, что Plone имеет впечатляющие особенности, список его потребностей ещё более впечатляющий. Это подтверждает тот факт, что проект всегда ищет новых людей, готовых выделить время для помощи в разработке проекта.
К счастью, поскольку Plone направлен на взаимодействие с конечными пользователями, нет необходимости в широком спектре обслуживающего персонала. Постоянно требуются скорее волонтёры в определённых областях, а не программисты (coders) или Web-разработчики. Plone нуждается в разработчиках пользовательского интерфейса, графических дизайнерах, переводчиках и тестерах. Вы можете узнать о текущей стадии разработки по адресу http://plone.org/development и наилучший способ участвовать в разработке - это присоединиться к списку рассылки или именно к разработчикам с помощью IRC (Internet Relay Chat) канала.
Plone является надстройкой над Zope и CMF (Content Management Framework). Изучив Plone, вы получите также понимание Zope и CMS как средств, лежащих в основе его архитектуры. Оба этих продукта и то, как они интегрированы с Plone будет объяснено в данном разделе.
Zope - это мощный и гибкий сервер приложений с доступными исходными кодами, разработанный Zope Corporation ( http://www.zope.org ). Изначально Zope был разработан как самостоятельная система управления контентом (CMS), но со временем он перестал удовлетворять потребности пользователей. Тогда Zope Corporation разработала проект CMF с открытыми исходными кодами. CMF обеспечивает разработчиков всеми необходимыми средствами для создания сложных систем управления контентом. Она включаем в себя рабочую область, предоставляет возможности по настройке сайта и предлагает другие функции.
CMF это рабочая среда для системы. Другими словами, она содержит набор инструментов для разработчиков, позволяющих создавать собственные продукты быстрее, чем это позволяют сделать какие-либо внешние системы, которые могут использовать пользователи. Plone предоставляет эти и множество других особенностей и улучшений над ним для предоставления пользователю высококачественных продуктов. Plone - это надстройка над CMF, которая является надстройкой над Zope. Понимание CMF - это ключ к пониманию Plone. Большинство административных функций требуют использования административного интерфейса Zope. Разработка Plone и его компонентов также требуют понимания Zope и его объектов.
Данная книга не проникает в глубины Zope, скорее она просто даёт достаточно информации для выполнения необходимых задач в Plone. Обычное прочтение этой книги даст вам достаточно информации для настройки и изменения практически всего, что вы хотите в Plone. Для получения большей информации о Zope рекомендуется прочесть Zope Book. Изначально опубликованная New Riders, она была переведена в электронный вид и обновлена членами сообщества разработчиков. На данный момент книгу можно найти по адресу http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition .
Zope И CMF являются ключевыми технологиями, которые необходимы для работы Plone. Без их наличия Plone существовать не сможет. Команда разработчиков Plone должна сердечно поблагодарить всех сотрудников Zope Corporation за проявленную дальновидность при переводе Zope и CMF в ранг открытых систем. Список людей, которых хотелось бы поблагодарить, находится в сообществе CMF. Спасибо всем привлечённым.
Zope написан на языке Python - мощном объектно-ориентированном языке с доступными исходными кодами, сравнимым с Perl и Tcl. Знание Python не является необходимым для использования Plone или даже базового администрирования. Однако, настройка продуктов и написание скриптов для Plone всё-таки требуют некоторых знаний Python.
Tommy Burnette, технический директор Industrial Light Magic сказал о Python следующее ( http://www.python.org/Quotes.html ):
- Python играет ключевую роль в нашем производстве. Без него проект напоминал бы "Звёздные войны: Эпизод 2".
Если вы не планируете делать с Plone ничего сложного, вам вполне хватит одного или двух дней для овладения требуемым уровнем Python. Однако не только это позволит вам основательно настроить Plone, но также понимаение объектов и того как они взаимодействуют в среде Plone. Обучение вас основам Python не входит в круг задач, решаемых данной книгой, поскольку предполагается, что базовые знания Python у вас есть. Эти знания позволят вам пройти обучение с помощью данной книги и легче настроить установку Plone.
К счастью, Python это язык программирования, легко поддающийся изучению. В среднем, человеку знакомому с программированием достаточно одного дня, чтобы начать программировать на нём. Начинающим программистам потребуется для этого немного больше времени. Если вы устанавливете Plone под Windows или Mac, то необходимая версия Python будет включена в дистрибутив. Чтобы скачать Python как самостоятельный продукт для большинства остальных операционных систем, посетите узел http://www.python.org .
Наилучший способ справиться с Python это попробовать его использование из командной строки интерпретатора. Если вы используете Plone под Windows, то ссылка для программы Pythonwin (Python Integrated Development Environment (IDE)) находится в меню "Пуск". Запустите ссылку "Пуск - Программы - Plone - Pythonwin" (смотрите рисунок 1-2):
Рисунок 1-2. Интерпретатор Python в Windows
В Linux и Mac OS X запуск интерпретатора обычно производится командой python.
$ python Pyython 2.3.2 (#1, Oct 6 2003, 10:07:16) [GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
Поскольку Python является интерпретатором вместо того, чтобы компилировать и запускать целый скрипт, вы можете просто отсылать линии кода интерпретатору также, как их пишите. Это позволет среде интерпретатора быть крайне полезным местом для тестирования и отладки кода. В Интерпретаторе каждая строчка кода предназаначенная для ввода записывается после >>>.
Например, простейшая "Hello, World" программа выглядит так, как показано ниже:
>>> print "Hello, world!" Hello, world! >>>
Для выхода из интерпретатора нажмите Ctrl+D (нажимайте клавишу D удерживая при этом Ctrl) если вы используете Linux или Ctrl+Z в среде Windows. (Вы также будете использовать указанные комбинации для более хорошего взаимодействия с Plone и Zope.) Вы можете исполнить обычный скрипт, написанный на Python путём написания его в интерпретаторе, например создайте скрипт с именем hello.py следующего содержания:
print "Hello, world!"
Вы можете запустить данный файл используя следующую команду:
$ python hello.py Hello, world!
Web-сайт Python расположенный по адресу http://www.python.org содержит великолепную документацию, специальное обучающее пособие (Tutorial). Следующие книги также дают хорошее представление о Python:
Dive Into Python (Apress,2004): Основана на популярном Web-учебнике Mark Pilgrim. Эта книга позволяет читателям быстро получить вводную информацию о Python. Книга предназначена для опытных программистов.
Learning Python, Второе издание (O'Reilly, 2003): Эта книга рассказывает о версии Python 2.3 и даёт хороший обзор Python и всех его новых свойств. Это хорошая книга для начинающих программистов.
Practical Python (Apress, August 2002): Эта книга является высокопрактическим введением в Python, предлагая изучить целый набор свойств. Читатель сможет немедленно применить полученные знания на практике, следуя указаниям по созданию нескольких интересных проектов, включая электронную доску объявлений.
Python Essential Reference, Second Edition* *(Sams, 2001): Справочная книга, которая даёт хорошие общие сведения обо всех ключевых библиотеках и функциях. Это великолепная книга для опытных программистов.
В данной книге использованы следующие условные обозначения:
Курсив: Новые термины выделены курсивом. (Приложение С содержит расширенный список терминов). Ссылки, которые отображены в интерфейсе пользователя, также выделены курсивом.
Жирный шрифт: Слова, которые необходимо будет набирать с клавиатуры, выделены жирным шрифтом.
- Моноширинный шрифт: Этот шрифт обозначает имена файлов, папок, путей, кода, переменные и URL.
Эта книга содержит множество скриншотов Zope, Python и Plone. С тех пор, как Plone стал динамично развивающимся продуктом, его внешний вид может различаться в зависимости от версии, которая у вас используется. Однако эти изменения незначительны и не окажут влияния на понимание вами системы.
При написании книги использовались несколько версий Plone. Несмотря на то, что данная книга написана специально с ориентиром на эти версии, всё программное обеспечение должно работать как на этих, так и на более поздних версиях, которые появятся некоторое время спустя.
Версия Plone 2.0 была самой последней на момент написания книги. Это вторая главная (Major) версия продукта, которая обеспечивает множество новых свойств по сравнению с версией 1.0, включая управление группами пользователей, новый интерфейс и более позднюю версию Zope. Настоятельно рекомендуется использовать версию 2.0 или выше вместо более ранних версий Plone.
Версия Plone 2.0 имеет следующие зависимости: Zope 2.7, CMF 1.4.2 и Python 2.3.3. Все примеры кода в данной книге были специально спроектированы так, чтобы исключить зависимость от версии Plone или операционной системы. Однако, могут быть исключительные ситуации, за которые заранее приносим свои извинения.
Обычно сообщество пользователей Plone быстро выпускает качественную документацию, которая легла в основу данной книги. Как и предыдущая версия, эта является свободной для использования.
Возрастание интереса к Plone сделало возможным коммерческое использование книги, которая была выпущена летом 2003 года. В книге использовались некоторые материалы из предыдущей версии книги с разрешения её авторов. Однако, с учётом изменений в Plone 2 был добавлен значительный объём материала. Эта книга опубликована под Creative Commons license, которая позволяет использовать информацию из книги с указанием данных об авторе. Следует отметить, что книга не может быть использована в коммерческих целях. Для получения подробностей посетите узел http://creativecommons.org/licenses/by-nc-sa/1.0/ .
Перевод: Егор Шершнёв (http://plone.org.ru/)