Создание на CMS Drupal (Друпал) архива документов. Часть 1
Сб, 26/09/2009 - 19:56 — smihus
В первой части статьи мы скачаем и установим модули, которые нам понадобятся для создания архива документов. После чего создадим новый тип контента на основе одного из самых полезных модулей - CCK (Content Construction Kit).
Для начала устанавливаем CMS Drupal (Друпал). В этот раз обойдемся без локализации, ее вы сможете сделать по завершении работы самостоятельно, как описано в одноименной статье. Все необходимые модули будем скачивать и устанавливать по мере необходимости.
Для начала скачайте и установите модуль . Этот модуль устанавливает удобное меню, через которое можно добраться до любой части вашего сайта за один клик. Я его использую во всех своих проектах и вам рекомендую.
Следующим шагом создайте два словаря таксономии (модуль установлен и включен по умолчанию):
Тип документа. В этом словаре будут такие значения: Приказ, Распоряжение, Служебная записка, Протокол, Регламент, Положение, Порядок.
Состояние документа. В этом словаре будут такие значения: Проект, На согласовании, Действует, Не действует.
В настройках обоих словарей включите параметр Required. Это означает, что при создании любого документа пользователю обязательно нужно будет выбрать тип документа и его текущее состояние. После создания словарей и заполнения их указанными значениями убедитесь, что словари идут именно в такой последовательности: Тип документа, Состояние документа. Если у вас словарь Состояние документа стоит первым, с помощью мышки перетащите его вниз и сохраните результат.
Далее установите модуль . Модуль позволяет добавлять в тип материала любое количество произвольных полей. Модуль состоит из нескольких подчиненных модулей, но нам для архива документов понадобится только несколько из них. Поэтому зайдите в меню Site building -> Modules и включите следующие модули в разделе CCK:
Content (позволяет использовать в типе контента любые поля),
(позволяет прикреплять к контенту файлы, скачивается отдельно),
(позволяет указывать правила формирования имени загружаемого файла и пути к каталогу, скачивается отдельно),
Node Reference (позволяет ссылкаться из одного документа на другой),
(позволяет использовать в типе контента поля с датами, скачивается отдельно),
Date Popup (позволяет интерактивно выбирать дату из календаря для полей типа Дата, поставляется в комплекте с предыдущим модулем),
(позволяет в качестве типа поля указать словарь таксономии, скачивается отдельно),
Content Taxonomy Autocomplete (позволяет использовать автозавершение при редактировании поля типа Content Taxonomy, поставляется в комплекте с предыдущим модулем).
Еще нам понадобятся модули не относящиеся к CCK:
(позволяет автоматически формировать удобочитаемые URL для страниц),
(модуль позволяет использовать шаблоны, например для формирования имен файлов и т.д.),
(конвертирует названия файлов в транслитерацию, если файл был назван по-русски),
(позволяет автоматически формировать название материала используя шаблоны модуля Token).
После того как мы скачали и включили указанные модули, можно приступить к созданию нашего типа материала с использованием возможностей CCK. Для этого заходим в меню Content management -> Content types -> Add content type. На открывшейся странице заполним следующие реквизиты и настройки:
Automatic title generation: Automatically generate the title and hide the title field (запрещаем пользователю редактирование заголовка, т.к. мы его будем формировать автоматически),
Pattern for the title: [field_doc_type-terms-raw] №[field_doc_id-raw] от [field_doc_data-dd].[field_doc_data-mm].[field_doc_data-yyyy] (Название документа у нас будет формироваться автоматически на основе выбранных значений пользователя (Вид документа, номер, дата) и будет таким: Приказ №1325 от 01.09.09),
Name: Документ,
Type: document,
Description: Добавить новый документ (Приказ, Распоряжение, Регламент и т.д.),
Title field label: Документ,
Body field label: Назначение,
Default comment setting: Disabled,
затем нажмите кнопку Save content type. После сохранения вы увидите список всех доступных на данный момент типов материалов, в том числе и только что созданный нами. Чтобы не вводить пользователей в заблуждение таким разнообразием давайте оставим только наш тип Документ, а остальные удалим (Page и Story).
Теперь нам нужно добавить к нашему типу несколько полей, для этого нажмите ссылку manage fields, которая расположена справа от нашего типа материала Документ. Для каждого поля нам потребуется заполнить четыре реквизита:
Label (тут указывается название поля, которое будет видеть пользователь),
Field name (тут внутреннее название, может содержать только цифры и латинские буквы),
Type of data to store (тут выбирается тип поля, например: число, строка, дата, ссылка и т.д.),
Form element to edit the data (выбирается способ отображения поля),
а затем нажать кнопку Save для сохранения настроек. Приступим к добавлению полей, значения буду указывать через запятую в такой последовательности (Label, Field name, Type of data to store, Form element to edit the data):
Дата, doc_data, Date, Text Field with Date Pop-up calendar. После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
Default value: Now (по умолчанию будет установлена текущая дата),
Input format: 29/09/09 (я выбрал такой формат, но вы можете выбрать любой),
Required: Установите галочку (это значит, что параметр обязателен для заполнения),
To Date: Never (дата документа не является периодом),
Granularity: Year, Month, Day (Для наших целей достаточно, чтобы хранились только год, месяц и число)
Default Display: Short (это короткое представление даты),
Time zone handling: No time zone conversion. Теперь сохраните настройки, нажав кнопку Save field settings, и переходите к созданию следующего поля.
Номер документа, doc_id, Text, Text field. После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
Size of textfield: 30,
Required: Установите галочку.
Версия, doc_ver, Text, Text field. После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
Size of textfield: 3,
Required: Установите галочку.
Вид документа, doc_type, Content Taxonomy Fields, Autocomplete (Freetagging). После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
Freetagging settings: Deny any new terms (запрещаем пользователю вводить свои типы документов),
Maximum length of autocomplete: 50,
Required: Установите галочку,
Vocabulary: Тип документа (указываем из какого справочника таксономии выбирать значения).
Состояние, doc_status, Content Taxonomy Fields, Autocomplete (Freetagging). После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
Freetagging settings: Deny any new terms (запрещаем пользователю вводить свои состояния документов),
Maximum length of autocomplete: 50,
Required: Установите галочку,
Vocabulary: Состояние документа (указываем из какого справочника таксономии выбирать значения).
Версия для редактирования, doc_edit, File, File Upload. После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
Progress indicator: Bar with progress meter (включаем показ прогрессбара для загрузки),
File path: [field_doc_data-yyyy]/[field_doc_data-mm] (автоматически будут создаваться папки типа 2009/09 - год и месяц соответственно),
Cleanup using Pathauto: Установите галочку,
Convert to lower case: Установите галочку,
Transliterate: Установите галочку,
File name: [title-raw].[filefield-extension-original] (файл будет переименован в название нашего документа),
Cleanup using Pathauto: Установите галочку,
Convert to lower case: Установите галочку,
Transliterate: Установите галочку (название файла при загрузки автоматически заменится на транслитерацию),
Required: Установите галочку.
Версия с подписями, doc_accept, File, File Upload. После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
Документы, на которые ссылается настоящий документ, doc_ref, Node reference, Autocomplete text field. После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
Autocomplete matching: Contains,
Size of textfield: 100,
Number of values: Unlimited (убираем ограничение на количество ссылок на документы),
Content types that can be referenced: Документ (разрешаем ссылаться только на материалы вида Документ).
Документы, которые ссылаются на настоящий документ - этот список будет у нас формироваться автоматически при помощи модуля Views, но об этом в следующей части этой статьи.
После того как все поля добавлены давайте их поставим в более удобном порядке. Это делается на странице, где мы добавляли каждое поле. Поставьте поля в следующем порядке:
Вид документа,
Номер документа,
Дата,
Версия,
Состояние,
Назначение,
Версия для редактирования,
Версия с подписями,
Документы, на которые ссылается настоящий документ,
Документ,
оставшиеся поля можно оставить в том порядке как они и идут.
После чего установим параметры видимости полей, для этого заходим в менюContent management -> Content types ->Edit Документ -> Display fields. На открывшейся странице мы видим таблицу с полями и настройками их видимости:
Field - это название поля,
Label - тут можно указать, как мы хотим отображать название поля: Above (показывает заголовок над значением), Inline (показывает заголовок и значение в одной строке), Hidden (прячет заголовок),
Teaser - тут можно указать, как будет отображаться значение поля. Выбор настроек меняется в зависимости от типа поля. Например, для Вида документа можно выбрать отображение в виде текста или ссылки на термин словаря таксономии.
Exclude - установив галочку мы скроем это поле из короткого представления,
Full node - настройки аналогичны Teaser, только действуют для полного представления материала,
Exclude - установив галочку мы скроем это поле из полного представления.
Поэксперементируйте с этими настройками и остановитесь на понравившимся варианте. Обратите внимание, что мы можем задавать настройки не только для документа (раздел Basic), но и для RSS и Token. Т.е. можно управлять видимостью полей в RSS и Token соответственно. Для нашего архива документов мы не будем изменять настройки видимости этих двух разделов.
Теперь нам нужно зайти на локальном веб-сервере в папку с модулем Pathauto, найти там файл i18n-ascii.example.txt и переименовать его в i18n-ascii.txt. После чего в меню сайта Site building -> URL alias -> Automated alias settings и поставить галочки: Transliterate prior to creating alias и Reduce strings to letters and numbers from ASCII-96. Это позволит URL документов и загруженных файлов заменять на транслитерацию.
Теперь вы можете занести несколько различных документов, чтобы в следующей части статьи мы смогли ими воспользоваться. Как видите создавать документы вы можете, но пока нет ни нормального информативного вида списка документов, ни поиска, ни других полезных фишек. В следующей части мы создадим при помощи модуля Views несколько представлений, а именно:
Списки для вывода документов на главной странице,
Форму поиска,
Форму списка для профиля пользователя, в которой будут видны только документы, созданные им. А это подразумевает использование аргументов для Views.
Список документов, которые ссылаются на настоящий документ, так же предполагает использование аргументов для Views.
Ну а в третьей части статьи мы будем использовать модуль Panels для управления выводом главной страницы, настройки профиля пользователя, а так же для настройки вида документа.
Еще раз напоминаю, что если у вас возникли вопросы, не стесняйтесь их задавать в комментариях к статье.
Может я что-то не понял, но не могу указать реквизиты поля "Версия для редактирования". Конкретено вот эти:
*Progress indicator: Bar with progress meter
*Cleanup using Pathauto: Установите галочку,
*Convert to lower case: Установите галочку,
* Transliterate: Установите галочку,
* File name:
1. Проверьте по списку, все ли модули у вас включены.
2. При добавлении поля "Версия для редактирования" нужно было указать тип поля File и виджет File Upload.
Если вы все так и сделали, но не получилось, напишите мне в аську 237379613, разберемся. Либо могу вечером выложить архив с готовым сайтом, там вы сможете посмотреть мои настройки, в том числе и этого поля.
Для прогресс-бара необходима PECL-библиотека. Вот тут можно почитать, как ее ставить в Ubuntu:
После ее установки появится поле с выбором двух вариантов для прогресс-бара, сразу под выбором расширения файлов для загрузки.
Progress indicator:
- Bar with progress meter
- Throbber
Статья по ссылке будет интересна только тем, у кого сайт расположен на VPS, а всем остальным придется общаться по поводу установки этой библиотеке со своим хостером.
Абсолютно согласен с Вами. Но это по крайней мере локализует проблему, которую описывает VasyOK{!} (не проверено).
Он-то ищет проблему в модулях, и спрашивает об этом, а она (проблема) в PHP-библиотеке, которой просто нет на его площадке. :-)
не модуль..
библиотечка php_uploadprogress.dll
находится вместе с подружками в папке /ext
ее надо прописать в php.ini в разделе Windows Extensions:
extension=php_uploadprogress.dll
Может я что-то не понял, но не могу указать реквизиты поля "Версия для редактирования". Конкретено вот эти:
*Progress indicator: Bar with progress meter
*Cleanup using Pathauto: Установите галочку,
*Convert to lower case: Установите галочку,
* Transliterate: Установите галочку,
* File name:
Не высвечиваются у меня они.