]> 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 = имя-директории-на-сервере
        Место расположения используемого набора шаблонов. Может быть (но не
 
 templates = имя-директории-на-сервере
        Место расположения используемого набора шаблонов. Может быть (но не
-       обязано) быть за пределами DocumentRoot.
+       обязано) быть за пределами DocumentRoot. Правда, в последнем случае
+       необходимо перенести в другое место библиотеки javascript и
+       графические элементы, которые в стандартном наборе шаблонов хранятся
+       там же, где и сами шаблоны
+
+templatesurl = url
+       Ссылка которую надо использовать для доступа к директории templates
+       по http. Используется в тех случаях, когда скрипт не может
+       автоматически правильно вычислить ссылку на каталог templates по
+       известной ему информации об URL forum-а.
 
 userdir = имя-директории-на-сервере
   
 
 userdir = имя-директории-на-сервере
   
-  Место, куда складываются аватары пользователей 
+  Место, куда складываются аватары пользователей. Должна быть в пределах
+  DocumentRoot
 
 userurl = url
   
 
 userurl = url
   
-  Имя под которым эта директория видна по http
+  Имя под которым эта директория видна по http (если скрипт не может
+  этого правильно вычислить сам)
 
 
-passwd = имя-файла-на-сервере
+datadir = имя-директории на сервере
 
 
-  Место расположения базы информации о пользователях. Должно быть
-  имя файла в недоступной по http директории (за пределами DocumentRoot
+  Место расположения базы информации о пользователях, сессиях  и другой
+  служебной информации, которая не должна уходить за пределы сервера.
+  Должно быть недоступной по http директорией (за пределами DocumentRoot
   или в крайнем случае, запрещенной для доступа через .htaccess) к
   которой cgi-скрипты имеют доступ на запись.
 
   или в крайнем случае, запрещенной для доступа через .htaccess) к
   которой cgi-скрипты имеют доступ на запись.
 
-sessions= имя-файла-на-сервере
-
-  База активных пользовательских сессий. Те же требования
-
 authperiod - время жизни пользовательской сессии. 
                Формат число единица измерения, где единица измерения может быть
                m (минута)
 authperiod - время жизни пользовательской сессии. 
                Формат число единица измерения, где единица измерения может быть
                m (минута)
@@ -46,3 +54,10 @@ renewtime - время автоматического продления сес
        проверки его сессии (постинг комментария, редактирование профиля)
        его сессия продлевается на authperiod. По умолчанию 86400.
 
        проверки его сессии (постинг комментария, редактирование профиля)
        его сессия продлевается на 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. Страница темы
 Шаблоны страниц:
 
 1. Страница темы
@@ -84,24 +93,26 @@ mreply - ссылка на скрипт ответа. Атрибут href буд
  Клиент-сайд скрипт должен уметь скрывать кнопку move, если пользователь
  не является модератором, а также кнопки edit и delete, если
  пользователь не является автором сообщения, т.е. значение куки
  Клиент-сайд скрипт должен уметь скрывать кнопку 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 с классами
  то желательно также скрыть кнопку reply и ссылку с классом mreply.
 
  Кроме того на странице могут присутствовать элементы a с классами
@@ -163,6 +174,10 @@ POST-запроса уже содержащего требуемые данны
 В случае если во введенных данных произошла ошибка, сообщение об ошибке
 скрипт вписывает в элемент с классом error вместо его innerHtml
 
 В случае если во введенных данных произошла ошибка, сообщение об ошибке
 скрипт вписывает в элемент с классом error вместо его innerHtml
 
+Во всем шаблоне формы производится подстановка информации о текущем
+пользователе, аналогично тому, как она производится в элементе с классом 
+message в шаблоне темы.
+
 Как правило, все скрипты получают следующую информацию 
 1. Поле с именем операции и произвольным непустым значением
   Возможные операции
 Как правило, все скрипты получают следующую информацию 
 1. Поле с именем операции и произвольным непустым значением
   Возможные операции
@@ -259,7 +274,7 @@ Cкрипт просмотра списка пользователей (опци
 Встраивание служебных форм непосредственно в страницы форума
 
   Форма, содержащая вышеперечиленные поля, имеющая метод POST и имеющая в поле
 Встраивание служебных форм непосредственно в страницы форума
 
   Форма, содержащая вышеперечиленные поля, имеющая метод 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>