Конференция на WWW
| |
|
Данный скрипт предназначен для создания WWW
конференции - раздела сервера, где можно не
только оставить пожелания, а обсудить различные
вопросы. При этом отправляемые комментарии имеют
структурированный вид, имеется возможность
цитирования предыдущего письма, возможно
автоматическое создание новых ветвей дискуссии.
Конференция состоит из главного файла, в
котором содержится (и постоянно обновляется)
список корневых ветвей дискуссии, и множества
отдельных файлов, содержащих собственно
документы с высказываниями и оглавления ветвей.
Скрипт написан на языке perl5 и использует
технологию шаблонов. Для создания
полноценного приложения необходимо создать:
- головной файл конференции
Это должен быть html документ с описанием правил
и темы данной дискуссии. Этот должен лежать в www
пространстве, и в нем должны быть строки:
<!--begin-->
<!--end-->
Между ними скрипт будет вставлять строки
списка корневых ветвей дискуссии. Также в этом
документе имеет смысл сделать форму для отправки
сообщения открывающего новую ветвь дискуссии.
Та-же самая форма может быть использована при
ответах на письма, поэтому имеет смысл содержать
текст самой формы в отдельном файле, а сюда ее
включить через функцию SSI #include.
Если не хочется связываться с SSI, то можно
сделать ссылку на файл с формой, но тогда не
забудьте передать скрипту имя головного файла, в
котором нужно поддерживать оглавление
конференции. Для этого в html форме создайте hidden
поле со значением указывающим на файл. Путь к
файлу указывается относительно вашей www
директории. Пример:
<input type="hidden" name="wwwboard"
value="/tmpl/new_www_board.html">
Так же можно заставить скрипт выдать форму ввода нового сообщения из
файла-шаблона *.frm. Для этого нужно обратиться к скрипту строкой:
/cgi/board.pl/templates/common?msgpath=/boarddir/&wwwboard=/boarddir/common.html&new=yes
В этой строке "templates" указывает директорию с шаблонами, "common" задает
базовое имя шаблонов данной конференции, "boarddir" - каталог с файлами
конференции и главным файлом. Этот каталог указывается относительно Вашей
www директории.
Так как при работе конференции создается
большое число файлов, лежащих там-же где и
головной документ, то лучше всего помещать его в
отдельную директорию, предназначенную именно
для этой конференции.
Для файлов c шаблонами нужно создать
специальную директорию в вашем домашнем
каталоге (например templates). Все шаблоны одного
приложения должны лежать в одной директории,
иметь единое базовое имя, и специфические
расширения:
- *.ok - шаблон положительного ответа
- *.er0 - шаблон отрицательного ответа, используется если не все
обязательные поля заполнены.
- *.tpl - шаблон одной записи в индексе
- *.ndx - шаблон для индекса второго уровня. Должен
содержать строки <!--begin--> и <!--end-->
- *.frm - шаблон формы для ввода нового сообщения или
ответа на существующее
- *.mes - шаблон хранимого сообщения
- *.bad - список недопустимых слов
- *.er1 - шаблон для реакции на недопустимые слова.
В процессе работы, будут появляться различные файлы. Их ни в коем случае
нельзя стирать руками, иначе приложение перестанет работать. Для
чистки конференции нужно использовать специальную программу, вызываемую из
http://doman_name/wmng.html
Скрипт вызывается из формы (поле action) как
/cgi/board.pl/templates/common
В этой строке "templates" указывает директорию
с шаблонами, "common" задает базовое имя
шаблонов данной конференции
Скрипт понимает следующие "hidden" параметры:
- wwwboard - путь к головному файлу
- new - выдает форму для нового сообщения.
- reply - выдать форму для ответа на сообщение.
- post - используется в вышеназванных формах.
Скрипт работает следующим образом:
- получает результаты работы формы
- если не заполнено хотя бы одно обязательное поле, производит подстановку переменных в
файле с расширением ".err" и показывает сгенерированный html текст.
- если заполнены все обязательные поля, то подстановка производится в файле с расширением
".ok", сгенеренный текст показывается, плюс к этому производится подстановка в файле
с расширением ".mes".
В шаблонах могут быть использованы следующие
переменные (помимо
стандартных):
- ^# - номер сообщения
- ^previous - ссылка на предыдущее сообщение
- ^next - на след. сообщение
- ^thread_index - на индекс второго уровня
- ^thread - ссылка на сообщение или индекс второго
уровня.
- ^current_message - в шаблоне .ok - только что созданное сообщение.
- ^thread_message - .ok, .frm, .mes - первое сообщение треда.
- ^msgs - число сообщений в треде. Используется
только для индекса первого уровня.
- ^ident - отступ. Только для индекса второго уровня.
&display - используется для выведения на экран
тела сообщения с
заданными аттрибутами. Атрибуты применяются
только для отцитированного
текста. Символ для цитирования фиксирован, и сейчас это
двоеточье (:). Символ '>', вызывает конфликт в Netscape Navigaror
на некоторых платформах.
"e - цитировать тело сообщения.
Для того чтобы избежать проблем с кешированием в браузере, следует вставить
в файлы с индексами (головной файл и template.mes) строки
<META HTTP-EQUIV="Pragma" CONTENT=no-cache>
<META HTTP-EQUIV="Cache-control" CONTENT=no-cache>
Пример рабочих файлов
Исходные файлы от этого примера Вы можете
сохранить на локальном диске, исправить по
желанию, и положить на свой виртуальный сервер.