]> www.wagner.pp.ru Git - oss/stilllife.git/blob - doc/tz.txt
Реализована операция setrights. Выправлен ряд глюков в редактировании
[oss/stilllife.git] / doc / tz.txt
1 Вебстроительское
2 Тут попробовал поставить YaBB2 и мне очень не понравилось. В инструкции
3 по инсталляции рекомендуется на много какие файлы и каталоги ставить
4 права 777 или 666, данные предлагается хранить в каталоге со скриптами
5 etc.
6
7 Большая часть прочих форумных движков которые я видел, вообще написаны
8 на PHP. Наличие интерпретатора внутри апача меня не устраивает. Апач от
9 этого пухнет, а сервер дохнет. В смысле, нагрузку не держит.
10
11 Соответственно, ничего подходящего вообще не нашлось. А ведь
12 функциональность форума вообще говоря минимальная.
13 Древовидного комментирования почти нигде нет, иерархия с ограниченным
14 числом уровней etc. Если грамотно сформулировать техзадание, пишется за
15 три вечера.
16
17 Вот и попробую эту функциональность сформулировать:
18
19 архитектура
20
21 1. Минимальные требования к серверу. Т.е. от сервера требуется только
22 perl 5.8 с модулями, входящими в комплект и работающим flock, и
23 web-сервер, умеющий исполнять CGI-скрипты. Все скрипты в taint mode.
24
25 2. Все что можно отдавать статикой, отдавать статикой. Если ради этого
26 придется пожертвовать возможностью создания форумов с ограниченным
27 доступом, хрен с ними. Web-форумы - штука публичная.
28
29 3. От клиента требуется графический браузер с включенным javascript.
30 Поскольку иначе кастомизацию статической страницы не сделаешь. А у
31 клиента процессорных тактов всяко больше, чем у сервера. Седую древность
32 вроде IE 4.0, Netscape 2.0 и т.д. не поддерживаем.
33
34 4. Отделение данных от кода и публичных данных от непубличных
35 (непубличными данными являются только пароли и E-Mail-ы юзеров, а также
36 права доступа). Система должна позволять используя один и тот же
37 комплект скриптов на нескольких виртуальных сайтах на одном сервере
38 поддерживать совершенно разные форумы с непересекающимся множеством
39 пользователей.
40
41 5. Полный контроль над внешним видом форума со стороны дизайнера
42 шаблонов. Шаблоны должны проходить HTML-валидатор (для упрощения ловли
43 глюков дизайна). Описание того, чем отличается шаблон от просто
44 HTML-странички должно занимать не более страницы текста. Количество
45 шаблонов не должно превышать десятка.
46
47 6. Резервное копирование пользователь, имеющий доступ к файловой системе
48 сервера, может осуществить независимо от того, что думает по этому
49 поводу хостер. Просто скачав все файлы из соответствующих каталогов.
50 Учитываем что каталог с паролями пользователя и правами доступа по http
51 не доступен.
52
53 features
54
55 1. Есть понятие списка форумов сайта, списка тем в форуме и темы
56 (дискуссии, последовательности сообщений)
57 У форума может что-то, функционально эквивалентное сообщению, которое
58 показывается в списке форумов. У темы - показывается первое сообщение.
59
60 2. Сообщения можно добавлять в тему, отвечая на любое сообщение в теме,
61 перемещать из темы в тему, удалять, редактировать. Поддерживается
62 BBCode, поддерживается аплоад изображений для размещения в сообщениях.
63 Аттачмент произвольных файлов не поддерживается. В форме ответа
64 поддерживается операция цитирования. Слишком длинные темы режутся на
65 страницы. Число сообщений на страницу задается в настройках сайта.
66
67 3. Отправка сообщений разрешена только зарегистрированным пользователям.
68 Перемещение сообщений из темы в тему и удаление - модераторам.
69 Администратор - это тот, кто может назначать модераторов. Модераторы
70 могут быть назначены на конкретный форум или даже тему. Форма ответа
71 может появляться на той же странице (как в ЖЖ), а может на отдельной. В
72 комплект поставки набор шаблонов с формой на той же странице следует
73 включить.
74
75 4. При регистрации пользователь указывает имя, пароль, E-Mail
76 (обязательно) прочие виды контактов (необязательно), возможно пару полей
77 форум-специфичной информации о себе (например на форуме ролевой игры -
78 расу и профессию) и картинку. Есть понятие статуса пользователя, который
79 выставляется модератором/администратором. (возможно, в дальнейшем туда
80 стоит OpenID прикрутить).
81
82 5. Веб-интерфейса для редактирования шаблонов и CSS нет. Это - через
83 файловую систему сервера (ftp, ssh, локально, как хотите).
84
85 6. Банить пользователя можно либо в пределах темы, либо в пределах
86 форума, либо в пределах сайта.
87
88 7. В зависимости от прав пользователя и факта его зарегистрированности
89 должны показываться или не показываться кнопочки и ссылочки на всякие
90 скрипты. Это делать client-side, возможно выполнив дополнительный запрос
91 к серверу (можно через XmlHttpRequest, можно через <script src="...">
92 для уточнения прав на текущую страницу.
93
94 8. rss и почтовые уведомления о новых сообщениях - во вторую очередь.
95
96 Вроде все.
97
98 Технически это реализуется следующим образом: Есть каталог верхнего
99 уровня, в нем лежит index.html со списком форумов, и подкаталоги для
100 каждого форума. Плюс каталоги templates и users. Там же лежит файлик
101 .forum описывающий конфигурацию форума. В первую очередь - положение
102 файла паролей и файла прав доступа в файловой системе сервера (за
103 пределами DOCUMENTROOT). URL на скрипты формируются как
104 /cgi-bin/forum/скрипт/вызвавшая страница. Имя html-файла, который
105 следует редактировать, радостно берем из PATH_TRANSLATED.
106
107 Шаблоны содержат либо спец-комментарии указывающие места вставки текста,
108 либо HTML-элементы с определенным id.
109
110 Серверную часть действительно писать недолго, тем более если взять
111 какой-нибудь уже написанный (их есть у меня) процессор шаблонов. Вот
112 клиент-сайд скрипты для меня - нетривиально. Не умею я этого и не люблю.
113 Может кто-нибудь поможет.