]> www.wagner.pp.ru Git - oss/stilllife.git/blobdiff - doc/templates.txt
*** empty log message ***
[oss/stilllife.git] / doc / templates.txt
index 6a0302c592fdfcef83f29d474a77933f2eba716c..d9ba674334e1fa6fd0b268ce5ac55d9f03411cc7 100644 (file)
@@ -5,6 +5,16 @@
 форм с определенными именами. Скрипты форума вставляют в эти файлы
 информацию руководствуясь классами элементов и именами полей форм.
 
+Во всех шаблонах производится правка относительных URL в элементах
+img src, a href, link href, form action.
+В URL начинающихся со слова templates заменяются на значение templateurl
+из конфигурации форума, URL, начинающиеся со слова users - на userurl,
+со слова forum - на путь к скрипту форума. Остальные относительные (т.е.
+не начинающиеся c http: или / url дополняются путем к корневому каталогу
+форума. Cсылки вида forum?параметры будут заменены на 
+url-скрипта/url-страницы?параметры
+
+
 Шаблоны страниц:
 
 1. Страница темы
@@ -29,7 +39,7 @@ message
 manchor - якорь на который будут формироваться ссылки на это сообщение.
                Атрибут name заменяется на идентификтаор этого сообщения
 mlink - ссылка на это сообщение. Атрибут href заменяется на
-mauthor - ник автора сообщения. innerHtml заменяется на ник автора
+author - ник автора сообщения. innerHtml заменяется на ник автора
                Следует учитывать что в случае openId авторизации в этот элемент
                будет помещен элемент a со ссылкой на домашнюю страницу 
 mdate  - дата публикации сообщения  innerHtml заменяется на дату
@@ -83,26 +93,46 @@ mreply - ссылка на скрипт ответа. Атрибут href буд
 
  Клиент-сайд скрипт должен уметь скрывать кнопку move, если пользователь
  не является модератором, а также кнопки edit и delete, если
- пользователь не является автором сообщения, т.е. значение куки
- forum_author не совпадает с содержимым скрытого поля author
+ пользователь не является модератором или автором сообщения(т.е. значение куки
+ sluser не совпадает с содержимым скрытого поля author)
+
+
+ Определять какие кнопки и ссылки являются ссылками на  форумный скрипт
+ и должны скрываться и показываться в зависимости от прав доступа,
+ следует по атрибуту href ссылки и атрибуту action формы в сочетании с
+ атрибутом name у соответствующей кнопки. (кнопкой считаются input
+ type=submit и input type=image).
 
+ В разделе head у шаблона должны присутствовать тэги link вида
+1. <link href="forum" rel="forum-script">
+ По общим правилам подстановки серверный скрипт при обработке шаблона
+ заменит href этого элемента на собственную url.
 
- Ð\94лÑ\8f Ñ\82ого Ñ\87Ñ\82обÑ\8b Ð¾Ð¿Ñ\80еделиÑ\82Ñ\8c, Ñ\8fвлÑ\8fеÑ\82Ñ\81Ñ\8f Ð»Ð¸ Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8c Ð¼Ð¾Ð´ÐµÑ\80аÑ\82оÑ\80ом Ð´Ð°Ð½Ð½Ð¾Ð¹
- страницы, нужно включить в html следующий элемент
- <script src="/cgi-bin/forum/<url текущей страницы>?getrights=1"></script>
- Ð\9fолÑ\83Ñ\87енÑ\8bй Ð¿Ð¾ Ñ\8dÑ\82ой url Ñ\81кÑ\80ипÑ\82 Ð²Ñ\8bÑ\81Ñ\82авлÑ\8fеÑ\82 Ð´Ð²Ðµ Ð³Ð»Ð¾Ð±Ð°Ð»Ñ\8cнÑ\8bе Ð¿ÐµÑ\80еменнÑ\8bе
- moderator
- и administrator в значение true, если пользователь имеет соответствущие
- права на данную тему и false, если не имеет.
- Кроме того этот скрипт выставляет глобальную переменную author, которая
- имеет значение идентификатора автора, что избавляет client-side cкрипт
от самостоятельного анализа cookies.
+ Ð¡Ð¾Ð¾Ñ\82веÑ\82Ñ\81Ñ\82венно Ñ\84оÑ\80мÑ\8b Ñ\81 action Ñ\80авной Ñ\8dÑ\82ой URL Ñ\81ледÑ\83еÑ\82 Ñ\80аÑ\81Ñ\81маÑ\82Ñ\80иваÑ\82Ñ\8c
+ как подлежащие обработке и искать в них кнопки с именами,
+ соответствующими именам операций. И ссылки с href=эта url?параметры
+ Ð\92 Ñ\81Ñ\81Ñ\8bлке Ñ\81ледÑ\83еÑ\82 Ð¸Ñ\81каÑ\82Ñ\8c Ð¿Ð°Ñ\80амеÑ\82Ñ\80 Ð²Ð¸Ð´Ð° Ð¸Ð¼Ñ\8f-опеÑ\80аÑ\86ии. 
+2. <link href="forum" rel="forum-user-list">
+       Содержимое href этого скрипта может быть использовано client-side
+       скриптом для формирования ссылки на страничку локального
+       пользователя форума (в случае если имя пользователя начинается с
+       http:://, это OpenID-пользователь и его страничка находстия по URL,
      совпрадающей с именем пользователя.
 
- Манипулирование формами должно производиться из обработчика body onLoad
- чтобы скрипт getrights успел загрузиться.
 
- Если кука FORUM_AUTHOR или глобальная переменная author не определены,
- то желательно также скрыть кнопку reply и ссылку с классом mreply.
+
+
+ Если кука sluser не определена,
+ то желательно также скрыть кнопку reply и ссылку с классом mreply, если
+ только в шаблоне формы reply не предусмотрены поля, позволяющие
+ залогиниться в момент отправки реплики.
+
+ Для получения информации о правах текущего пользователя в форуме нужно
+ запросить (через XMLHttpRequest) файл perms.txt из текущей директории
+ (где расположена текущая страница) и выше по иерархии вплоть до корня
+ форма. Корнем форума является директория, где расположен файл .forum
+ (не обязательно доступный для чтения по http. Ответ сервера 403 как и
+ ответ 200 надо рассматривать как "файл найден")
 
  Кроме того на странице могут присутствовать элементы a с классами
  next и prev.  В случае если тема разрослась более чем на одну страницу,
@@ -161,7 +191,11 @@ POST-запроса уже содержащего требуемые данны
 элементов ввода заменяются на эти данные.
 
 В случае если во введенных данных произошла ошибка, сообщение об ошибке
-скрипт вписывает в элемент с классом errmsg вместо его innerHtml
+скрипт вписывает в элемент с классом error вместо его innerHtml
+
+Во всем шаблоне формы производится подстановка информации о текущем
+пользователе, аналогично тому, как она производится в элементе с классом 
+message в шаблоне темы.
 
 Как правило, все скрипты получают следующую информацию 
 1. Поле с именем операции и произвольным непустым значением
@@ -190,6 +224,26 @@ POST-запроса уже содержащего требуемые данны
 вызывается без соответствующего значения в url или postdata, это поле
 заполняется значением заголовка referer http-запроса.
 
+Обработка форматированного (размеченного) текста:
+
+В некоторые поля форм (текст реплики, подпись пользователя) должен
+вводиться форматированный текст.
+
+Такому полю должно соответствовать поле с именим имя_format (например, 
+полю text соотвествует поле text_format, полю signature -
+signature_format). Поле format может принимать одно из трех значений
+- html, bbcode и text. Если поле format имеет значение html, то
+содержимое соответствующего текстового поля рассматривается как html,
+подвергается чистке от небезопасных тэгов и сохраняется в таком виде.
+Если поле format имеет значение text, то спецсимволя эскейпятся, а
+переводы строки заменяются на теги <br>.
+
+Если поле имеет значение bbcode, то обрабатываются управляющие
+последовательности bbcode.
+
+Наличие URL в тексте проверяется независимо от формата.
+
+
  Скрипт регистрации (операция login)
  Форма с именем login содержит поля name и password
  Может также содержать  checkbox с именем ipbind (привязка
@@ -201,12 +255,18 @@ POST-запроса уже содержащего требуемые данны
 
  Форма регистрации нового пользователя (операция register, форма с
  именем register)
- Содержит поля name 
- password password2 comment avatar (file upload field)
- email
+ Содержит поля user 
+ pass1 pass2 comment 
+ avatar (поле ввода URL) или avatarfile(file upload field)
+ email 
  Может также содержать любые дополнительные поля информации о
  пользователе (кроме поля status). Они будут сохранены в списке пользователей
  и могут потом выводиться в шаблонах рядом с информацией об авторе.  
+ Скрытое поле required содержит список полей, которые обязательно
+ требуются при регистрации. Поля user, pass1 и pass2 туда включать не
+ следует.
+ Скрытое поле ignore содержит список полей, которые НЕ НУЖНО
+ сохранять в качестве информации о пользователе.
 
 Скрипт отправки комментария
        
@@ -253,8 +313,15 @@ Cкрипт просмотра списка пользователей (опци
 Встраивание служебных форм непосредственно в страницы форума
 
   Форма, содержащая вышеперечиленные поля, имеющая метод POST и имеющая в поле
-  action="/cgi-bin/forum/<url страницы, где она размещена)
+  action="forum/<url страницы, где она размещена)
   может быть встроена непосредственно в страницу темы или списка
   тем/списка форумов. Желательно чтобы она делалась видимой только при
   нажатии кнопки. Отправка этой формы приводит к выполнению необходимого
   действия без  показа страницы скрипта.
+
+Служебные шаблоны
+
+Шаблон с именем error.html используется для выдачи фатальных ошибок
+скрипта. (когда нет возможности показать форму). Он должен содержать
+элемент с классом error, innerHTML которого будет заменен на сообщение
+об ошибке.