Просмотр одиночного сообщения
Old 21-06-2007, 15:48   #27
Suriken
Пользователь
 
Аватар для Suriken
 
Сообщений: 12,202
Проживание:
Регистрация: 08-12-2003
Status: Offline
Я тут искал тему с предложениями по улучшению сайта... Не нашел. Поэтому пишу сюда, хотя к дополнителной информации это отношения не имеет.

Вопрос насчет "Автопросмотра сообщений". Очень удобная штучка, но хочется сделать ее еще удобнее для рядовых пользователей.
Для начала, эта страничка создается скриптом по ХТТП запросу или регулярно кэшируется в файл, который потом выдается? Если первое, то предложение не должно увеличить нагрузку на БД.

Предложение заключается в создании фильтра сообщений, которые выдаются на данной страничке для каждого пользователя.

Функциональная спецификация.

В профиль пользователя добавляются настройки фильтра для автопросмотра сообщений.
Настройки фильтра содержат три опции:
1. Показывать все
2. Показывать только темы...
3. Показывать только раздел

Активна может быть только одна опция из трех (радиобаттон).

При выборе опции №1 в автопросмотре показываются все новые сообщения без ограничения и фильтрования.

В опции №2 (Показывать только темы...) содержится три (или больше) выпадающих списка, в которых можно выбрать тему. Варианты выбора берутся, например, из "последних 30 тем" + один вариант, выбранный пользователем ранее + пустой вариант. Выбранный ранее вариант является акивным по умолчанию. Пустой вариант означает, что ни одна тема не подпадает под фильтр.
При выборе пользователем этой опции на страничке автопросмотра показываются только сообщения из тем, выбранных в выпадающих списках (объединение подмножеств). Если ни одна тема не выбрана (все три выпадающих списка содержат "пустой" вариант), то данная опция при попытке сохранения автоматически заменяется на опцию №1 (Показывать все).

В опции №3 содержится выпадающий список, позволяющий выбрать один из существующих разделов форума (как, например, при переносе темы). При выборе этой опции на страничке автопросмотра показываются только сообщения из выбранного раздела.

Техническая спецификация
Введение новой функциональности потребует создания дополнительного шаблона для профиля пользователя, который будет содержать элементы управления, описанные в функциональной спецификации. Содержимое элементов управления (список тем для выбора, список разделов) можно выбрать из БД, используя уже существующие подпрограммы форума или при несущественной их модификации.
Ссылку на шаблон можно будет добавить в панель навигации (слева) на профиле пользователя.

Для сохранения настроек нужно будет создать дополнительную таблицу в БД. Таблица будет содержать следующие поля:
1) Номер пользователя (интеджер, ключевое поле) внешний ключ на основную таблицу учетных записей пользователей.
2) Номер выбранной опции (интеджер). Может принимать значения: 1, 2, 3
3) Тема для фильтрации 1 (интеджер). Содержит индекс темы. Используется при активной опции 2.
4) Тема для фильтрации 2 (интеджер). Содержит индекс темы. Используется при активной опции 2.
5) Тема для фильтрации 3 (интеджер). Содержит индекс темы. Используется при активной опции 2.
6) Раздел для фильтрации (интеджер). Содержит индекс раздела. Используется при активной опции 3.

Итого, на каждую учетную запись пользователя добавляется одна строка в новой таблице. Длина строки - 24 байта (при размере 32-битном интеджере). По-моему, не много...

При формировании странички автопросмотра для каждого пользователя изымается соответствующая запись из вышеуказанной настроечной таблицы. На страничку автопросмотра выводится фиксированное количество сообщений (20-30, отсортированные по убыванию времени создания, начиная с самого нового), выбранных в соответствии с условиями, сохраненными в настроечной записи.



Как всегда, готов помочь и словом, и делом, и набить необходимые скрипты.
 
0
 
0
    Ответить с цитированием