X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=doc%2Ftemplates.txt;h=a9952445328a2f14fbdd5036778fd9ac12d5d4a7;hb=7b8c6e94eb769b0fe9f8ed52f0c35a9937f9f402;hp=52e662be8a5972b8c86945a812b22ec9ef9b0531;hpb=fba9edc7881c5311224fcc9899336afcef7ece94;p=oss%2Fstilllife.git diff --git a/doc/templates.txt b/doc/templates.txt index 52e662b..a995244 100644 --- a/doc/templates.txt +++ b/doc/templates.txt @@ -14,6 +14,7 @@ img src, a href, link href, form action. форума. Cсылки вида forum?параметры будут заменены на url-скрипта/url-страницы?параметры + Шаблоны страниц: 1. Страница темы @@ -42,10 +43,17 @@ author - ник автора сообщения. innerHtml заменяется Следует учитывать что в случае openId авторизации в этот элемент будет помещен элемент a со ссылкой на домашнюю страницу mdate - дата публикации сообщения innerHtml заменяется на дату -avatar - элемент img атрибут src которого заменияется на аватар автора -astatus - статус автора на форуме innerHtml заменяется на статус -acomment - комментарий к нику, введенный автором при регистрации. +avatar - элемент img атрибут src которого заменияется на аватар автора, + или на templates/1x1.gif если у автора нет аватара. +ap-status - статус автора на форуме innerHtml заменяется на статус +ap-comment - комментарий к нику, введенный автором при регистрации. innerHtml заменяется на комментарий +И прочие классы с префиксом ap-, innerHtml которых заменяеняется +на соответствущие поля из профайла автора. Если поле имеет в имени +подчерк, допустимо вместо подчерка использовать дефис "-" в названии +класа. + + msubject - тема сообщения. Заменяется innerHtml mtext - текст сообщения. innerHtml заменяется на отформатированный текст mreply - ссылка на скрипт ответа. Атрибут href будет заменен на @@ -92,28 +100,46 @@ mreply - ссылка на скрипт ответа. Атрибут href буд Клиент-сайд скрипт должен уметь скрывать кнопку move, если пользователь не является модератором, а также кнопки edit и delete, если - пользователь не является автором сообщения, т.е. значение куки - sluser не совпадает с содержимым скрытого поля author + пользователь не является модератором или автором сообщения(т.е. значение куки + sluser не совпадает с содержимым скрытого поля author) - Для того чтобы узнать является ли текущий пользователь модератором - данного форума, нужно запросить с сервера (через XmlHttpRequest) - файл .moderators лежащий рядом с текущим файлом и далее вверх по - иерархии. Эти файлы представляют собой простые текстовые файлы с именем - пользователя в каждой строке. - В корне форума имеется аналогичный файл .admins. + Определять какие кнопки и ссылки являются ссылками на форумный скрипт + и должны скрываться и показываться в зависимости от прав доступа, + следует по атрибуту 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, + совпрадающей с именем пользователя. - Можно также запросить файл .banned. - Все эти действия являются необязательными. Если на клиентской стороне - они не будут выполнены и у пользователя появится возможность нажать на - кнопку выполнения операции, на которую у него нет прав, операция будет - заблокирована на сервере. - Если кука sluser не определена, - то желательно также скрыть кнопку reply и ссылку с классом mreply. + то желательно также скрыть кнопку reply и ссылку с классом mreply, если + только в шаблоне формы reply не предусмотрены поля, позволяющие + залогиниться в момент отправки реплики. + + Для получения информации о правах текущего пользователя в форуме нужно + запросить (через XMLHttpRequest) файл perms.txt из текущей директории + (где расположена текущая страница) и выше по иерархии вплоть до корня + форма. Корнем форума является директория, где расположен файл .forum + (не обязательно доступный для чтения по http. Ответ сервера 403 как и + ответ 200 надо рассматривать как "файл найден") Кроме того на странице могут присутствовать элементы a с классами next и prev. В случае если тема разрослась более чем на одну страницу, @@ -126,12 +152,21 @@ mreply - ссылка на скрипт ответа. Атрибут href буд Страница списка тем (головная страница форума) -Может иметь элемент с классом message, описывающий форум в целом (его -создатель, вводный текст и т.д. +Может иметь элемент с классом annotation, описывающий форум в целом (его +создатель, вводный текст и т.д. устроенный внутри аналогично элементу +списка форумов (см ниже). Если в шаблоне присутствует элемент meta +name="description", то туда помещается текстовое представление аннотации +форума. + +Если в шаблоне присутствуют элементы с классом top-page, то они будут +сохранены только на головной странице форума, а при создании подфорумов +будут из их оглавлений удаляться. Шаблоном описания конкретной темы является элемент с классом topic, -устроенный аналогично message (показывается текст и автор первой реплики -темы) с той разницей, что элемент с классом subject должен быть ссылкой. +Содержащий элемент с классом title (название темы, должно быть +ссылкой), abstract (аннотация темы) +author (ссылка), date (дата создания темы), tlink (якорь для ссылок на +элемент списка тем ), last-updated и msgcount. Внутри элемента с классом topic должна присутствовать форма с кнопками edit delete move setrights и скрытым полем id. @@ -139,22 +174,37 @@ mreply - ссылка на скрипт ответа. Атрибут href буд администратора. -Кроме этого, cтраница должна иметь ссылку с классом newtopic или форму с именем -newtopic и кнопкой submit с именем newtopic + +элемент с классом topic должен быть заключен в элемент с классом +topiclist. + +При отсутствии тем на странице элементу с классом topiclist сервер +приписывает атрибут style="display: none;". + +При добавлении новой темы элемент с классом topic копируется и +вставляется непосредственно за предыдущим -Страница списка форумов (головная страница сайта, страница форума с -подразделами) +Кроме этого, cтраница должна иметь ссылку на форумный скрипт с +параметром newtopic=1 или форму с именем +topicinfo и кнопкой submit с именем newtopic -Устроена аналогично странице списка тем. +Список подфорумов устроен аналогично списку тем. Элемент списка форумов должен иметь класс forum, а форма/ссылка для -создания нового форума соотвесттвенно имя/класс newforum. +создания нового форума соотвесттвенно имя/класс newforum, а объемлющий +элемент, который скрывается при отсутствии подфорумов - класс forumlist + +В шаблоне элемента списка форумов может присутствовать элемент img +с классом logo. Если такой элемент обнаружен, то при наличии в +директории форума файла logo с расширением png, jpg или gif, в src +пропиcывается ссылка на этот файл. Иначе прописывается ссылка на +templates/1x1.gif Допускается также ситуация когда на одной странице присутствует и список форумов, и список тем. (В этом случае если физически отсутствуют либо те, либо другие, соответствующему элементу-шаблону выставляется -style="visibility: hidden"); +style="display: none"); Кроме этого на всех страницах рекомендуется иметь элемент-ссылку, который отображает текущее имя пользователя. Этот элемент должен @@ -205,12 +255,39 @@ message в шаблоне темы. вызывается без соответствующего значения в url или postdata, это поле заполняется значением заголовка referer http-запроса. - Скрипт регистрации (операция login) +Обработка форматированного (размеченного) текста: + +В некоторые поля форм (текст реплики, подпись пользователя) должен +вводиться форматированный текст. + +Такому полю должно соответствовать поле с именим имя_format (например, +полю text соотвествует поле text_format, полю signature - +signature_format). Поле format может принимать одно из трех значений +- html, bbcode и text. Если поле format имеет значение html, то +содержимое соответствующего текстового поля рассматривается как html, +подвергается чистке от небезопасных тэгов и сохраняется в таком виде. +Если поле format имеет значение text, то спецсимволя эскейпятся, а +переводы строки заменяются на теги
. + +Если поле имеет значение bbcode, то обрабатываются управляющие +последовательности bbcode. + +Наличие URL в тексте проверяется независимо от формата. + + + Скрипт входа в систему (операция login) Форма с именем login содержит поля name и password - Может также содержать checkbox с именем ipbind (привязка + Может также содержать checkbox с именем bindip (привязка авторизационной куки к IP) - (OpenID пока не описываем) + При авторизации по OpenID используется поле openidsite. + Его значение интерпретируется как шаблон для операции sprintf, который + должен содержать один спецификатор формата %s, куда подставляется имя + пользователя. + + Если поле openidsite имеет пустое значение, пользователь + рассматривается как локальный. Если непустое, то как + openid-пользователь. Кнопка submit называется login @@ -218,27 +295,77 @@ message в шаблоне темы. именем register) Содержит поля user pass1 pass2 comment - avatar (поле ввода URL) или avatarfile(file upload field) - email Может также содержать любые дополнительные поля информации о - пользователе (кроме поля status). Они будут сохранены в списке пользователей + пользователе. Они будут сохранены в списке пользователей и могут потом выводиться в шаблонах рядом с информацией об авторе. Скрытое поле required содержит список полей, которые обязательно требуются при регистрации. Поля user, pass1 и pass2 туда включать не следует. Скрытое поле ignore содержит список полей, которые НЕ НУЖНО - сохранять в качестве информации о пользователе. + сохранять в качестве информации о пользователе. Поля user, pass1, pass2 + и bindip туда включать не нужно. Так же если в форме присутствуют поля + avatar и avatarfile, поле avatarfile будет автоматически включено в + этот список, а поле avatar при наличии зааплоаженного файла будет + заменено на URL к этому файлу. + + Параметр restricted_userinfo в конфигурационном файле форума позволяет + задать список полей, которые пользователь не имеет права редактировать + сам, все равно в процессе регистрации или при редактировании профиля. + + Поля, которые, при их наличии, обрабатываются скриптом форума + специальным образом + + 1. avatar/avatarfile - картинка пользователя. Поле avatarfile + (зааплоаженная картинка) имеет приоритет над avatar (внешняя URL) + В случае если задано avatarfile, в информации о пользователе + сохраняется поле avatar с URL к этой картинке + + 2. signature - обычно поле с форматированным текстом. Дописывается в + конец каждого созданного данным пользователем сообщения + + 3. email - если не пусто, то проверяется на корректность посредством + модуля EMail::Valid + + 4. status - если имеет значение disabled, то данному пользователю + запрещен вход на форум до тех пор, пока администратор форума не изменит + статус. В случае, если требуется подтверждение регистрации модератором + рекомендуется прописывать это поле в restricted_user_info и указывать в + конфигурациии форума default_status = disabled, Скрипт отправки комментария - поля subject text (тэг textarea) +Операция reply + поля subject + text (тэг textarea) + text_format Можно также включать (динамически добавлять) поля file upload image1 image2 etc. - кнопка submit называется reply + кнопка submit называется reply. + Данная форма может также включать поля формы login. Т.е. + поддерживается аутентификация пользователя одновременно с отправкой + комментария. + + В силу технических ограничений, одновременно с регистрацией по OpenID + невозможен upload файлов и отправка комментариев длинной более 2-4Кб. + Точный предел размера комментария зависит от длины URL форума и + пределов размера URL, установленных при компиляции веб-сервера форума + и веб-сервера openid-сервера. + Скрипт создания новой темы или нового форума - поля subject text imageN и urlname. В последнее поле следует запретить + поля + subject + text + text_format + urlname. + При создании форума еще может присутствовать file upload field + logo. Зааплоаженный туда файл помещается в директрию форума + с именем logo и расширением соответствующим расширению исходного + файла. + + + В последнее поле следует запретить ввод символов нелатинского алфавита '/' и '?' Cкрипт просмотра списка пользователей (опция userlist) @@ -259,7 +386,7 @@ Cкрипт просмотра списка пользователей (опци В результате заполнения формы поле с именем moderators должно содержать список модераторов для данной темы (соответствующей - url страницы id) поле с именем administrators список всех + url страницы в pathinfo) поле с именем administrators список всех администраторов данного сайта. Скрипт редактирования свойств пользователя.