Создание на CMS Drupal (Друпал) архива документов. Часть 1

В первой части статьи мы скачаем и установим модули, которые нам понадобятся для создания архива документов. После чего создадим новый тип контента на основе одного из самых полезных модулей - CCK (Content Construction Kit).

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

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

Следующим шагом создайте два словаря таксономии (модуль установлен и включен по умолчанию):

  • Тип документа. В этом словаре будут такие значения: Приказ, Распоряжение, Служебная записка, Протокол, Регламент, Положение, Порядок.
  • Состояние документа. В этом словаре будут такие значения: Проект, На согласовании, Действует, Не действует.

В настройках обоих словарей включите параметр Required. Это означает, что при создании любого документа пользователю обязательно нужно будет выбрать тип документа и его текущее состояние. После создания словарей и заполнения их указанными значениями убедитесь, что словари идут именно в такой последовательности: Тип документа, Состояние документа. Если у вас словарь Состояние документа стоит первым, с помощью мышки перетащите его вниз и сохраните результат.

Далее установите модуль CCK. Модуль позволяет добавлять в тип материала любое количество произвольных полей. Модуль состоит из нескольких подчиненных модулей, но нам для архива документов понадобится только несколько из них. Поэтому зайдите в меню Site building -> Modules и включите следующие модули в разделе CCK:

  • Content (позволяет использовать в типе контента любые поля),
  • FileField (позволяет прикреплять к контенту файлы, скачивается отдельно),
  • FileField Paths (позволяет указывать правила формирования имени загружаемого файла и пути к каталогу, скачивается отдельно),
  • Node Reference (позволяет ссылкаться из одного документа на другой),
  • Date (позволяет использовать в типе контента поля с датами, скачивается отдельно),
  • Date Popup (позволяет интерактивно выбирать дату из календаря для полей типа Дата, поставляется в комплекте с предыдущим модулем),
  • Content Taxonomy (позволяет в качестве типа поля указать словарь таксономии, скачивается отдельно),
  • Content Taxonomy Autocomplete (позволяет использовать автозавершение при редактировании поля типа Content Taxonomy, поставляется в комплекте с предыдущим модулем).

Еще нам понадобятся модули не относящиеся к CCK:

  • Pathauto (позволяет автоматически формировать удобочитаемые URL для страниц),
  • Token (модуль позволяет использовать шаблоны, например для формирования имен файлов и т.д.),
  • Transliteration (конвертирует названия файлов в транслитерацию, если файл был назван по-русски),
  • Automatic Nodetitles (позволяет автоматически формировать название материала используя шаблоны модуля 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):

  1. Дата, 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, и переходите к созданию следующего поля.
  1. Номер документа, doc_id, Text, Text field. После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
  • Size of textfield: 30,
  • Required: Установите галочку.
  1. Версия, doc_ver, Text, Text field. После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
  • Size of textfield: 3,
  • Required: Установите галочку.
  1. Вид документа, doc_type, Content Taxonomy Fields, Autocomplete (Freetagging). После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
  • Freetagging settings: Deny any new terms (запрещаем пользователю вводить свои типы документов),
  • Maximum length of autocomplete: 50,
  • Required: Установите галочку,
  • Vocabulary: Тип документа (указываем из какого справочника таксономии выбирать значения).
  1. Состояние, doc_status, Content Taxonomy Fields, Autocomplete (Freetagging). После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
  • Freetagging settings: Deny any new terms (запрещаем пользователю вводить свои состояния документов),
  • Maximum length of autocomplete: 50,
  • Required: Установите галочку,
  • Vocabulary: Состояние документа (указываем из какого справочника таксономии выбирать значения).
  1. Версия для редактирования, doc_edit, File, File Upload. После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
  • Permitted upload file extensions: txt doc xls rtf,
  • 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: Установите галочку.
  1. Версия с подписями, doc_accept, File, File Upload. После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
  • Permitted upload file extensions: jpg jpeg png gif pdf,
  • Progress indicator: Bar with progress meter,
  • File path: [field_doc_data-yyyy]/[field_doc_data-mm],
  • Cleanup using Pathauto: Установите галочку,
  • Convert to lower case: Установите галочку,
  • Transliterate: Установите галочку,
  • File name: [title-raw].[filefield-extension-original],
  • Cleanup using Pathauto: Установите галочку,
  • Convert to lower case: Установите галочку,
  • Transliterate: Установите галочку,
  • Required: Установите галочку.
  1. Документы, на которые ссылается настоящий документ, doc_ref, Node reference, Autocomplete text field. После сохранения появится страница с настройками этого поля, где нужно будет изменить следующие реквизиты:
  • Autocomplete matching: Contains,
  • Size of textfield: 100,
  • Number of values: Unlimited (убираем ограничение на количество ссылок на документы),
  • Content types that can be referenced: Документ (разрешаем ссылаться только на материалы вида Документ).
  1. Документы, которые ссылаются на настоящий документ - этот список будет у нас формироваться автоматически при помощи модуля 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 для управления выводом главной страницы, настройки профиля пользователя, а так же для настройки вида документа.

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

5
Ваша оценка: Нет Рейтинг: 5 (1 голос)

Комментарии

VasyOK{!} (не проверено)

Может я что-то не понял, но не могу указать реквизиты поля "Версия для редактирования". Конкретено вот эти:

*Progress indicator: Bar with progress meter
*Cleanup using Pathauto: Установите галочку,
*Convert to lower case: Установите галочку,
* Transliterate: Установите галочку,
* File name:

Не высвечиваются у меня они.

smihus
smihus аватар
User offline. Last seen 2 недели 3 дня ago. Не в сети
Зарегистрирован: 21 Мар 2009
Баллы: 51592

1. Проверьте по списку, все ли модули у вас включены.
2. При добавлении поля "Версия для редактирования" нужно было указать тип поля File и виджет File Upload.

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

VasyOK{!} (не проверено)

Да, вы правы! Действительно установил не все модули.

Теперь не могу обозначить только вид прогресс бара. А какой модуль отвечает за него?

smihus
smihus аватар
User offline. Last seen 2 недели 3 дня ago. Не в сети
Зарегистрирован: 21 Мар 2009
Баллы: 51592

За загрузку файлов, равно как и за прикрепление к материалу файла отвечает модуль FileField.

aahz
User offline. Last seen 36 недель 2 дня ago. Не в сети
Зарегистрирован: 25 Окт 2009
Баллы: 0

Для прогресс-бара необходима PECL-библиотека. Вот тут можно почитать, как ее ставить в Ubuntu: http://andyceo.ruware.com/blog/andyceo/kak-ustanovit-pecl-biblioteku-na-...
После ее установки появится поле с выбором двух вариантов для прогресс-бара, сразу под выбором расширения файлов для загрузки.
Progress indicator:
- Bar with progress meter
- Throbber

smihus
smihus аватар
User offline. Last seen 2 недели 3 дня ago. Не в сети
Зарегистрирован: 21 Мар 2009
Баллы: 51592

Статья по ссылке будет интересна только тем, у кого сайт расположен на VPS, а всем остальным придется общаться по поводу установки этой библиотеке со своим хостером.

aahz
User offline. Last seen 36 недель 2 дня ago. Не в сети
Зарегистрирован: 25 Окт 2009
Баллы: 0

Абсолютно согласен с Вами. Но это по крайней мере локализует проблему, которую описывает VasyOK{!} (не проверено).
Он-то ищет проблему в модулях, и спрашивает об этом, а она (проблема) в PHP-библиотеке, которой просто нет на его площадке. :-)

Borigor
User offline. Last seen 22 недели 3 дня ago. Не в сети
Зарегистрирован: 16 Фев 2010
Баллы: 0

не модуль..
библиотечка php_uploadprogress.dll
находится вместе с подружками в папке /ext
ее надо прописать в php.ini в разделе Windows Extensions:
extension=php_uploadprogress.dll

перегрузить сервер..

RSS-материал RSS-материал