From: Victor Wagner Date: Fri, 11 Jan 2008 09:39:13 +0000 (+0000) Subject: Fixed encoding of text files. Everything is now utf-8 X-Git-Url: http://wagner.pp.ru/gitweb/?a=commitdiff_plain;h=b8f8fa46b1cd7be84af361f8df7d7de9bccea09e;p=oss%2Fstilllife.git Fixed encoding of text files. Everything is now utf-8 --- diff --git a/doc/manifest.txt b/doc/manifest.txt index 77161de..e83e6a0 100644 --- a/doc/manifest.txt +++ b/doc/manifest.txt @@ -1,16 +1,16 @@ -ïÓÎÏ×ÎÏÊ ÐÒÉÎÃÉÐ StillLife - ÎÅ ÕÍÎÏÖÁÔØ ÓÕÝÎÏÓÔÅÊ. +Основной принцип StillLife - не умножать сущностей. -ëÁË ÄÌÑ ÓÉÓÔÅÍÎÏÇÏ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ, ÔÁË É ÄÌÑ ÒÁÚÒÁÂÏÔÞÉËÁ ÛÁÂÌÏÎÁ. -ðÒÏ ËÁÖÄÙÊ ËÕÓÏË ËÏÄÁ, ×ËÌÀÞÁÅÍÙÊ × ÐÒÏÅËÔ ÍÙ ÄÏÌÖÎÙ ÉÍÅÔØ ×ÏÚÍÏÖÎÏÓÔØ -ÞÅÔËÏ ÓËÁÚÁÔØ ÚÁÞÅÍ ÏÎ ÔÁÍ ÎÕÖÅÎ. +Как для системного администратора, так и для разработчика шаблона. +Про каждый кусок кода, включаемый в проект мы должны иметь возможность +четко сказать зачем он там нужен. -ðÏ ×ÏÚÍÏÖÎÏÓÔÉ ÍÙ ÓÔÁÒÁÅÍÓÑ ÔÁËÖÅ ÉÚÂÅÖÁÔØ ÚÁÓÔÁ×ÌÅÎÉÑ ÐÏÌØÚÏ×ÁÔÅÌÓÑ (× -ÓÍÙÓÌÅ ×ÌÁÄÅÌØÃÁ ÆÏÒÕÍÁ) ÉÚÕÞÁÔØ ÎÏ×ÙÅ ËÏÎÃÅÐÃÉÉ. +По возможности мы стараемся также избежать заставления пользователся (в +смысле владельца форума) изучать новые концепции. -ðÏÜÔÏÍÕ, ÎÁÐÒÉÍÅÒ., Õ ÎÁÓ ÎÅÔ ÑÚÙËÁ ÛÁÂÌÏÎÏ×. äÉÚÁÊÎÅÒ ÛÁÂÌÏÎÏ× ×Ó£ -ÒÁ×ÎÏ ÄÏÌÖÎÅÎ ÚÈÎÁÔØ HTML, ÚÎÁÞÉÔ ÛÁÂÌÏÎ ÄÏÌÖÅÎ ÐÒÅÄÓÔÁ×ÌÑÔØ ÉÚ ÓÅÂÑ -×ÁÌÉÄÎÙÊ HTML, Á ÄÌÑ ÅÇÏ ÏÂÒÁÂÏÔËÉ server-side ÍÙ ÂÕÄÅÍ ÉÓÐÏÌØÚÏ×ÁÔØ -DOM, ÐÏÈÏÖÉÊ ÎÁ ÔÏÔ, ÞÔÏ ÉÓÐÏÌØÚÕÅÔÓÑ × ÂÒÁÕÚÅÒÅ. +Поэтому, например., у нас нет языка шаблонов. Дизайнер шаблонов всё +равно должнен зхнать HTML, значит шаблон должен представлять из себя +валидный HTML, а для его обработки server-side мы будем использовать +DOM, похожий на тот, что используется в браузере. F diff --git a/doc/templates.txt b/doc/templates.txt index 751797d..6a0302c 100644 --- a/doc/templates.txt +++ b/doc/templates.txt @@ -1,171 +1,171 @@ -ïÐÉÓÁÎÉÅ ÛÁÂÌÏÎÏ× ÆÏÒÕÍÁ +Описание шаблонов форума -ûÁÂÌÏÎÙ ÆÏÒÕÍÁ ÐÒÅÄÓÔÁ×ÌÑÀÔ ÓÏÂÏÊ ÏÂÙËÎÏ×ÅÎÎÙÅ HTML-ÆÁÊÌÙ. -÷ ÎÉÈ ÄÏÌÖÎÙ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ÜÌÅÍÅÎÔÙ Ó ÏÐÒÅÄÅÌÅÎÎÙÍÉ ËÌÁÓÓÁÍÉ É ÐÏÌÑ -ÆÏÒÍ Ó ÏÐÒÅÄÅÌÅÎÎÙÍÉ ÉÍÅÎÁÍÉ. óËÒÉÐÔÙ ÆÏÒÕÍÁ ×ÓÔÁ×ÌÑÀÔ × ÜÔÉ ÆÁÊÌÙ -ÉÎÆÏÒÍÁÃÉÀ ÒÕËÏ×ÏÄÓÔ×ÕÑÓØ ËÌÁÓÓÁÍÉ ÜÌÅÍÅÎÔÏ× É ÉÍÅÎÁÍÉ ÐÏÌÅÊ ÆÏÒÍ. +Шаблоны форума представляют собой обыкновенные HTML-файлы. +В них должны присутствовать элементы с определенными классами и поля +форм с определенными именами. Скрипты форума вставляют в эти файлы +информацию руководствуясь классами элементов и именами полей форм. -ûÁÂÌÏÎÙ ÓÔÒÁÎÉÃ: +Шаблоны страниц: -1. óÔÒÁÎÉÃÁ ÔÅÍÙ +1. Страница темы -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 - якорь на который будут формироваться ссылки на это сообщение. + Атрибут 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, если + пользователь не является автором сообщения, т.е. значение куки + 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, если пользователь имеет соответствущие + права на данную тему и false, если не имеет. + Кроме того этот скрипт выставляет глобальную переменную 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. Если нет + предыдущей/следующей страницы, элементы a с такими классами будут + заменены на 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 -óÔÒÁÎÉÃÁ ÓÐÉÓËÁ ÆÏÒÕÍÏ× (ÇÏÌÏ×ÎÁÑ ÓÔÒÁÎÉÃÁ ÓÁÊÔÁ, ÓÔÒÁÎÉÃÁ ÆÏÒÕÍÁ Ó -ÐÏÄÒÁÚÄÅÌÁÍÉ) +Страница списка форумов (головная страница сайта, страница форума с +подразделами) -õÓÔÒÏÅÎÁ ÁÎÁÌÏÇÉÞÎÏ ÓÔÒÁÎÉÃÅ ÓÐÉÓËÁ ÔÅÍ. +Устроена аналогично странице списка тем. -üÌÅÍÅÎÔ ÓÐÉÓËÁ ÆÏÒÕÍÏ× ÄÏÌÖÅÎ ÉÍÅÔØ ËÌÁÓÓ 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 @@ -180,81 +180,81 @@ POST- 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 пока не описываем) - ëÎÏÐËÁ submit ÎÁÚÙ×ÁÅÔÓÑ login + Кнопка submit называется login - æÏÒÍÁ ÒÅÇÉÓÔÒÁÃÉÉ ÎÏ×ÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ (ÏÐÅÒÁÃÉÑ register, ÆÏÒÍÁ Ó - ÉÍÅÎÅÍ register) - óÏÄÅÒÖÉÔ ÐÏÌÑ name + Форма регистрации нового пользователя (операция register, форма с + именем register) + Содержит поля name password password2 comment avatar (file upload field) email - íÏÖÅÔ ÔÁËÖÅ ÓÏÄÅÒÖÁÔØ ÌÀÂÙÅ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÏÌÑ ÉÎÆÏÒÍÁÃÉÉ Ï - ÐÏÌØÚÏ×ÁÔÅÌÅ (ËÒÏÍÅ ÐÏÌÑ status). ïÎÉ ÂÕÄÕÔ ÓÏÈÒÁÎÅÎÙ × ÓÐÉÓËÅ ÐÏÌØÚÏ×ÁÔÅÌÅÊ - É ÍÏÇÕÔ ÐÏÔÏÍ ×Ù×ÏÄÉÔØÓÑ × ÛÁÂÌÏÎÁÈ ÒÑÄÏÍ Ó ÉÎÆÏÒÍÁÃÉÅÊ Ï Á×ÔÏÒÅ. + Может также содержать любые дополнительные поля информации о + пользователе (кроме поля status). Они будут сохранены в списке пользователей + и могут потом выводиться в шаблонах рядом с информацией об авторе. -óËÒÉÐÔ ÏÔÐÒÁ×ËÉ ËÏÍÍÅÎÔÁÒÉÑ +Скрипт отправки комментария - ÐÏÌÑ 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="/cgi-bin/forum/<url ÓÔÒÁÎÉÃÙ, ÇÄÅ ÏÎÁ ÒÁÚÍÅÝÅÎÁ) - ÍÏÖÅÔ ÂÙÔØ ×ÓÔÒÏÅÎÁ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ × ÓÔÒÁÎÉÃÕ ÔÅÍÙ ÉÌÉ ÓÐÉÓËÁ - ÔÅÍ/ÓÐÉÓËÁ ÆÏÒÕÍÏ×. öÅÌÁÔÅÌØÎÏ ÞÔÏÂÙ ÏÎÁ ÄÅÌÁÌÁÓØ ×ÉÄÉÍÏÊ ÔÏÌØËÏ ÐÒÉ - ÎÁÖÁÔÉÉ ËÎÏÐËÉ. ïÔÐÒÁ×ËÁ ÜÔÏÊ ÆÏÒÍÙ ÐÒÉ×ÏÄÉÔ Ë ×ÙÐÏÌÎÅÎÉÀ ÎÅÏÂÈÏÄÉÍÏÇÏ - ÄÅÊÓÔ×ÉÑ ÂÅÚ ÐÏËÁÚÁ ÓÔÒÁÎÉÃÙ ÓËÒÉÐÔÁ. + Форма, содержащая вышеперечиленные поля, имеющая метод POST и имеющая в поле + action="/cgi-bin/forum/<url страницы, где она размещена) + может быть встроена непосредственно в страницу темы или списка + тем/списка форумов. Желательно чтобы она делалась видимой только при + нажатии кнопки. Отправка этой формы приводит к выполнению необходимого + действия без показа страницы скрипта.