X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=doc%2Ftemplates.txt;h=bc3b56f8bc85ecfdfc0c1821154d95e849dcd82d;hb=72f28e20daf17094faf0ff40a35c0a458a94902e;hp=751797da1db9bb48ea90922873e73579bc706421;hpb=99b953577eeee6b383165e19befcd10d1dce2ffc;p=oss%2Fstilllife.git diff --git a/doc/templates.txt b/doc/templates.txt index 751797d..bc3b56f 100644 --- a/doc/templates.txt +++ b/doc/templates.txt @@ -1,171 +1,203 @@ -ïÐÉÓÁÎÉÅ ÛÁÂÌÏÎÏ× ÆÏÒÕÍÁ +Описание шаблонов форума -ûÁÂÌÏÎÙ ÆÏÒÕÍÁ ÐÒÅÄÓÔÁ×ÌÑÀÔ ÓÏÂÏÊ ÏÂÙËÎÏ×ÅÎÎÙÅ HTML-ÆÁÊÌÙ. -÷ ÎÉÈ ÄÏÌÖÎÙ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ÜÌÅÍÅÎÔÙ Ó ÏÐÒÅÄÅÌÅÎÎÙÍÉ ËÌÁÓÓÁÍÉ É ÐÏÌÑ -ÆÏÒÍ Ó ÏÐÒÅÄÅÌÅÎÎÙÍÉ ÉÍÅÎÁÍÉ. óËÒÉÐÔÙ ÆÏÒÕÍÁ ×ÓÔÁ×ÌÑÀÔ × ÜÔÉ ÆÁÊÌÙ -ÉÎÆÏÒÍÁÃÉÀ ÒÕËÏ×ÏÄÓÔ×ÕÑÓØ ËÌÁÓÓÁÍÉ ÜÌÅÍÅÎÔÏ× É ÉÍÅÎÁÍÉ ÐÏÌÅÊ ÆÏÒÍ. +Шаблоны форума представляют собой обыкновенные 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 - × ÜÌÅÍÅÎÔ Ó ÔÁËÉÍ ËÌÁÓÓÏÍ ÐÏÍÅÝÁÅÔÓÑ ÚÁÇÏÌÏ×ÏË ÔÅÍÙ. ôÏÔ ÖÅ -ÓÁÍÙÊ ÚÁÇÏÌÏ×ÏË ÐÏÍÅÝÁÅÔÓÑ × ÜÌÅÍÅÎÔ × <head> +Шаблоны страниц: -îÁÐÒÉÍÅÒ - <h1 class="title">ôÅÍÁ ÆÏÒÕÍÁ</H1> +1. Страница темы + +title - в элемент с таким классом помещается заголовок темы. Тот же +самый заголовок помещается в элемент <title> в <head> + +Например + <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 - якорь на который будут формироваться ссылки на это сообщение. + Атрибут 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<идентификатор + сообщения> -îÁÐÒÉÍÅÒ: +Например: <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, если + пользователь не является автором сообщения, т.е. значение куки + sluser не совпадает с содержимым скрытого поля author + Определять какие кнопки и ссылки являются ссылками на форумный скрипт + и должны скрываться и показываться в зависимости от прав доступа, + следует по атрибуту href ссылки и атрибуту action формы в сочетании с + атрибутом name у соответствующей кнопки. (кнопкой считаются input + type=submit и input type=image). + В разделе head у шаблона должен присутствовать тэг link вида + <link href="forum" rel="forum-script"> + По общим правилам подстановки серверный скрипт при обработке шаблона + заменит href этого элемента на собственную url. + Соответственно формы с action равной этой URL следует рассматривать + как подлежащие обработке и искать в них кнопки с именами, + соответствующими именам операций. И ссылки с href=эта url?параметры + В ссылке следует искать параметр вида имя-операции. - ëÌÉÅÎÔ-ÓÁÊÄ ÓËÒÉÐÔ ÄÏÌÖÅÎ ÕÍÅÔØ ÓËÒÙ×ÁÔØ ËÎÏÐËÕ move, ÅÓÌÉ ÐÏÌØÚÏ×ÁÔÅÌØ - ÎÅ Ñ×ÌÑÅÔÓÑ ÍÏÄÅÒÁÔÏÒÏÍ, Á ÔÁËÖÅ ËÎÏÐËÉ edit É delete, ÅÓÌÉ - ÐÏÌØÚÏ×ÁÔÅÌØ ÎÅ Ñ×ÌÑÅÔÓÑ Á×ÔÏÒÏÍ ÓÏÏÂÝÅÎÉÑ, Ô.Å. ÚÎÁÞÅÎÉÅ ËÕËÉ - forum_author ÎÅ ÓÏ×ÐÁÄÁÅÔ Ó ÓÏÄÅÒÖÉÍÙÍ ÓËÒÙÔÏÇÏ ÐÏÌÑ author + Для того чтобы узнать является ли текущий пользователь модератором + данного форума, нужно запросить с сервера (через XmlHttpRequest) + файл .moderators лежащий рядом с текущим файлом и далее вверх по + иерархии. Эти файлы представляют собой простые текстовые файлы с именем + пользователя в каждой строке. - äÌÑ ÔÏÇÏ ÞÔÏÂÙ ÏÐÒÅÄÅÌÉÔØ, Ñ×ÌÑÅÔÓÑ ÌÉ ÐÏÌØÚÏ×ÁÔÅÌØ ÍÏÄÅÒÁÔÏÒÏÍ ÄÁÎÎÏÊ - ÓÔÒÁÎÉÃÙ, ÎÕÖÎÏ ×ËÌÀÞÉÔØ × html ÓÌÅÄÕÀÝÉÊ ÜÌÅÍÅÎÔ - <script src="/cgi-bin/forum/<url ÔÅËÕÝÅÊ ÓÔÒÁÎÉÃÙ>?getrights=1"></script> - ðÏÌÕÞÅÎÙÊ ÐÏ ÜÔÏÊ url ÓËÒÉÐÔ ×ÙÓÔÁ×ÌÑÅÔ Ä×Å ÇÌÏÂÁÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ - moderator - É administrator × ÚÎÁÞÅÎÉÅ true, ÅÓÌÉ ÐÏÌØÚÏ×ÁÔÅÌØ ÉÍÅÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÝÉÅ - ÐÒÁ×Á ÎÁ ÄÁÎÎÕÀ ÔÅÍÕ É false, ÅÓÌÉ ÎÅ ÉÍÅÅÔ. - ëÒÏÍÅ ÔÏÇÏ ÜÔÏÔ ÓËÒÉÐÔ ×ÙÓÔÁ×ÌÑÅÔ ÇÌÏÂÁÌØÎÕÀ ÐÅÒÅÍÅÎÎÕÀ author, ËÏÔÏÒÁÑ - ÉÍÅÅÔ ÚÎÁÞÅÎÉÅ ÉÄÅÎÔÉÆÉËÁÔÏÒÁ Á×ÔÏÒÁ, ÞÔÏ ÉÚÂÁ×ÌÑÅÔ client-side cËÒÉÐÔ - ÏÔ ÓÁÍÏÓÔÏÑÔÅÌØÎÏÇÏ ÁÎÁÌÉÚÁ cookies. + В корне форума имеется аналогичный файл .admins. - íÁÎÉÐÕÌÉÒÏ×ÁÎÉÅ ÆÏÒÍÁÍÉ ÄÏÌÖÎÏ ÐÒÏÉÚ×ÏÄÉÔØÓÑ ÉÚ ÏÂÒÁÂÏÔÞÉËÁ body onLoad - ÞÔÏÂÙ ÓËÒÉÐÔ getrights ÕÓÐÅÌ ÚÁÇÒÕÚÉÔØÓÑ. + Можно также запросить файл .banned. - åÓÌÉ ËÕËÁ FORUM_AUTHOR ÉÌÉ ÇÌÏÂÁÌØÎÁÑ ÐÅÒÅÍÅÎÎÁÑ author ÎÅ ÏÐÒÅÄÅÌÅÎÙ, - ÔÏ ÖÅÌÁÔÅÌØÎÏ ÔÁËÖÅ ÓËÒÙÔØ ËÎÏÐËÕ reply É ÓÓÙÌËÕ Ó ËÌÁÓÓÏÍ mreply. + Все эти действия являются необязательными. Если на клиентской стороне + они не будут выполнены и у пользователя появится возможность нажать на + кнопку выполнения операции, на которую у него нет прав, операция будет + заблокирована на сервере. - ëÒÏÍÅ ÔÏÇÏ ÎÁ ÓÔÒÁÎÉÃÅ ÍÏÇÕÔ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ÜÌÅÍÅÎÔÙ a Ó ËÌÁÓÓÁÍÉ - next É prev. ÷ ÓÌÕÞÁÅ ÅÓÌÉ ÔÅÍÁ ÒÁÚÒÏÓÌÁÓØ ÂÏÌÅÅ ÞÅÍ ÎÁ ÏÄÎÕ ÓÔÒÁÎÉÃÕ, - ÉÈ href-ÁÔÒÉÂÕÔÙ ÚÁÍÅÎÑÀÔÓÑ ÎÁ ÓÓÙÌËÉ ÎÁ ÐÒÅÄÙÄÕÝÕÀ ÓÌÅÄÕÀÝÕÀ ÓÔÒÁÎÉÃÕ. - åÓÌÉ ÔÅÍÁ ÓÏÓÔÏÉÔ ÉÚ ÏÄÎÏÊ ÓÔÒÁÎÉÃÙ, ÓÓÙÌËÉ ÂÕÄÕÔ ×ÅÓÔÉ ÎÁ ÎÅ£ ÖÅ. + - ëÁË ×ÁÒÉÁÎÔ, ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ËÌÁÓÓÙ bnext É bprev. åÓÌÉ ÎÅÔ - ÐÒÅÄÙÄÕÝÅÊ/ÓÌÅÄÕÀÝÅÊ ÓÔÒÁÎÉÃÙ, ÜÌÅÍÅÎÔÙ a Ó ÔÁËÉÍÉ ËÌÁÓÓÁÍÉ ÂÕÄÕÔ - ÚÁÍÅÎÅÎÙ ÎÁ span. + Если кука sluser не определена, + то желательно также скрыть кнопку reply и ссылку с классом mreply. -óÔÒÁÎÉÃÁ ÓÐÉÓËÁ ÔÅÍ (ÇÏÌÏ×ÎÁÑ ÓÔÒÁÎÉÃÁ ÆÏÒÕÍÁ) + Кроме того на странице могут присутствовать элементы a с классами + next и prev. В случае если тема разрослась более чем на одну страницу, + их href-атрибуты заменяются на ссылки на предыдущую следующую страницу. + Если тема состоит из одной страницы, ссылки будут вести на неё же. -íÏÖÅÔ ÉÍÅÔØ ÜÌÅÍÅÎÔ Ó ËÌÁÓÓÏÍ message, ÏÐÉÓÙ×ÁÀÝÉÊ ÆÏÒÕÍ × ÃÅÌÏÍ (ÅÇÏ -ÓÏÚÄÁÔÅÌØ, ××ÏÄÎÙÊ ÔÅËÓÔ É Ô.Ä. + Как вариант, можно использовать классы bnext и bprev. Если нет + предыдущей/следующей страницы, элементы a с такими классами будут + заменены на span. -ûÁÂÌÏÎÏÍ ÏÐÉÓÁÎÉÑ ËÏÎËÒÅÔÎÏÊ ÔÅÍÙ Ñ×ÌÑÅÔÓÑ ÜÌÅÍÅÎÔ Ó ËÌÁÓÓÏÍ topic, -ÕÓÔÒÏÅÎÎÙÊ ÁÎÁÌÏÇÉÞÎÏ message (ÐÏËÁÚÙ×ÁÅÔÓÑ ÔÅËÓÔ É Á×ÔÏÒ ÐÅÒ×ÏÊ ÒÅÐÌÉËÉ -ÔÅÍÙ) Ó ÔÏÊ ÒÁÚÎÉÃÅÊ, ÞÔÏ ÜÌÅÍÅÎÔ Ó ËÌÁÓÓÏÍ subject ÄÏÌÖÅÎ ÂÙÔØ ÓÓÙÌËÏÊ. +Страница списка тем (головная страница форума) -÷ÎÕÔÒÉ ÜÌÅÍÅÎÔÁ Ó ËÌÁÓÓÏÍ topic ÄÏÌÖÎÁ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ÆÏÒÍÁ -Ó ËÎÏÐËÁÍÉ edit delete move setrights É ÓËÒÙÔÙÍ ÐÏÌÅÍ id. -ëÎÏÐËÕ setrights ÓÌÅÄÕÅÔ ÐÏËÁÚÙ×ÁÔØ ÔÏÌØËÏ ÐÏÌØÚÏ×ÁÔÅÌÀ Ó ÐÒÁ×ÁÍÉ -ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ. +Может иметь элемент с классом message, описывающий форум в целом (его +создатель, вводный текст и т.д. +Шаблоном описания конкретной темы является элемент с классом topic, +устроенный аналогично message (показывается текст и автор первой реплики +темы) с той разницей, что элемент с классом subject должен быть ссылкой. -ëÒÏÍÅ ÜÔÏÇÏ, cÔÒÁÎÉÃÁ ÄÏÌÖÎÁ ÉÍÅÔØ ÓÓÙÌËÕ Ó ËÌÁÓÓÏÍ newtopic ÉÌÉ ÆÏÒÍÕ Ó ÉÍÅÎÅÍ -newtopic É ËÎÏÐËÏÊ submit Ó ÉÍÅÎÅÍ newtopic +Внутри элемента с классом topic должна присутствовать форма +с кнопками edit delete move setrights и скрытым полем id. +Кнопку setrights следует показывать только пользователю с правами +администратора. -óÔÒÁÎÉÃÁ ÓÐÉÓËÁ ÆÏÒÕÍÏ× (ÇÏÌÏ×ÎÁÑ ÓÔÒÁÎÉÃÁ ÓÁÊÔÁ, ÓÔÒÁÎÉÃÁ ÆÏÒÕÍÁ Ó -ÐÏÄÒÁÚÄÅÌÁÍÉ) +Кроме этого, cтраница должна иметь ссылку с классом newtopic или форму с именем +newtopic и кнопкой submit с именем newtopic -õÓÔÒÏÅÎÁ ÁÎÁÌÏÇÉÞÎÏ ÓÔÒÁÎÉÃÅ ÓÐÉÓËÁ ÔÅÍ. -üÌÅÍÅÎÔ ÓÐÉÓËÁ ÆÏÒÕÍÏ× ÄÏÌÖÅÎ ÉÍÅÔØ ËÌÁÓÓ 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 +В случае если во введенных данных произошла ошибка, сообщение об ошибке +скрипт вписывает в элемент с классом error вместо его innerHtml -ëÁË ÐÒÁ×ÉÌÏ, ×ÓÅ ÓËÒÉÐÔÙ ÐÏÌÕÞÁÀÔ ÓÌÅÄÕÀÝÕÀ ÉÎÆÏÒÍÁÃÉÀ -1. ðÏÌÅ Ó ÉÍÅÎÅÍ ÏÐÅÒÁÃÉÉ É ÐÒÏÉÚ×ÏÌØÎÙÍ ÎÅÐÕÓÔÙÍ ÚÎÁÞÅÎÉÅÍ - ÷ÏÚÍÏÖÎÙÅ ÏÐÅÒÁÃÉÉ +Во всем шаблоне формы производится подстановка информации о текущем +пользователе, аналогично тому, как она производится в элементе с классом +message в шаблоне темы. + +Как правило, все скрипты получают следующую информацию +1. Поле с именем операции и произвольным непустым значением + Возможные операции reply edit delete @@ -180,81 +212,94 @@ POST- setrights -2. ðÏÌÅ id Ó ÉÄÅÎÔÉÆÉËÁÔÏÒÏÍ ËÏÍÍÅÎÔÁÒÉÑ/ÔÅÍÙ/ÆÏÒÕÍÁ - -üÔÏ ÐÏÌÅ ÄÏÌÖÎÏ ÂÙÔØ ÏÂÑÚÁÔÅÌØÎÏ ÐÒÏÂÒÏÛÅÎÏ ÞÅÒÅÚ ÆÏÒÍÕ ËÁË ÓËÒÙÔÏÅ -ÐÏÌÅ. - -3. ðÏÌÅ returnto - url ËÕÄÁ ÎÁÐÒÁ×ÉÔØ ÐÏÌØÚÏ×ÁÔÅÌÑ ÐÏÓÌÅ ÕÓÐÅÛÎÏÇÏ -ÚÁ×ÅÒÛÅÎÉÑ ÏÐÅÒÁÃÉÉ. åÓÌÉ ÜÔÁ ÆÏÒÍÁ ÐÒÉÓÕÔÓÔ×ÕÅÔ × ÛÁÂÌÏÎÅ, ÎÏ ÓËÒÉÐÔ -×ÙÚÙ×ÁÅÔÓÑ ÂÅÚ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÚÎÁÞÅÎÉÑ × url ÉÌÉ postdata, ÜÔÏ ÐÏÌÅ -ÚÁÐÏÌÎÑÅÔÓÑ ÚÎÁÞÅÎÉÅÍ ÚÁÇÏÌÏ×ËÁ referer http-ÚÁÐÒÏÓÁ. - - óËÒÉÐÔ ÒÅÇÉÓÔÒÁÃÉÉ (ÏÐÅÒÁÃÉÑ login) - æÏÒÍÁ Ó ÉÍÅÎÅÍ login ÓÏÄÅÒÖÉÔ ÐÏÌÑ name É password - íÏÖÅÔ ÔÁËÖÅ ÓÏÄÅÒÖÁÔØ checkbox Ó ÉÍÅÎÅÍ ipbind (ÐÒÉ×ÑÚËÁ - Á×ÔÏÒÉÚÁÃÉÏÎÎÏÊ ËÕËÉ Ë IP) - - (OpenID ÐÏËÁ ÎÅ ÏÐÉÓÙ×ÁÅÍ) - - ëÎÏÐËÁ submit ÎÁÚÙ×ÁÅÔÓÑ login - - æÏÒÍÁ ÒÅÇÉÓÔÒÁÃÉÉ ÎÏ×ÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ (ÏÐÅÒÁÃÉÑ register, ÆÏÒÍÁ Ó - ÉÍÅÎÅÍ register) - óÏÄÅÒÖÉÔ ÐÏÌÑ name - password password2 comment avatar (file upload field) - email - íÏÖÅÔ ÔÁËÖÅ ÓÏÄÅÒÖÁÔØ ÌÀÂÙÅ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÏÌÑ ÉÎÆÏÒÍÁÃÉÉ Ï - ÐÏÌØÚÏ×ÁÔÅÌÅ (ËÒÏÍÅ ÐÏÌÑ status). ïÎÉ ÂÕÄÕÔ ÓÏÈÒÁÎÅÎÙ × ÓÐÉÓËÅ ÐÏÌØÚÏ×ÁÔÅÌÅÊ - É ÍÏÇÕÔ ÐÏÔÏÍ ×Ù×ÏÄÉÔØÓÑ × ÛÁÂÌÏÎÁÈ ÒÑÄÏÍ Ó ÉÎÆÏÒÍÁÃÉÅÊ Ï Á×ÔÏÒÅ. - -óËÒÉÐÔ ÏÔÐÒÁ×ËÉ ËÏÍÍÅÎÔÁÒÉÑ +2. Поле id с идентификатором комментария/темы/форума + +Это поле должно быть обязательно проброшено через форму как скрытое +поле. + +3. Поле returnto - url куда направить пользователя после успешного +завершения операции. Если эта форма присутствует в шаблоне, но скрипт +вызывается без соответствующего значения в url или postdata, это поле +заполняется значением заголовка referer http-запроса. + + Скрипт регистрации (операция login) + Форма с именем login содержит поля name и password + Может также содержать checkbox с именем ipbind (привязка + авторизационной куки к IP) + + (OpenID пока не описываем) + + Кнопка submit называется login + + Форма регистрации нового пользователя (операция register, форма с + именем register) + Содержит поля user + pass1 pass2 comment + avatar (поле ввода URL) или avatarfile(file upload field) + email + Может также содержать любые дополнительные поля информации о + пользователе (кроме поля status). Они будут сохранены в списке пользователей + и могут потом выводиться в шаблонах рядом с информацией об авторе. + Скрытое поле required содержит список полей, которые обязательно + требуются при регистрации. Поля user, pass1 и pass2 туда включать не + следует. + Скрытое поле ignore содержит список полей, которые НЕ НУЖНО + сохранять в качестве информации о пользователе. + +Скрипт отправки комментария - ÐÏÌÑ subject text (ÔÜÇ textarea) - íÏÖÎÏ ÔÁËÖÅ ×ËÌÀÞÁÔØ (ÄÉÎÁÍÉÞÅÓËÉ ÄÏÂÁ×ÌÑÔØ) ÐÏÌÑ file upload image1 + поля subject text (тэг 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 ÚÁÍÅÎÑÅÔÓÑ ÎÁ - ÏÂÙÞÎÙÊ ÔÅËÓÔ) + поля subject text imageN и urlname. В последнее поле следует запретить + ввод символов нелатинского алфавита '/' и '?' + +Cкрипт просмотра списка пользователей (опция userlist) + + Элемент с классом user содержит элементы с классами, имена которых + соответствуют именам свойств пользователей. + Если внутри элемента присутствует элемент с классом formoder или + foradmin, то при просмотре страницы пользователем, не имеющим + соответствующих прав, этот кусок выкусывается на сервере. + Должен присутствовать элемент именем profile имеющий тип a. + Его атрибут href заменяется на ссылку на скрипт редактирования + профайла. Форм этот шаблон вообще не содержит + +Скрипт раздачи прав модерирования (setrights) + + Дает права модераторов на определенный форум/тему, или права + администраторов. + + В результате заполнения формы поле с именем moderators должно + содержать список модераторов для данной темы (соответствующей + url страницы id) поле с именем administrators список всех + администраторов данного сайта. + +Скрипт редактирования свойств пользователя. + Аналогичен скрипту регистрации, но администратору еще видно поле + status. (пользователю - тоже видно, но input или select заменяется на + обычный текст) - íÏÖÅÔ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ËÎÏÐËÁ resetpassword (ÐÏËÁÚÙ×ÁÅÔÓÑ ÔÏÌØËÏ - ÁÄÍÉÎÉÓÔÒÁÔÏÒÁÍ) + Может присутствовать кнопка resetpassword (показывается только + администраторам) + + +Встраивание служебных форм непосредственно в страницы форума + Форма, содержащая вышеперечиленные поля, имеющая метод POST и имеющая в поле + action="forum/<url страницы, где она размещена) + может быть встроена непосредственно в страницу темы или списка + тем/списка форумов. Желательно чтобы она делалась видимой только при + нажатии кнопки. Отправка этой формы приводит к выполнению необходимого + действия без показа страницы скрипта. -÷ÓÔÒÁÉ×ÁÎÉÅ ÓÌÕÖÅÂÎÙÈ ÆÏÒÍ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ × ÓÔÒÁÎÉÃÙ ÆÏÒÕÍÁ +Служебные шаблоны - æÏÒÍÁ, ÓÏÄÅÒÖÁÝÁÑ ×ÙÛÅÐÅÒÅÞÉÌÅÎÎÙÅ ÐÏÌÑ, ÉÍÅÀÝÁÑ ÍÅÔÏÄ POST É ÉÍÅÀÝÁÑ × ÐÏÌÅ - action="/cgi-bin/forum/<url ÓÔÒÁÎÉÃÙ, ÇÄÅ ÏÎÁ ÒÁÚÍÅÝÅÎÁ) - ÍÏÖÅÔ ÂÙÔØ ×ÓÔÒÏÅÎÁ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ × ÓÔÒÁÎÉÃÕ ÔÅÍÙ ÉÌÉ ÓÐÉÓËÁ - ÔÅÍ/ÓÐÉÓËÁ ÆÏÒÕÍÏ×. öÅÌÁÔÅÌØÎÏ ÞÔÏÂÙ ÏÎÁ ÄÅÌÁÌÁÓØ ×ÉÄÉÍÏÊ ÔÏÌØËÏ ÐÒÉ - ÎÁÖÁÔÉÉ ËÎÏÐËÉ. ïÔÐÒÁ×ËÁ ÜÔÏÊ ÆÏÒÍÙ ÐÒÉ×ÏÄÉÔ Ë ×ÙÐÏÌÎÅÎÉÀ ÎÅÏÂÈÏÄÉÍÏÇÏ - ÄÅÊÓÔ×ÉÑ ÂÅÚ ÐÏËÁÚÁ ÓÔÒÁÎÉÃÙ ÓËÒÉÐÔÁ. +Шаблон с именем error.html используется для выдачи фатальных ошибок +скрипта. (когда нет возможности показать форму). Он должен содержать +элемент с классом error, innerHTML которого будет заменен на сообщение +об ошибке.