]> www.wagner.pp.ru Git - oss/stilllife.git/commitdiff
*** empty log message ***
authorVictor Wagner <vitus@wagner.pp.ru>
Thu, 20 Mar 2008 16:26:55 +0000 (16:26 +0000)
committerVictor Wagner <vitus@wagner.pp.ru>
Thu, 20 Mar 2008 16:26:55 +0000 (16:26 +0000)
doc/config.txt
doc/templates.txt
templates/basicset/error.html [new file with mode: 0644]
templates/basicset/form.js [new file with mode: 0644]
templates/basicset/forum.html [new file with mode: 0644]
templates/basicset/login.html [new file with mode: 0644]
templates/basicset/register.html [new file with mode: 0644]
templates/basicset/reply.html [new file with mode: 0644]
templates/basicset/topic.html [new file with mode: 0644]

index 7b2768ffd2cc72302f401471b4ee263d20e20b0a..a36e25f378207f3a1f310682b9aaee69d2d01f9d 100644 (file)
 
 templates = имя-директории-на-сервере
        Место расположения используемого набора шаблонов. Может быть (но не
-       обязано) быть за пределами DocumentRoot.
+       обязано) быть за пределами DocumentRoot. Правда, в последнем случае
+       необходимо перенести в другое место библиотеки javascript и
+       графические элементы, которые в стандартном наборе шаблонов хранятся
+       там же, где и сами шаблоны
+
+templatesurl = url
+       Ссылка которую надо использовать для доступа к директории templates
+       по http. Используется в тех случаях, когда скрипт не может
+       автоматически правильно вычислить ссылку на каталог templates по
+       известной ему информации об URL forum-а.
 
 userdir = имя-директории-на-сервере
   
-  Место, куда складываются аватары пользователей 
+  Место, куда складываются аватары пользователей. Должна быть в пределах
+  DocumentRoot
 
 userurl = url
   
-  Имя под которым эта директория видна по http
+  Имя под которым эта директория видна по http (если скрипт не может
+  этого правильно вычислить сам)
 
-passwd = имя-файла-на-сервере
+datadir = имя-директории на сервере
 
-  Место расположения базы информации о пользователях. Должно быть
-  имя файла в недоступной по http директории (за пределами DocumentRoot
+  Место расположения базы информации о пользователях, сессиях  и другой
+  служебной информации, которая не должна уходить за пределы сервера.
+  Должно быть недоступной по http директорией (за пределами DocumentRoot
   или в крайнем случае, запрещенной для доступа через .htaccess) к
   которой cgi-скрипты имеют доступ на запись.
 
-sessions= имя-файла-на-сервере
-
-  База активных пользовательских сессий. Те же требования
-
 authperiod - время жизни пользовательской сессии. 
                Формат число единица измерения, где единица измерения может быть
                m (минута)
@@ -46,3 +54,10 @@ renewtime - время автоматического продления сес
        проверки его сессии (постинг комментария, редактирование профиля)
        его сессия продлевается на authperiod. По умолчанию 86400.
 
+replies_per_page - число реплик на странице форума.
+       По умолчанию 50
+
+forbid_tags=список-html-тэгов, запрещенных в сообщении.
+
+
+
index c7d5baf3d6555114c0c3d11e99e2b5c5b776f28f..52e662be8a5972b8c86945a812b22ec9ef9b0531 100644 (file)
@@ -5,6 +5,15 @@
 форм с определенными именами. Скрипты форума вставляют в эти файлы
 информацию руководствуясь классами элементов и именами полей форм.
 
+Во всех шаблонах производится правка относительных URL в элементах
+img src, a href, link href, form action.
+В URL начинающихся со слова templates заменяются на значение templateurl
+из конфигурации форума, URL, начинающиеся со слова users - на userurl,
+со слова forum - на путь к скрипту форума. Остальные относительные (т.е.
+не начинающиеся c http: или / url дополняются путем к корневому каталогу
+форума. Cсылки вида forum?параметры будут заменены на 
+url-скрипта/url-страницы?параметры
+
 Шаблоны страниц:
 
 1. Страница темы
@@ -84,24 +93,26 @@ mreply - ссылка на скрипт ответа. Атрибут href буд
  Клиент-сайд скрипт должен уметь скрывать кнопку move, если пользователь
  не является модератором, а также кнопки edit и delete, если
  пользователь не является автором сообщения, т.е. значение куки
- forum_author не совпадает с содержимым скрытого поля author
+ sluser не совпадает с содержимым скрытого поля author
+
+ Для того чтобы узнать является ли текущий пользователь модератором
+ данного форума, нужно запросить с сервера (через XmlHttpRequest)
+ файл .moderators лежащий рядом с текущим файлом и далее вверх по
+ иерархии. Эти файлы представляют собой простые текстовые файлы с именем 
+ пользователя в каждой строке.
 
+ В корне форума имеется аналогичный файл .admins.
 
- Для того чтобы определить, является ли пользователь модератором данной
- страницы, нужно включить в html следующий элемент
- <script src="/cgi-bin/forum/<url текущей страницы>?getrights=1"></script>
- Полученый по этой url скрипт выставляет две глобальные переменные
- moderator
- и administrator в значение true, если пользователь имеет соответствущие
- права на данную тему и false, если не имеет.
- Кроме того этот скрипт выставляет глобальную переменную author, которая
- имеет значение идентификатора автора, что избавляет client-side cкрипт
- от самостоятельного анализа cookies.
+ Можно также запросить файл .banned.
 
- Манипулирование формами должно производиться из обработчика body onLoad
- чтобы скрипт getrights успел загрузиться.
+ Все эти действия являются необязательными. Если на клиентской стороне
+ они не будут выполнены и у пользователя появится возможность нажать на
+ кнопку выполнения операции, на которую у него нет прав, операция будет
+ заблокирована на сервере.
 
- Если кука FORUM_AUTHOR или глобальная переменная author не определены,
+
+ Если кука sluser не определена,
  то желательно также скрыть кнопку reply и ссылку с классом mreply.
 
  Кроме того на странице могут присутствовать элементы a с классами
@@ -163,6 +174,10 @@ POST-запроса уже содержащего требуемые данны
 В случае если во введенных данных произошла ошибка, сообщение об ошибке
 скрипт вписывает в элемент с классом error вместо его innerHtml
 
+Во всем шаблоне формы производится подстановка информации о текущем
+пользователе, аналогично тому, как она производится в элементе с классом 
+message в шаблоне темы.
+
 Как правило, все скрипты получают следующую информацию 
 1. Поле с именем операции и произвольным непустым значением
   Возможные операции
@@ -259,7 +274,7 @@ Cкрипт просмотра списка пользователей (опци
 Встраивание служебных форм непосредственно в страницы форума
 
   Форма, содержащая вышеперечиленные поля, имеющая метод POST и имеющая в поле
-  action="/cgi-bin/forum/<url страницы, где она размещена)
+  action="forum/<url страницы, где она размещена)
   может быть встроена непосредственно в страницу темы или списка
   тем/списка форумов. Желательно чтобы она делалась видимой только при
   нажатии кнопки. Отправка этой формы приводит к выполнению необходимого
diff --git a/templates/basicset/error.html b/templates/basicset/error.html
new file mode 100644 (file)
index 0000000..c379ec7
--- /dev/null
@@ -0,0 +1,9 @@
+<HTML><HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+<TITLE>Ошибка</TITLE>
+</HEAD><BODY bgcolor="#ccffcc">
+<H3>Тестовый форум Still Life</h3>
+<h1>Произошла неустранимая ошибка</h1>
+<div class="error"></div>
+</BODY>
+</HTML>
diff --git a/templates/basicset/form.js b/templates/basicset/form.js
new file mode 100644 (file)
index 0000000..d3127a2
--- /dev/null
@@ -0,0 +1,18 @@
+// Библиотека стандартных функций, используемых в формах форумного
+// скрипта
+//
+
+// Запрещает поле password в текущей форме если значение value текущего
+// элемента не пусто. Используется в качестве обработчика onChange
+// для поля openid_site. Пример использования
+//     <select name="openid_site" onChange="selectSite(this)">
+    
+function selectSite( element) {
+   var form = element.form;
+   var password_field = form["password"];
+   if (element.value != "") {
+       password_field.disabled=1;
+  } else {
+       password_field.disabled=0;
+  }    
+}
diff --git a/templates/basicset/forum.html b/templates/basicset/forum.html
new file mode 100644 (file)
index 0000000..916ae78
--- /dev/null
@@ -0,0 +1,76 @@
+<HTML><HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+<TITLE>Still Life - Форум</TITLE>
+<script language="JavaScript" src="templates/page.js">
+<script language="JavaScript" src="templates/common.js">
+</script>
+</HEAD><BODY bgcolor="#ccffcc">
+<a class="userurl" href="forum?register=1">Зарегистрироваться</a> <a
+class="login" href="forum?login=1">Войти</a> 
+<a class="moderator" href="forum?newtopic=1">Создать тему</a>
+<a class="moderator" href="forum?newforum=1">Создать форум</a>
+<H3>Тестовый форум Still Life</h3>
+<div id="loginform" style="visibility: hidden; display: none;"
+<form action="forum" method="POST">
+<table border=0>
+<tr><td>Имя пользователя:</td><td><input type=text name="user" size=30>
+</td></tr>
+<tr><td>Сайт на котором вы зарегистрированы</td><td> <select
+name="openid_site" onChange="selectSite(this)">
+<option selected value="">Этот сайт</option>
+<option value="http://livejournal.com/users/%s">LiveJournal.com</option>
+<option value="http://diary.ru/~%s">Diary.ru</option>
+<option value="http://lj.rossija.org/users/%s">LJ.Rossija.org</option>
+<option value="http://%s">Другой Open-ID сайт</option> 
+</select></td></tr>
+<tr><td>Пароль:</td><td><input type="password" name="password"
+size=20></td></tr>
+<tr><td></td><td><input type="checkbox" name="bindip" value="1"> Только с этого IP-адреса
+</td><tr>
+<tr><td colspan=2 align=right"><input type=submit name="login"
+value="Вoйти">
+</table>
+</form>
+</div>
+<div class="message">
+<h2 class="subject">Корень форума</h2>
+<span class="date"></span>
+<div class="text"></div>
+
+<div class="forumlist">
+<h2>Подфорумы</h2>
+<div class="forum" style="background-color: #ffddcc; padding: 10px; margin: 10px;">
+<p>
+<a href="#" class=subject>Название форума</a> Создан: <span class="date"></span><br>
+<div class="text">аннотация форума</div>
+
+<form class="foruminfo" action="forum" method="POST">
+<input name=id type="hidden">
+<input type="submit" name="edit" value="Редакт">
+<input type="submit" name="move" value="Переместить">
+<input type="submit" name="delete" value="Удалить">
+<input type="submit" name="setrights" value="Доступ">
+</form>
+</p>
+</div>
+</div>
+<div class="topiclist">
+<h2>Темы</h2>
+<div class="topic" style="background-color: #ffffcc; padding: 10px;
+margin: 5px;" >
+<p>
+<a href="#" class=subject>Название темы</a> Создана: <span class="date"></span><br>
+<div class="text">аннотация темы</div>
+
+<form class="foruminfo" action="forum" method="POST">
+<input name=id type="hidden">
+<input type="submit" name="edit" value="Редакт">
+<input type="submit" name="move" value="Переместить">
+<input type="submit" name="delete" value="Удалить">
+<input type="submit" name="reply" value="Высказаться">
+</form>
+</p>
+
+</div>
+</BODY>
+</HTML>
diff --git a/templates/basicset/login.html b/templates/basicset/login.html
new file mode 100644 (file)
index 0000000..7377883
--- /dev/null
@@ -0,0 +1,33 @@
+<HTML><HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+<TITLE>Still Life - Вход</TITLE>
+<script language="JavaScript" src="templates/form.js">
+</script>
+</HEAD><BODY bgcolor="#ccffcc">
+<H3>Тестовый форум Still Life</h3>
+<form method="POST" action="forum" name="login">
+<a class="author" href="forum?register=1">Зарегистрироватьcя</a> 
+<table border=0>
+<tr><td>Имя пользователя:</td><td><input type=text name="user" size=30>
+</td></tr>
+<tr><td>Сайт на котором вы зарегистрированы</td><td> <select
+name="openid_site" onChange="selectSite(this)">
+<option selected value="">Этот сайт</option>
+<option value="http://livejournal.com/users/%s">LiveJournal.com</option>
+<option value="http://diary.ru/~%s">Diary.ru</option>
+<option value="http://lj.rossija.org/users/%s">LJ.Rossija.org</option>
+<option value="http://%s">Другой Open-ID сайт</option> 
+</select></td></tr>
+<tr><td>Пароль:</td><td><input type="password" name="password"
+size=20></td></tr>
+<tr><td></td><td><input type="checkbox" name="bindip" value="1"> Только с этого IP-адреса
+</td><tr>
+<tr><td colspan=2  class="error"></td></tr>
+<tr><td colspan=2 align=right"><input type=submit name="login"
+value="Вoйти">
+</table>
+
+</form>
+
+</BODY>
+</HTML>
diff --git a/templates/basicset/register.html b/templates/basicset/register.html
new file mode 100644 (file)
index 0000000..3153744
--- /dev/null
@@ -0,0 +1,43 @@
+<HTML><HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+<TITLE>Still Life - регистрация пользователя</TITLE>
+<script src="templates/form.js"></script> 
+</HEAD><BODY bgcolor="#ccffcc">
+<H3>Тестовый форум Still Life</h3>
+<div style="border: 1px;">
+<form method="POST" name="login" action="forum">
+Имя: <input type=text name="user" size=30> 
+<select name="openid_site" onchange="selectSite(this)">
+<option selected value="">Этот сайт</option>
+<option value="http://livejournal.com/users/%s">LiveJournal.com</option>
+<option value="http://diary.ru/~%s">Diary.ru</option>
+<option value="http://lj.rossija.org/users/%s">LJ.Rossija.org</option>
+<option value="http://%s">Другой Open-ID сайт</option> 
+</select>
+<input type=submit name=login value="Войти"><br>
+Пароль: <input type="password" name="password">
+<input type="checkbox" name="bindip" value="1"> Только с этого IP-адреса
+</form>
+</div>
+
+<h1>Регистрация нового пользователя</h1>
+<div class="error"></div>
+<form name="register" method="POST" action="forum" enctype="multipart/form-data">
+<table border=0>
+<tr><td>Имя</td><td><input name="user" size="32"></td></tr>
+<tr><td rowspan=2>Пароль</td><td><input name="pass1" type="password"></td></tr>
+<tr><td><input name="pass2" type="password"></td></tr>
+<tr><td>Адрес E-Mail</td><td><input name="email" size="40"></td></tr>
+<tr><td>Комментарий</td><td><textarea name="comment" rows=5
+cols=60></textarea></td></tr> 
+<tr><td rowspan=2>Аватар</td><td>URL: <input name="avatar"
+size=50></td></tr>
+<tr><td>Или загрузить: <input type=file name="avatarfile"></td></tr>
+<tr><td colspan=2 align=center"><input type=submit name="register"
+value="Зарегистрирваться">
+</table>
+
+</form>
+
+</BODY>
+</HTML>
diff --git a/templates/basicset/reply.html b/templates/basicset/reply.html
new file mode 100644 (file)
index 0000000..e975fde
--- /dev/null
@@ -0,0 +1,39 @@
+<HTML><HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+<TITLE>Still Life - Высказаться</TITLE>
+</HEAD><BODY bgcolor="#ccffcc">
+<script src="templates/form.js"></script>
+<H3>Тестовый форум Still Life</h3>
+<form method="POST" name="reply" action="forum">
+<input type="hidden" name="id" value="">
+<table border=0>
+<tr><td rowspan=2>Пользователь:</td><td> <a class="author" href="forum?register=1">Зарегистрироваться</a><br></td></tr>
+<tr><td><input type=text name="user" size=30> 
+<select name="openid_site" onchange="selectSite(this)">
+<option selected value="">Этот сайт</option>
+<option value="http://livejournal.com/users/%s">LiveJournal.com</option>
+<option value="http://diary.ru/~%s">Diary.ru</option>
+<option value="http://lj.rossija.org/users/%s">LJ.Rossija.org</option>
+<option value="http://%s">Другой Open-ID сайт</option> 
+</select></td></tr>
+<tr> <td rowspan=2>Пароль:</td><td><input type="password" name
+="password"></td></tr>
+<tr><td><input type="checkbox" name="bindip" value="1"> Только с этого IP-адреса
+</td><tr>
+<tr><td colspan=2  class="error"></td></tr>
+<tr><td>Тема: </td><td><input name="subject" size="40"></td></tr>
+<tr><td>Текст:</td><td><textarea name="comment" rows=10
+cols=72></textarea></td></tr> 
+<tr><td>Формат:</td><td><select name="format"><option value="text"
+selected>Без разметки</option>
+<option value="bbcode">BBCode</option>
+<option value="html">Html</option></select</td></tr>
+<tr><td>Картинка</td> <td><input type=file name="avatarfile"></td></tr>
+<tr><td colspan=2 align=right"><input type=submit name="reply"
+value="Высказаться">
+</table>
+
+</form>
+
+</BODY>
+</HTML>
diff --git a/templates/basicset/topic.html b/templates/basicset/topic.html
new file mode 100644 (file)
index 0000000..28d3767
--- /dev/null
@@ -0,0 +1,78 @@
+<HTML><HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+<TITLE>Still Life - Форум</TITLE>
+<script language="JavaScript" src="templates/page.js">
+<script language="JavaScript" src="templates/common.js">
+</script>
+</HEAD><BODY bgcolor="#ccffcc">
+<a class="userurl" href="forum?register=1">Зарегистрироваться</a> <a
+class="login" href="forum?login=1">Войти</a> 
+<a class="moderator" href="forum?newtopic=1">Создать тему</a>
+<a class="moderator" href="forum?newforum=1">Создать форум</a>
+<H3>Тестовый форум Still Life</h3>
+<div id="loginform" style="visibility: hidden; display: none;"
+<form action="forum" method="POST">
+<table border=0>
+<tr><td>Имя пользователя:</td><td><input type=text name="user" size=30>
+</td></tr>
+<tr><td>Сайт на котором вы зарегистрированы</td><td> <select
+name="openid_site" onChange="selectSite(this)">
+<option selected value="">Этот сайт</option>
+<option value="http://livejournal.com/users/%s">LiveJournal.com</option>
+<option value="http://diary.ru/~%s">Diary.ru</option>
+<option value="http://lj.rossija.org/users/%s">LJ.Rossija.org</option>
+<option value="http://%s">Другой Open-ID сайт</option> 
+</select></td></tr>
+<tr><td>Пароль:</td><td><input type="password" name="password"
+size=20></td></tr>
+<tr><td></td><td><input type="checkbox" name="bindip" value="1"> Только с этого IP-адреса
+</td><tr>
+<tr><td colspan=2 align=right"><input type=submit name="login"
+value="Вoйти">
+</table>
+</form>
+</div>
+<h2 class="title">Корень форума</h2>
+<div class="message" style="background-color: #ffffcc;">
+<table>
+<tr><td>
+<span class="date"></span>
+<div class="text"></div>
+
+<div class="forumlist">
+<h2>Подфорумы</h2>
+<div class="forum" style="background-color: #ffddcc; padding: 10px; margin: 10px;">
+<p>
+<a href="#" class=subject>Название форума</a> Создан: <span class="date"></span><br>
+<div class="text">аннотация форума</div>
+
+<form class="foruminfo" action="forum" method="POST">
+<input name=id type="hidden">
+<input type="submit" name="edit" value="Редакт">
+<input type="submit" name="move" value="Переместить">
+<input type="submit" name="delete" value="Удалить">
+<input type="submit" name="setrights" value="Доступ">
+</form>
+</p>
+</div>
+</div>
+<div class="topiclist">
+<h2>Темы</h2>
+<div class="topic" style="background-color: #ffffcc; padding: 10px;
+margin: 5px;" >
+<p>
+<a href="#" class=subject>Название темы</a> Создана: <span class="date"></span><br>
+<div class="text">аннотация темы</div>
+
+<form class="foruminfo" action="forum" method="POST">
+<input name=id type="hidden">
+<input type="submit" name="edit" value="Редакт">
+<input type="submit" name="move" value="Переместить">
+<input type="submit" name="delete" value="Удалить">
+<input type="submit" name="reply" value="Высказаться">
+</form>
+</p>
+
+</div>
+</BODY>
+</HTML>