-ïÐÉÓÁÎÉÅ ÛÁÂÌÏÎÏ× ÆÏÒÕÍÁ
+Описание шаблонов форума
-ûÁÂÌÏÎÙ ÆÏÒÕÍÁ ÐÒÅÄÓÔÁ×ÌÑÀÔ ÓÏÂÏÊ ÏÂÙËÎÏ×ÅÎÎÙÅ HTML-ÆÁÊÌÙ.
-÷ ÎÉÈ ÄÏÌÖÎÙ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ÜÌÅÍÅÎÔÙ Ó ÏÐÒÅÄÅÌÅÎÎÙÍÉ ËÌÁÓÓÁÍÉ É ÐÏÌÑ
-ÆÏÒÍ Ó ÏÐÒÅÄÅÌÅÎÎÙÍÉ ÉÍÅÎÁÍÉ. óËÒÉÐÔÙ ÆÏÒÕÍÁ ×ÓÔÁ×ÌÑÀÔ × ÜÔÉ ÆÁÊÌÙ
-ÉÎÆÏÒÍÁÃÉÀ ÒÕËÏ×ÏÄÓÔ×ÕÑÓØ ËÌÁÓÓÁÍÉ ÜÌÅÍÅÎÔÏ× É ÉÍÅÎÁÍÉ ÐÏÌÅÊ ÆÏÒÍ.
+Шаблоны форума представляют собой обыкновенные HTML-файлы.
+В них должны присутствовать элементы с определенными классами и поля
+форм с определенными именами. Скрипты форума вставляют в эти файлы
+информацию руководствуясь классами элементов и именами полей форм.
-ûÁÂÌÏÎÙ ÓÔÒÁÎÉÃ:
+Шаблоны страниц:
-1. óÔÒÁÎÉÃÁ ÔÅÍÙ
+1. Страница темы
-title - × ÜÌÅÍÅÎÔ Ó ÔÁËÉÍ ËÌÁÓÓÏÍ ÐÏÍÅÝÁÅÔÓÑ ÚÁÇÏÌÏ×ÏË ÔÅÍÙ. ôÏÔ ÖÅ
-ÓÁÍÙÊ ÚÁÇÏÌÏ×ÏË ÐÏÍÅÝÁÅÔÓÑ × ÜÌÅÍÅÎÔ <title> × <head>
+title - в элемент с таким классом помещается заголовок темы. Тот же
+самый заголовок помещается в элемент <title> в <head>
-îÁÐÒÉÍÅÒ
- <h1 class="title">ôÅÍÁ ÆÏÒÕÍÁ</H1>
+Например
+ <h1 class="title">Тема форума</H1>
message
- îÁ ÓÔÒÁÎÉÃÅ ÔÅÍÙ ÄÏÌÖÅÎ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ÂÌÏËÏ×ÙÊ ÜÌÅÍÅÎÔ Ó ËÌÁÓÓÏÍ
- message. ðÏÄÓÔÁÎÏ×ËÁ ËÏÎËÒÅÔÎÏÇÏ ÓÏÏÂÝÅÎÉÑ ÐÒÏÉÚ×ÏÄÉÔÓÑ ×ÎÕÔÒØ ÜÔÏÇÏ
- ÜÌÅÍÅÎÔÁ. ðÒÉ ÐÏÑ×ÌÅÎÉÉ × ÔÅÍÅ ÓÌÅÄÕÀÝÅÇÏ ÓÏÏÂÝÅÎÉÑ ÜÔÏÔ ÜÌÅÍÅÎÔ
- ËÏÐÉÒÕÅÔÓÑ É ËÏÐÉÑ ×ÓÔÁ×ÌÑÅÔÓÑ ÓÒÁÚÕ ÐÏÓÌÅ ÐÒÅÄÙÄÕÝÅÇÏ.
-
- üÌÅÍÅÎÔÕ ÐÒÉÐÉÓÙ×ÁÅÔÓÑ ÁÔÒÉÂÕÔ id, ÓÏÄÅÒÖÁÝÉÊ ÕÎÉËÁÌØÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ
- ÄÁÎÎÏÇÏ ÓÏÏÂÝÅÎÉÑ
-
-÷ÎÕÔÒÉ ÜÌÅÍÅÎÔÁ Ó ËÌÁÓÓÏÍ message ÄÏÌÖÎÙ ÓÏÄÅÒÖÁÔØÓÑ ÓÌÅÄÕÀÝÉÅ ÜÌÅÍÅÎÔÙ
-
-manchor - ÑËÏÒØ ÎÁ ËÏÔÏÒÙÊ ÂÕÄÕÔ ÆÏÒÍÉÒÏ×ÁÔØÓÑ ÓÓÙÌËÉ ÎÁ ÜÔÏ ÓÏÏÂÝÅÎÉÅ.
- áÔÒÉÂÕÔ name ÚÁÍÅÎÑÅÔÓÑ ÎÁ ÉÄÅÎÔÉÆÉËÔÁÏÒ ÜÔÏÇÏ ÓÏÏÂÝÅÎÉÑ
-mlink - ÓÓÙÌËÁ ÎÁ ÜÔÏ ÓÏÏÂÝÅÎÉÅ. áÔÒÉÂÕÔ href ÚÁÍÅÎÑÅÔÓÑ ÎÁ
-mauthor - ÎÉË Á×ÔÏÒÁ ÓÏÏÂÝÅÎÉÑ. innerHtml ÚÁÍÅÎÑÅÔÓÑ ÎÁ ÎÉË Á×ÔÏÒÁ
- óÌÅÄÕÅÔ ÕÞÉÔÙ×ÁÔØ ÞÔÏ × ÓÌÕÞÁÅ openId Á×ÔÏÒÉÚÁÃÉÉ × ÜÔÏÔ ÜÌÅÍÅÎÔ
- ÂÕÄÅÔ ÐÏÍÅÝÅÎ ÜÌÅÍÅÎÔ a ÓÏ ÓÓÙÌËÏÊ ÎÁ ÄÏÍÁÛÎÀÀ ÓÔÒÁÎÉÃÕ
-mdate - ÄÁÔÁ ÐÕÂÌÉËÁÃÉÉ ÓÏÏÂÝÅÎÉÑ innerHtml ÚÁÍÅÎÑÅÔÓÑ ÎÁ ÄÁÔÕ
-avatar - ÜÌÅÍÅÎÔ img ÁÔÒÉÂÕÔ src ËÏÔÏÒÏÇÏ ÚÁÍÅÎÉÑÅÔÓÑ ÎÁ Á×ÁÔÁÒ Á×ÔÏÒÁ
-astatus - ÓÔÁÔÕÓ Á×ÔÏÒÁ ÎÁ ÆÏÒÕÍÅ innerHtml ÚÁÍÅÎÑÅÔÓÑ ÎÁ ÓÔÁÔÕÓ
-acomment - ËÏÍÍÅÎÔÁÒÉÊ Ë ÎÉËÕ, ××ÅÄÅÎÎÙÊ Á×ÔÏÒÏÍ ÐÒÉ ÒÅÇÉÓÔÒÁÃÉÉ.
- innerHtml ÚÁÍÅÎÑÅÔÓÑ ÎÁ ËÏÍÍÅÎÔÁÒÉÊ
-msubject - ÔÅÍÁ ÓÏÏÂÝÅÎÉÑ. úÁÍÅÎÑÅÔÓÑ innerHtml
-mtext - ÔÅËÓÔ ÓÏÏÂÝÅÎÉÑ. innerHtml ÚÁÍÅÎÑÅÔÓÑ ÎÁ ÏÔÆÏÒÍÁÔÉÒÏ×ÁÎÎÙÊ ÔÅËÓÔ
-mreply - ÓÓÙÌËÁ ÎÁ ÓËÒÉÐÔ ÏÔ×ÅÔÁ. áÔÒÉÂÕÔ href ÂÕÄÅÔ ÚÁÍÅÎÅÎ ÎÁ
- ËÏÒÒÅËÔÎÕÀ url. üÌÅÍÅÎÔ id ÚÁÍÅÎÑÅÔÓÑ ÎÁ reply<ÉÄÅÎÔÉÆÉËÁÔÏÒ
- ÓÏÏÂÝÅÎÉÑ>
+ На странице темы должен присутствовать блоковый элемент с классом
+ message. Подстановка конкретного сообщения производится внутрь этого
+ элемента. При появлении в теме следующего сообщения этот элемент
+ копируется и копия вставляется сразу после предыдущего.
+
+ Элементу приписывается атрибут id, содержащий уникальный идентификатор
+ данного сообщения
+
+Внутри элемента с классом message должны содержаться следующие элементы
+
+manchor - Ñ\8fкоÑ\80Ñ\8c на коÑ\82оÑ\80Ñ\8bй бÑ\83дÑ\83Ñ\82 Ñ\84оÑ\80миÑ\80оваÑ\82Ñ\8cÑ\81Ñ\8f Ñ\81Ñ\81Ñ\8bлки на Ñ\8dÑ\82о Ñ\81ообÑ\89ение.
+ Атрибут name заменяется на идентификтаор этого сообщения
+mlink - ссылка на это сообщение. Атрибут href заменяется на
+mauthor - ник автора сообщения. innerHtml заменяется на ник автора
+ Следует учитывать что в случае openId авторизации в этот элемент
+ будет помещен элемент a со ссылкой на домашнюю страницу
+mdate - дата публикации сообщения innerHtml заменяется на дату
+avatar - элемент img атрибут src которого заменияется на аватар автора
+astatus - статус автора на форуме innerHtml заменяется на статус
+acomment - комментарий к нику, введенный автором при регистрации.
+ innerHtml заменяется на комментарий
+msubject - тема сообщения. Заменяется innerHtml
+mtext - текст сообщения. innerHtml заменяется на отформатированный текст
+mreply - ссылка на скрипт ответа. Атрибут href будет заменен на
+ корректную url. Элемент id заменяется на reply<идентификатор
+ сообщения>
-îÁÐÒÉÍÅÒ:
+Например:
<div class="message" id="0001">
<a name="00001" class="manchor"></a>
- <h2 class="msubject>ôÅÍÁ ÓÏÏÂÝÅÎÉÑ</h2>
- á×ÔÏÒ <span class="mauthor">÷ ðÕÐËÉÎ</span>
- (<span class="acomment">ðÏÌØÚÏ×ÁÔÅÌØ ÆÏÒÕÍÁ</acomment>,
- <span class"astatus">íÏÄÅÒÁÔÏÒ</span>)
+ <h2 class="msubject>Тема сообщения</h2>
+ Автор <span class="mauthor">В Пупкин</span>
+ (<span class="acomment">Пользователь форума</acomment>,
+ <span class"astatus">Модератор</span>)
<img align=left class=avatar src="/forum/users/v_pupkin.jpg">
<div class="mtext">
- ôÅËÓÔ ÓÏÏÂÝÅÎÉÑ Ó <b>×ÙÄÅÌÅÎÉÑÍÉ</b>
+ Текст сообщения с <b>выделениями</b>
</div>
- <a href="/forum/f1/topic1.html#0001" class="mlink">ÓÓÙÌËÁ ÎÁ ÜÔÏ
- ÓÏÏÂÝÅÎÉÅ</a>
+ <a href="/forum/f1/topic1.html#0001" class="mlink">ссылка на это
+ сообщение</a>
<a href="/cgi-bin/forum/f1/topic1.html?reply=reply&id=0001"
- Ólass="mreply">ÏÔ×ÅÔÉÔØ</a>
+ сlass="mreply">ответить</a>
<form class="actions" name="fa0001" action="/cgi-bin/forum/f1/topic1.html">
- <!-- .... ÓÍ ÎÉÖÅ .... -->
+ <!-- .... см ниже .... -->
<input type="hidden" name="id" value="0001">
- <input type="hidden" name="author" value="÷. ðÕÐËÉÎ">
- <input type="submit" name="edit" value="òÅÄÁËÔÉÒÏ×ÁÔØ">
- <input type="submit" name="delete" value="õÄÁÌÉÔØ">
- <input type="submit" name="move" value="ðÅÒÅÍÅÓÔÉÔØ × ÄÒÕÇÕÀ ÔÅÍÕ">
+ <input type="hidden" name="author" value="В. Пупкин">
+ <input type="submit" name="edit" value="Редактировать">
+ <input type="submit" name="delete" value="Удалить">
+ <input type="submit" name="move" value="Переместить в другую тему">
</form>
</div>
- ëÒÏÍÅ ÔÏÇÏ, × ÜÌÅÍÅÎÔÅ c ËÌÁÓÓÏÍ message ÄÏÌÖÎÁ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ÆÏÒÍÁ
- Ó ËÌÁÓÓÏÍ actions.
- ÷ ÎÅÊ ÄÏÌÖÎÙ ÐÒÉÓÕÔÓ×Ï×ÁÔØ ÓÌÅÄÕÀÝÉÅ ÐÏÌÑ
- 1. óËÒÙÔÏÅ ÐÏÌÅ id
- 2. óËÒÙÔÏÅ ÐÏÌÅ author
- 3. ëÎÏÐËÁ edit
- 4. ëÎÏÐËÁ delete
- 5. ëÎÏÐËÁ move
- 6. ëÎÏÐËÁ reply (ÚÁÍÅÎÑÅÔ ÓÏÂÏÊ ÓÓÙÌËÕ Ó ËÌÁÓÓÏÍ mreply)
+ Кроме того, в элементе c классом message должна присутствовать форма
+ с классом actions.
+ В ней должны присутсвовать следующие поля
+ 1. Скрытое поле id
+ 2. Скрытое поле author
+ 3. Кнопка edit
+ 4. Кнопка delete
+ 5. Кнопка move
+ 6. Кнопка reply (заменяет собой ссылку с классом mreply)
- ëÌÉÅÎÔ-ÓÁÊÄ ÓËÒÉÐÔ ÄÏÌÖÅÎ ÕÍÅÔØ ÓËÒÙ×ÁÔØ ËÎÏÐËÕ move, ÅÓÌÉ ÐÏÌØÚÏ×ÁÔÅÌØ
- ÎÅ Ñ×ÌÑÅÔÓÑ ÍÏÄÅÒÁÔÏÒÏÍ, Á ÔÁËÖÅ ËÎÏÐËÉ edit É delete, ÅÓÌÉ
- ÐÏÌØÚÏ×ÁÔÅÌØ ÎÅ Ñ×ÌÑÅÔÓÑ Á×ÔÏÒÏÍ ÓÏÏÂÝÅÎÉÑ, Ô.Å. ÚÎÁÞÅÎÉÅ ËÕËÉ
- forum_author ÎÅ ÓÏ×ÐÁÄÁÅÔ Ó ÓÏÄÅÒÖÉÍÙÍ ÓËÒÙÔÏÇÏ ÐÏÌÑ author
+ Клиент-сайд скрипт должен уметь скрывать кнопку move, если пользователь
+ не является модератором, а также кнопки edit и delete, если
+ полÑ\8cзоваÑ\82елÑ\8c не Ñ\8fвлÑ\8fеÑ\82Ñ\81Ñ\8f авÑ\82оÑ\80ом Ñ\81ообÑ\89ениÑ\8f, Ñ\82.е. знаÑ\87ение кÑ\83ки
+ forum_author не совпадает с содержимым скрытого поля author
- äÌÑ ÔÏÇÏ ÞÔÏÂÙ ÏÐÒÅÄÅÌÉÔØ, Ñ×ÌÑÅÔÓÑ ÌÉ ÐÏÌØÚÏ×ÁÔÅÌØ ÍÏÄÅÒÁÔÏÒÏÍ ÄÁÎÎÏÊ
- ÓÔÒÁÎÉÃÙ, ÎÕÖÎÏ ×ËÌÀÞÉÔØ × html ÓÌÅÄÕÀÝÉÊ ÜÌÅÍÅÎÔ
- <script src="/cgi-bin/forum/<url ÔÅËÕÝÅÊ ÓÔÒÁÎÉÃÙ>?getrights=1"></script>
- ðÏÌÕÞÅÎÙÊ ÐÏ ÜÔÏÊ url ÓËÒÉÐÔ ×ÙÓÔÁ×ÌÑÅÔ Ä×Å ÇÌÏÂÁÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ
+ Для того чтобы определить, является ли пользователь модератором данной
+ страницы, нужно включить в html следующий элемент
+ <script src="/cgi-bin/forum/<url текущей страницы>?getrights=1"></script>
+ Полученый по этой url скрипт выставляет две глобальные переменные
moderator
- É administrator × ÚÎÁÞÅÎÉÅ true, ÅÓÌÉ ÐÏÌØÚÏ×ÁÔÅÌØ ÉÍÅÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÝÉÅ
- ÐÒÁ×Á ÎÁ ÄÁÎÎÕÀ ÔÅÍÕ É false, ÅÓÌÉ ÎÅ ÉÍÅÅÔ.
- ëÒÏÍÅ ÔÏÇÏ ÜÔÏÔ ÓËÒÉÐÔ ×ÙÓÔÁ×ÌÑÅÔ ÇÌÏÂÁÌØÎÕÀ ÐÅÒÅÍÅÎÎÕÀ author, ËÏÔÏÒÁÑ
- ÉÍÅÅÔ ÚÎÁÞÅÎÉÅ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ Á×ÔÏÒÁ, ÞÔÏ ÉÚÂÁ×ÌÑÅÔ client-side cËÒÉÐÔ
- ÏÔ ÓÁÍÏÓÔÏÑÔÅÌØÎÏÇÏ ÁÎÁÌÉÚÁ cookies.
+ и administrator в значение true, если пользователь имеет соответствущие
+ пÑ\80ава на даннÑ\83Ñ\8e Ñ\82емÑ\83 и false, еÑ\81ли не имееÑ\82.
+ Кроме того этот скрипт выставляет глобальную переменную author, которая
+ имеет значение идентификатора автора, что избавляет client-side cкрипт
+ от самостоятельного анализа cookies.
- íÁÎÉÐÕÌÉÒÏ×ÁÎÉÅ ÆÏÒÍÁÍÉ ÄÏÌÖÎÏ ÐÒÏÉÚ×ÏÄÉÔØÓÑ ÉÚ ÏÂÒÁÂÏÔÞÉËÁ body onLoad
- ÞÔÏÂÙ ÓËÒÉÐÔ getrights ÕÓÐÅÌ ÚÁÇÒÕÚÉÔØÓÑ.
+ Манипулирование формами должно производиться из обработчика body onLoad
+ чтобы скрипт getrights успел загрузиться.
- åÓÌÉ ËÕËÁ FORUM_AUTHOR ÉÌÉ ÇÌÏÂÁÌØÎÁÑ ÐÅÒÅÍÅÎÎÁÑ author ÎÅ ÏÐÒÅÄÅÌÅÎÙ,
- ÔÏ ÖÅÌÁÔÅÌØÎÏ ÔÁËÖÅ ÓËÒÙÔØ ËÎÏÐËÕ reply É ÓÓÙÌËÕ Ó ËÌÁÓÓÏÍ mreply.
+ Если кука FORUM_AUTHOR или глобальная переменная author не определены,
+ то желательно также скрыть кнопку reply и ссылку с классом mreply.
- ëÒÏÍÅ ÔÏÇÏ ÎÁ ÓÔÒÁÎÉÃÅ ÍÏÇÕÔ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ÜÌÅÍÅÎÔÙ a Ó ËÌÁÓÓÁÍÉ
- next É prev. ÷ ÓÌÕÞÁÅ ÅÓÌÉ ÔÅÍÁ ÒÁÚÒÏÓÌÁÓØ ÂÏÌÅÅ ÞÅÍ ÎÁ ÏÄÎÕ ÓÔÒÁÎÉÃÕ,
- ÉÈ href-ÁÔÒÉÂÕÔÙ ÚÁÍÅÎÑÀÔÓÑ ÎÁ ÓÓÙÌËÉ ÎÁ ÐÒÅÄÙÄÕÝÕÀ ÓÌÅÄÕÀÝÕÀ ÓÔÒÁÎÉÃÕ.
- åÓÌÉ ÔÅÍÁ ÓÏÓÔÏÉÔ ÉÚ ÏÄÎÏÊ ÓÔÒÁÎÉÃÙ, ÓÓÙÌËÉ ÂÕÄÕÔ ×ÅÓÔÉ ÎÁ ÎÅ£ ÖÅ.
+ Кроме того на странице могут присутствовать элементы a с классами
+ next и prev. В случае если тема разрослась более чем на одну страницу,
+ их href-атрибуты заменяются на ссылки на предыдущую следующую страницу.
+ Если тема состоит из одной страницы, ссылки будут вести на неё же.
- ëÁË ×ÁÒÉÁÎÔ, ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ËÌÁÓÓÙ bnext É bprev. åÓÌÉ ÎÅÔ
- ÐÒÅÄÙÄÕÝÅÊ/ÓÌÅÄÕÀÝÅÊ ÓÔÒÁÎÉÃÙ, ÜÌÅÍÅÎÔÙ a Ó ÔÁËÉÍÉ ËÌÁÓÓÁÍÉ ÂÕÄÕÔ
- ÚÁÍÅÎÅÎÙ ÎÁ span.
+ Как вариант, можно использовать классы bnext и bprev. Если нет
+ пÑ\80едÑ\8bдÑ\83Ñ\89ей/Ñ\81ледÑ\83Ñ\8eÑ\89ей Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b, Ñ\8dлеменÑ\82Ñ\8b a Ñ\81 Ñ\82акими клаÑ\81Ñ\81ами бÑ\83дÑ\83Ñ\82
+ заменены на span.
-óÔÒÁÎÉÃÁ ÓÐÉÓËÁ ÔÅÍ (ÇÏÌÏ×ÎÁÑ ÓÔÒÁÎÉÃÁ ÆÏÒÕÍÁ)
+Страница списка тем (головная страница форума)
-íÏÖÅÔ ÉÍÅÔØ ÜÌÅÍÅÎÔ Ó ËÌÁÓÓÏÍ message, ÏÐÉÓÙ×ÁÀÝÉÊ ÆÏÒÕÍ × ÃÅÌÏÍ (ÅÇÏ
-ÓÏÚÄÁÔÅÌØ, ××ÏÄÎÙÊ ÔÅËÓÔ É Ô.Ä.
+Может иметь элемент с классом message, описывающий форум в целом (его
+создатель, вводный текст и т.д.
-ûÁÂÌÏÎÏÍ ÏÐÉÓÁÎÉÑ ËÏÎËÒÅÔÎÏÊ ÔÅÍÙ Ñ×ÌÑÅÔÓÑ ÜÌÅÍÅÎÔ Ó ËÌÁÓÓÏÍ topic,
-ÕÓÔÒÏÅÎÎÙÊ ÁÎÁÌÏÇÉÞÎÏ message (ÐÏËÁÚÙ×ÁÅÔÓÑ ÔÅËÓÔ É Á×ÔÏÒ ÐÅÒ×ÏÊ ÒÅÐÌÉËÉ
-ÔÅÍÙ) Ó ÔÏÊ ÒÁÚÎÉÃÅÊ, ÞÔÏ ÜÌÅÍÅÎÔ Ó ËÌÁÓÓÏÍ subject ÄÏÌÖÅÎ ÂÙÔØ ÓÓÙÌËÏÊ.
+Шаблоном описания конкретной темы является элемент с классом topic,
+устроенный аналогично message (показывается текст и автор первой реплики
+темы) с той разницей, что элемент с классом subject должен быть ссылкой.
-÷ÎÕÔÒÉ ÜÌÅÍÅÎÔÁ Ó ËÌÁÓÓÏÍ topic ÄÏÌÖÎÁ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ÆÏÒÍÁ
-Ó ËÎÏÐËÁÍÉ edit delete move setrights É ÓËÒÙÔÙÍ ÐÏÌÅÍ id.
-ëÎÏÐËÕ setrights ÓÌÅÄÕÅÔ ÐÏËÁÚÙ×ÁÔØ ÔÏÌØËÏ ÐÏÌØÚÏ×ÁÔÅÌÀ Ó ÐÒÁ×ÁÍÉ
-ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ.
+Внутри элемента с классом topic должна присутствовать форма
+с кнопками edit delete move setrights и скрытым полем id.
+Кнопку setrights следует показывать только пользователю с правами
+администратора.
-ëÒÏÍÅ ÜÔÏÇÏ, cÔÒÁÎÉÃÁ ÄÏÌÖÎÁ ÉÍÅÔØ ÓÓÙÌËÕ Ó ËÌÁÓÓÏÍ newtopic ÉÌÉ ÆÏÒÍÕ Ó ÉÍÅÎÅÍ
-newtopic É ËÎÏÐËÏÊ submit Ó ÉÍÅÎÅÍ newtopic
+Кроме этого, cтраница должна иметь ссылку с классом newtopic или форму с именем
+newtopic и кнопкой submit с именем newtopic
-óÔÒÁÎÉÃÁ ÓÐÉÓËÁ ÆÏÒÕÍÏ× (ÇÏÌÏ×ÎÁÑ ÓÔÒÁÎÉÃÁ ÓÁÊÔÁ, ÓÔÒÁÎÉÃÁ ÆÏÒÕÍÁ Ó
-ÐÏÄÒÁÚÄÅÌÁÍÉ)
+Страница списка форумов (головная страница сайта, страница форума с
+подÑ\80азделами)
-õÓÔÒÏÅÎÁ ÁÎÁÌÏÇÉÞÎÏ ÓÔÒÁÎÉÃÅ ÓÐÉÓËÁ ÔÅÍ.
+Устроена аналогично странице списка тем.
-üÌÅÍÅÎÔ ÓÐÉÓËÁ ÆÏÒÕÍÏ× ÄÏÌÖÅÎ ÉÍÅÔØ ËÌÁÓÓ forum, Á ÆÏÒÍÁ/ÓÓÙÌËÁ ÄÌÑ
-ÓÏÚÄÁÎÉÑ ÎÏ×ÏÇÏ ÆÏÒÕÍÁ ÓÏÏÔ×ÅÓÔÔ×ÅÎÎÏ ÉÍÑ/ËÌÁÓÓ newforum.
+Элемент списка форумов должен иметь класс forum, а форма/ссылка для
+создания нового форума соотвесттвенно имя/класс newforum.
-äÏÐÕÓËÁÅÔÓÑ ÔÁËÖÅ ÓÉÔÕÁÃÉÑ ËÏÇÄÁ ÎÁ ÏÄÎÏÊ ÓÔÒÁÎÉÃÅ ÐÒÉÓÕÔÓÔ×ÕÅÔ É ÓÐÉÓÏË
-ÆÏÒÕÍÏ×, É ÓÐÉÓÏË ÔÅÍ. (÷ ÜÔÏÍ ÓÌÕÞÁÅ ÅÓÌÉ ÆÉÚÉÞÅÓËÉ ÏÔÓÕÔÓÔ×ÕÀÔ ÌÉÂÏ
-ÔÅ, ÌÉÂÏ ÄÒÕÇÉÅ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÍÕ ÜÌÅÍÅÎÔÕ-ÛÁÂÌÏÎÕ ×ÙÓÔÁ×ÌÑÅÔÓÑ
+Допускается также ситуация когда на одной странице присутствует и список
+форумов, и список тем. (В этом случае если физически отсутствуют либо
+те, либо другие, соответствующему элементу-шаблону выставляется
style="visibility: hidden");
-ëÒÏÍÅ ÜÔÏÇÏ ÎÁ ×ÓÅÈ ÓÔÒÁÎÉÃÁÈ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÉÍÅÔØ ÜÌÅÍÅÎÔ-ÓÓÙÌËÕ, ËÏÔÏÒÙÊ
-ÏÔÏÂÒÁÖÁÅÔ ÔÅËÕÝÅÅ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ. üÔÏÔ ÜÌÅÍÅÎÔ ÄÏÌÖÅÎ
-ËÏÎÆÉÇÕÒÉÒÏ×ÁÔØÓÑ client-side cËÒÉÐÔÏÍ É ÐÏËÁÚÙ×ÁÔØ ÌÉÂÏ ÔÅËÓÔ
-"úÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØÓÑ" É ÁÎÁÌÏÇÉÞÎÙÊ É ×ÅÓÔÉ ÎÁ
-/cgi-bin/forum/<ÁÄÒÅÓ ÔÅËÕÝÅÊ ÓÔÒÁÎÉÃÙ?login=1
-ÌÉÂÏ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ É ×ÅÓÔÉ ÎÁ
-/cgi-bin/forum/<aÄÒÅÓ ÔÅËÕÝÅÊ ÓÔÒÁÎÉÃÙ?user=1
+Кроме этого на всех страницах рекомендуется иметь элемент-ссылку, который
+отображает текущее имя пользователя. Этот элемент должен
+конфигурироваться client-side cкриптом и показывать либо текст
+"Зарегистрироваться" и аналогичный и вести на
+/cgi-bin/forum/<адрес текущей страницы?login=1
+либо имя пользователя и вести на
+/cgi-bin/forum/<aдрес текущей страницы?user=1
-ûÁÂÌÏÎÙ ÓÌÕÖÅÂÎÙÈ ÓÔÒÁÎÉÃ (Ô.Å. ÆÏÒÍ ÒÅÇÉÓÔÒÁÃÉÉ, ÌÏÇÉÎÁ É Ô.Ä.)
+Шаблоны служебных страниц (т.е. форм регистрации, логина и т.д.)
-óÌÕÖÅÂÎÙÅ ÓÔÒÁÎÉÃÙ ÆÏÒÕÍÁ (Ô.Å. ÆÏÒÍÙ, ×Ù×ÏÄÉÍÙÅ ÓËÒÉÐÔÁÍÉ) ÔÁËÖÅ
-ÏÆÏÒÍÌÑÀÔÓÑ Ó ÐÏÍÏÝØÀ HTML-ÛÁÂÌÏÎÏ×. åÓÌÉ ÓÔÒÁÎÉÃÁ ×ÙÄÁÅÔÓÑ × ÒÅÚÕÌØÔÁÔÅ
-POST-ÚÁÐÒÏÓÁ ÕÖÅ ÓÏÄÅÒÖÁÝÅÇÏ ÔÒÅÂÕÅÍÙÅ ÄÁÎÎÙÅ, ÚÎÁÞÅÎÉÑ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ
-ÜÌÅÍÅÎÔÏ× ××ÏÄÁ ÚÁÍÅÎÑÀÔÓÑ ÎÁ ÜÔÉ ÄÁÎÎÙÅ.
+Служебные страницы форума (т.е. формы, выводимые скриптами) также
+оформляются с помощью HTML-шаблонов. Если страница выдается в результате
+POST-запроса уже содержащего требуемые данные, значения соответствующих
+элементов ввода заменяются на эти данные.
-÷ ÓÌÕÞÁÅ ÅÓÌÉ ×Ï ××ÅÄÅÎÎÙÈ ÄÁÎÎÙÈ ÐÒÏÉÚÏÛÌÁ ÏÛÉÂËÁ, ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ
-ÓËÒÉÐÔ ×ÐÉÓÙ×ÁÅÔ × ÜÌÅÍÅÎÔ Ó ËÌÁÓÓÏÍ errmsg ×ÍÅÓÔÏ ÅÇÏ innerHtml
+В случае если во введенных данных произошла ошибка, сообщение об ошибке
+скрипт вписывает в элемент с классом errmsg вместо его innerHtml
-ëÁË ÐÒÁ×ÉÌÏ, ×ÓÅ ÓËÒÉÐÔÙ ÐÏÌÕÞÁÀÔ ÓÌÅÄÕÀÝÕÀ ÉÎÆÏÒÍÁÃÉÀ
-1. ðÏÌÅ Ó ÉÍÅÎÅÍ ÏÐÅÒÁÃÉÉ É ÐÒÏÉÚ×ÏÌØÎÙÍ ÎÅÐÕÓÔÙÍ ÚÎÁÞÅÎÉÅÍ
- ÷ÏÚÍÏÖÎÙÅ ÏÐÅÒÁÃÉÉ
+Как правило, все скрипты получают следующую информацию
+1. Поле с именем операции и произвольным непустым значением
+ Возможные операции
reply
edit
delete
setrights
-2. ðÏÌÅ id Ó ÉÄÅÎÔÉÆÉËÁÔÏÒÏÍ ËÏÍÍÅÎÔÁÒÉÑ/ÔÅÍÙ/ÆÏÒÕÍÁ
+2. Поле id с идентификатором комментария/темы/форума
-üÔÏ ÐÏÌÅ ÄÏÌÖÎÏ ÂÙÔØ ÏÂÑÚÁÔÅÌØÎÏ ÐÒÏÂÒÏÛÅÎÏ ÞÅÒÅÚ ÆÏÒÍÕ ËÁË ÓËÒÙÔÏÅ
-ÐÏÌÅ.
+Это поле должно быть обязательно проброшено через форму как скрытое
+поле.
-3. ðÏÌÅ returnto - url ËÕÄÁ ÎÁÐÒÁ×ÉÔØ ÐÏÌØÚÏ×ÁÔÅÌÑ ÐÏÓÌÅ ÕÓÐÅÛÎÏÇÏ
-ÚÁ×ÅÒÛÅÎÉÑ ÏÐÅÒÁÃÉÉ. åÓÌÉ ÜÔÁ ÆÏÒÍÁ ÐÒÉÓÕÔÓÔ×ÕÅÔ × ÛÁÂÌÏÎÅ, ÎÏ ÓËÒÉÐÔ
-×ÙÚÙ×ÁÅÔÓÑ ÂÅÚ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÚÎÁÞÅÎÉÑ × url ÉÌÉ postdata, ÜÔÏ ÐÏÌÅ
-ÚÁÐÏÌÎÑÅÔÓÑ ÚÎÁÞÅÎÉÅÍ ÚÁÇÏÌÏ×ËÁ referer http-ÚÁÐÒÏÓÁ.
+3. Поле returnto - url куда направить пользователя после успешного
+завершения операции. Если эта форма присутствует в шаблоне, но скрипт
+вызывается без соответствующего значения в url или postdata, это поле
+заполняется значением заголовка referer http-запроса.
- óËÒÉÐÔ ÒÅÇÉÓÔÒÁÃÉÉ (ÏÐÅÒÁÃÉÑ login)
- æÏÒÍÁ Ó ÉÍÅÎÅÍ login ÓÏÄÅÒÖÉÔ ÐÏÌÑ name É password
- íÏÖÅÔ ÔÁËÖÅ ÓÏÄÅÒÖÁÔØ checkbox Ó ÉÍÅÎÅÍ ipbind (ÐÒÉ×ÑÚËÁ
- Á×ÔÏÒÉÚÁÃÉÏÎÎÏÊ ËÕËÉ Ë IP)
+ Скрипт регистрации (операция login)
+ Форма с именем login содержит поля name и password
+ Может также содержать checkbox с именем ipbind (привязка
+ авторизационной куки к IP)
- (OpenID ÐÏËÁ ÎÅ ÏÐÉÓÙ×ÁÅÍ)
+ (OpenID пока не опиÑ\81Ñ\8bваем)
- ëÎÏÐËÁ submit ÎÁÚÙ×ÁÅÔÓÑ login
+ Кнопка submit называется login
- æÏÒÍÁ ÒÅÇÉÓÔÒÁÃÉÉ ÎÏ×ÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ (ÏÐÅÒÁÃÉÑ register, ÆÏÒÍÁ Ó
- ÉÍÅÎÅÍ register)
- óÏÄÅÒÖÉÔ ÐÏÌÑ name
+ Форма регистрации нового пользователя (операция register, форма с
+ именем register)
+ Содержит поля name
password password2 comment avatar (file upload field)
email
- íÏÖÅÔ ÔÁËÖÅ ÓÏÄÅÒÖÁÔØ ÌÀÂÙÅ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÏÌÑ ÉÎÆÏÒÍÁÃÉÉ Ï
- ÐÏÌØÚÏ×ÁÔÅÌÅ (ËÒÏÍÅ ÐÏÌÑ status). ïÎÉ ÂÕÄÕÔ ÓÏÈÒÁÎÅÎÙ × ÓÐÉÓËÅ ÐÏÌØÚÏ×ÁÔÅÌÅÊ
- É ÍÏÇÕÔ ÐÏÔÏÍ ×Ù×ÏÄÉÔØÓÑ × ÛÁÂÌÏÎÁÈ ÒÑÄÏÍ Ó ÉÎÆÏÒÍÁÃÉÅÊ Ï Á×ÔÏÒÅ.
+ Может также содержать любые дополнительные поля информации о
+ полÑ\8cзоваÑ\82еле (кÑ\80оме полÑ\8f status). Ð\9eни бÑ\83дÑ\83Ñ\82 Ñ\81оÑ\85Ñ\80аненÑ\8b в Ñ\81пиÑ\81ке полÑ\8cзоваÑ\82елей
+ и могут потом выводиться в шаблонах рядом с информацией об авторе.
-óËÒÉÐÔ ÏÔÐÒÁ×ËÉ ËÏÍÍÅÎÔÁÒÉÑ
+Скрипт отправки комментария
- ÐÏÌÑ subject text (ÔÜÇ textarea)
- íÏÖÎÏ ÔÁËÖÅ ×ËÌÀÞÁÔØ (ÄÉÎÁÍÉÞÅÓËÉ ÄÏÂÁ×ÌÑÔØ) ÐÏÌÑ file upload image1
+ полÑ\8f subject text (Ñ\82Ñ\8dг textarea)
+ Можно также включать (динамически добавлять) поля file upload image1
image2 etc.
- ËÎÏÐËÁ submit ÎÁÚÙ×ÁÅÔÓÑ reply
+ кнопка submit называется reply
-óËÒÉÐÔ ÓÏÚÄÁÎÉÑ ÎÏ×ÏÊ ÔÅÍÙ ÉÌÉ ÎÏ×ÏÇÏ ÆÏÒÕÍÁ
+Скрипт создания новой темы или нового форума
- ÐÏÌÑ subject text imageN É urlname. ÷ ÐÏÓÌÅÄÎÅÅ ÐÏÌÅ ÓÌÅÄÕÅÔ ÚÁÐÒÅÔÉÔØ
- ××ÏÄ ÓÉÍ×ÏÌÏ× ÎÅÌÁÔÉÎÓËÏÇÏ ÁÌÆÁ×ÉÔÁ '/' É '?'
-
-CËÒÉÐÔ ÐÒÏÓÍÏÔÒÁ ÓÐÉÓËÁ ÐÏÌØÚÏ×ÁÔÅÌÅÊ (ÏÐÃÉÑ userlist)
-
- üÌÅÍÅÎÔ Ó ËÌÁÓÓÏÍ user ÓÏÄÅÒÖÉÔ ÜÌÅÍÅÎÔÙ Ó ËÌÁÓÓÁÍÉ, ÉÍÅÎÁ ËÏÔÏÒÙÈ
- ÓÏÏÔ×ÅÔÓÔ×ÕÀÔ ÉÍÅÎÁÍ Ó×ÏÊÓÔ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ.
- åÓÌÉ ×ÎÕÔÒÉ ÜÌÅÍÅÎÔÁ ÐÒÉÓÕÔÓÔ×ÕÅÔ ÜÌÅÍÅÎÔ Ó ËÌÁÓÓÏÍ formoder ÉÌÉ
- foradmin, ÔÏ ÐÒÉ ÐÒÏÓÍÏÔÒÅ ÓÔÒÁÎÉÃÙ ÐÏÌØÚÏ×ÁÔÅÌÅÍ, ÎÅ ÉÍÅÀÝÉÍ
- ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÐÒÁ×, ÜÔÏÔ ËÕÓÏË ×ÙËÕÓÙ×ÁÅÔÓÑ ÎÁ ÓÅÒ×ÅÒÅ.
- äÏÌÖÅÎ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ÜÌÅÍÅÎÔ ÉÍÅÎÅÍ profile ÉÍÅÀÝÉÊ ÔÉÐ a.
- åÇÏ ÁÔÒÉÂÕÔ href ÚÁÍÅÎÑÅÔÓÑ ÎÁ ÓÓÙÌËÕ ÎÁ ÓËÒÉÐÔ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ
- ÐÒÏÆÁÊÌÁ. æÏÒÍ ÜÔÏÔ ÛÁÂÌÏÎ ×ÏÏÂÝÅ ÎÅ ÓÏÄÅÒÖÉÔ
-
-óËÒÉÐÔ ÒÁÚÄÁÞÉ ÐÒÁ× ÍÏÄÅÒÉÒÏ×ÁÎÉÑ (setrights)
-
- äÁÅÔ ÐÒÁ×Á ÍÏÄÅÒÁÔÏÒÏ× ÎÁ ÏÐÒÅÄÅÌÅÎÎÙÊ ÆÏÒÕÍ/ÔÅÍÕ, ÉÌÉ ÐÒÁ×Á
- ÁÄÍÉÎÉÓÔÒÁÔÏÒÏ×.
-
- ÷ ÒÅÚÕÌØÔÁÔÅ ÚÁÐÏÌÎÅÎÉÑ ÆÏÒÍÙ ÐÏÌÅ Ó ÉÍÅÎÅÍ moderators ÄÏÌÖÎÏ
- ÓÏÄÅÒÖÁÔØ ÓÐÉÓÏË ÍÏÄÅÒÁÔÏÒÏ× ÄÌÑ ÄÁÎÎÏÊ ÔÅÍÙ (ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ
- url ÓÔÒÁÎÉÃÙ id) ÐÏÌÅ Ó ÉÍÅÎÅÍ administrators ÓÐÉÓÏË ×ÓÅÈ
- ÁÄÍÉÎÉÓÔÒÁÔÏÒÏ× ÄÁÎÎÏÇÏ ÓÁÊÔÁ.
-
-óËÒÉÐÔ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ Ó×ÏÊÓÔ× ÐÏÌØÚÏ×ÁÔÅÌÑ.
- áÎÁÌÏÇÉÞÅÎ ÓËÒÉÐÔÕ ÒÅÇÉÓÔÒÁÃÉÉ, ÎÏ ÁÄÍÉÎÉÓÔÒÁÔÏÒÕ ÅÝÅ ×ÉÄÎÏ ÐÏÌÅ
- status. (ÐÏÌØÚÏ×ÁÔÅÌÀ - ÔÏÖÅ ×ÉÄÎÏ, ÎÏ input ÉÌÉ select ÚÁÍÅÎÑÅÔÓÑ ÎÁ
- ÏÂÙÞÎÙÊ ÔÅËÓÔ)
+ полÑ\8f subject text imageN и urlname. Ð\92 поÑ\81леднее поле Ñ\81ледÑ\83еÑ\82 запÑ\80еÑ\82иÑ\82Ñ\8c
+ ввод символов нелатинского алфавита '/' и '?'
+
+Cкрипт просмотра списка пользователей (опция userlist)
+
+ Элемент с классом user содержит элементы с классами, имена которых
+ соответствуют именам свойств пользователей.
+ Если внутри элемента присутствует элемент с классом formoder или
+ foradmin, то при просмотре страницы пользователем, не имеющим
+ соответствующих прав, этот кусок выкусывается на сервере.
+ Должен присутствовать элемент именем profile имеющий тип a.
+ Его атрибут href заменяется на ссылку на скрипт редактирования
+ пÑ\80оÑ\84айла. ФоÑ\80м Ñ\8dÑ\82оÑ\82 Ñ\88аблон вообÑ\89е не Ñ\81одеÑ\80жиÑ\82
+
+Скрипт раздачи прав модерирования (setrights)
+
+ Дает права модераторов на определенный форум/тему, или права
+ администраторов.
+
+ В результате заполнения формы поле с именем moderators должно
+ содержать список модераторов для данной темы (соответствующей
+ url страницы id) поле с именем administrators список всех
+ администраторов данного сайта.
+
+Скрипт редактирования свойств пользователя.
+ Аналогичен скрипту регистрации, но администратору еще видно поле
+ status. (полÑ\8cзоваÑ\82елÑ\8e - Ñ\82оже видно, но input или select заменÑ\8fеÑ\82Ñ\81Ñ\8f на
+ обычный текст)
- íÏÖÅÔ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ËÎÏÐËÁ resetpassword (ÐÏËÁÚÙ×ÁÅÔÓÑ ÔÏÌØËÏ
- ÁÄÍÉÎÉÓÔÒÁÔÏÒÁÍ)
+ Может присутствовать кнопка resetpassword (показывается только
+ администраторам)
-÷ÓÔÒÁÉ×ÁÎÉÅ ÓÌÕÖÅÂÎÙÈ ÆÏÒÍ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ × ÓÔÒÁÎÉÃÙ ÆÏÒÕÍÁ
+Встраивание служебных форм непосредственно в страницы форума
- æÏÒÍÁ, ÓÏÄÅÒÖÁÝÁÑ ×ÙÛÅÐÅÒÅÞÉÌÅÎÎÙÅ ÐÏÌÑ, ÉÍÅÀÝÁÑ ÍÅÔÏÄ POST É ÉÍÅÀÝÁÑ × ÐÏÌÅ
- action="/cgi-bin/forum/<url ÓÔÒÁÎÉÃÙ, ÇÄÅ ÏÎÁ ÒÁÚÍÅÝÅÎÁ)
- ÍÏÖÅÔ ÂÙÔØ ×ÓÔÒÏÅÎÁ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ × ÓÔÒÁÎÉÃÕ ÔÅÍÙ ÉÌÉ ÓÐÉÓËÁ
- ÔÅÍ/ÓÐÉÓËÁ ÆÏÒÕÍÏ×. öÅÌÁÔÅÌØÎÏ ÞÔÏÂÙ ÏÎÁ ÄÅÌÁÌÁÓØ ×ÉÄÉÍÏÊ ÔÏÌØËÏ ÐÒÉ
- ÎÁÖÁÔÉÉ ËÎÏÐËÉ. ïÔÐÒÁ×ËÁ ÜÔÏÊ ÆÏÒÍÙ ÐÒÉ×ÏÄÉÔ Ë ×ÙÐÏÌÎÅÎÉÀ ÎÅÏÂÈÏÄÉÍÏÇÏ
- ÄÅÊÓÔ×ÉÑ ÂÅÚ ÐÏËÁÚÁ ÓÔÒÁÎÉÃÙ ÓËÒÉÐÔÁ.
+ Форма, содержащая вышеперечиленные поля, имеющая метод POST и имеющая в поле
+ action="/cgi-bin/forum/<url страницы, где она размещена)
+ может быть встроена непосредственно в страницу темы или списка
+ тем/списка форумов. Желательно чтобы она делалась видимой только при
+ нажатии кнопки. Отправка этой формы приводит к выполнению необходимого
+ действия без показа страницы скрипта.