Описание шаблонов форума
Шаблоны форума представляют собой обыкновенные 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
Для того чтобы узнать является ли текущий пользователь модератором
данного форума, нужно запросить с сервера (через XmlHttpRequest)
файл .moderators лежащий рядом с текущим файлом и далее вверх по
иерархии. Эти файлы представляют собой простые текстовые файлы с именем
пользователя в каждой строке.
В корне форума имеется аналогичный файл .admins.
Можно также запросить файл .banned.
Все эти действия являются необязательными. Если на клиентской стороне
они не будут выполнены и у пользователя появится возможность нажать на
кнопку выполнения операции, на которую у него нет прав, операция будет
заблокирована на сервере.
Если кука sluser не определена,
то желательно также скрыть кнопку reply и ссылку с классом mreply.
Кроме того на странице могут присутствовать элементы 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/