Описание шаблонов форума
Шаблоны форума представляют собой обыкновенные HTML-файлы.
В них должны присутствовать элементы с определенными классами и поля
форм с определенными именами. Скрипты форума вставляют в эти файлы
информацию руководствуясь классами элементов и именами полей форм.
Во всех шаблонах производится правка относительных URL в элементах
img src, a href, link href, form action.
В URL начинающихся со слова templates заменяются на значение templateurl
из конфигурации форума, URL, начинающиеся со слова users - на userurl,
со слова forum - на путь к скрипту форума. Остальные относительные (т.е.
не начинающиеся c http: или / url дополняются путем к корневому каталогу
форума. Cсылки вида forum?параметры будут заменены на
url-скрипта/url-страницы?параметры
Шаблоны страниц:
1. Страница темы
title - в элемент с таким классом помещается заголовок темы. Тот же
самый заголовок помещается в элемент
в
Например
Тема форума
message
На странице темы должен присутствовать блоковый элемент с классом
message. Подстановка конкретного сообщения производится внутрь этого
элемента. При появлении в теме следующего сообщения этот элемент
копируется и копия вставляется сразу после предыдущего.
Элементу приписывается атрибут id, содержащий уникальный идентификатор
данного сообщения
Внутри элемента с классом message должны содержаться следующие элементы
manchor - якорь на который будут формироваться ссылки на это сообщение.
Атрибут name заменяется на идентификтаор этого сообщения
mlink - ссылка на это сообщение. Атрибут href заменяется на
author - ник автора сообщения. innerHtml заменяется на ник автора
Следует учитывать что в случае openId авторизации в этот элемент
будет помещен элемент a со ссылкой на домашнюю страницу
mdate - дата публикации сообщения innerHtml заменяется на дату
avatar - элемент img атрибут src которого заменияется на аватар автора
astatus - статус автора на форуме innerHtml заменяется на статус
acomment - комментарий к нику, введенный автором при регистрации.
innerHtml заменяется на комментарий
msubject - тема сообщения. Заменяется innerHtml
mtext - текст сообщения. innerHtml заменяется на отформатированный текст
mreply - ссылка на скрипт ответа. Атрибут href будет заменен на
корректную url. Элемент id заменяется на reply<идентификатор
сообщения>
Например:
Кроме того, в элементе c классом message должна присутствовать форма
с классом actions.
В ней должны присутсвовать следующие поля
1. Скрытое поле id
2. Скрытое поле author
3. Кнопка edit
4. Кнопка delete
5. Кнопка move
6. Кнопка reply (заменяет собой ссылку с классом mreply)
Клиент-сайд скрипт должен уметь скрывать кнопку move, если пользователь
не является модератором, а также кнопки edit и delete, если
пользователь не является модератором или автором сообщения(т.е. значение куки
sluser не совпадает с содержимым скрытого поля author)
Определять какие кнопки и ссылки являются ссылками на форумный скрипт
и должны скрываться и показываться в зависимости от прав доступа,
следует по атрибуту href ссылки и атрибуту action формы в сочетании с
атрибутом name у соответствующей кнопки. (кнопкой считаются input
type=submit и input type=image).
В разделе head у шаблона должны присутствовать тэги link вида
1.
По общим правилам подстановки серверный скрипт при обработке шаблона
заменит href этого элемента на собственную url.
Соответственно формы с action равной этой URL следует рассматривать
как подлежащие обработке и искать в них кнопки с именами,
соответствующими именам операций. И ссылки с href=эта url?параметры
В ссылке следует искать параметр вида имя-операции.
2.
Содержимое href этого скрипта может быть использовано client-side
скриптом для формирования ссылки на страничку локального
пользователя форума (в случае если имя пользователя начинается с
http:://, это OpenID-пользователь и его страничка находстия по URL,
совпрадающей с именем пользователя.
Если кука sluser не определена,
то желательно также скрыть кнопку reply и ссылку с классом mreply, если
только в шаблоне формы reply не предусмотрены поля, позволяющие
залогиниться в момент отправки реплики.
Для получения информации о правах текущего пользователя в форуме нужно
запросить (через XMLHttpRequest) файл perms.txt из текущей директории
(где расположена текущая страница) и выше по иерархии вплоть до корня
форма. Корнем форума является директория, где расположен файл .forum
(не обязательно доступный для чтения по http. Ответ сервера 403 как и
ответ 200 надо рассматривать как "файл найден")
Кроме того на странице могут присутствовать элементы a с классами
next и prev. В случае если тема разрослась более чем на одну страницу,
их href-атрибуты заменяются на ссылки на предыдущую следующую страницу.
Если тема состоит из одной страницы, ссылки будут вести на неё же.
Как вариант, можно использовать классы bnext и bprev. Если нет
предыдущей/следующей страницы, элементы a с такими классами будут
заменены на span.
Страница списка тем (головная страница форума)
Может иметь элемент с классом message, описывающий форум в целом (его
создатель, вводный текст и т.д.
Шаблоном описания конкретной темы является элемент с классом topic,
устроенный аналогично message (показывается текст и автор первой реплики
темы) с той разницей, что элемент с классом subject должен быть ссылкой.
Внутри элемента с классом topic должна присутствовать форма
с кнопками edit delete move setrights и скрытым полем id.
Кнопку setrights следует показывать только пользователю с правами
администратора.
Кроме этого, cтраница должна иметь ссылку с классом newtopic или форму с именем
newtopic и кнопкой submit с именем newtopic
Страница списка форумов (головная страница сайта, страница форума с
подразделами)
Устроена аналогично странице списка тем.
Элемент списка форумов должен иметь класс forum, а форма/ссылка для
создания нового форума соотвесттвенно имя/класс newforum.
Допускается также ситуация когда на одной странице присутствует и список
форумов, и список тем. (В этом случае если физически отсутствуют либо
те, либо другие, соответствующему элементу-шаблону выставляется
style="visibility: hidden");
Кроме этого на всех страницах рекомендуется иметь элемент-ссылку, который
отображает текущее имя пользователя. Этот элемент должен
конфигурироваться client-side cкриптом и показывать либо текст
"Зарегистрироваться" и аналогичный и вести на
/cgi-bin/forum/<адрес текущей страницы?login=1
либо имя пользователя и вести на
/cgi-bin/forum/