Расширение "Форум"

Расширение "Форум" предназначено для организации форумов для обсуждения тех или иных тем. Обычно форумы привязываются к конкретной статье для её обсуждения. Однако, в общем случае, форумы могут быть привязаны и к другим объектам данных. Например, к каким-либо отдельным медиафайлам, которые используются статьёй.
В общем случае, к одному объекту обсуждения может быть привязано несколько форумов. Например, доступных для разных категорий пользователей. Например, один форум - для всех, другой - только заданной категории и/или списка пользователей. Для этого в конфигурации определяются типы форумов с их индивидуальными названиями, аннотациями и правами доступа.
Каждый конкретный форум может находиться на той же странице, где выведена обсуждаемая публикации, а может быть вынесен и на отдельную страницу, оформленную в виде самостоятельной статьи.

Функция forum - вывод сообщений форума

Функция forum является центральным элементом расширения "Форум". Она выводит сообщения форума и предоставляет интерфейс для ввода новых сообщений и ответа на уже введённые ранее.
Функция forum([kf,fp]) имеет два необязательных параметра. Параметр kf характеризуется тип форума, а параметр fp - файл привязки форума (то, что обсуждается на форуме). Если fp не задан, то форум привязывается к данной статье, из которой выполнена функция forum(). Если не задан параметр kf, то предполагается стандартный тип форума, определённый конфигурацией расширения.
Пример использования функции forum() без параметров можно видеть в конце данной статьи. В нём участниками диалога обсуждается данная статья документации. Если Вы не авторизованы, то содержание форума Вы не увидите. Любой авторизованный пользователь может высказать там своё мнение о ней в меру своей испорченности.
В заголовке форума выводится его название, полученное из конфигурации расширения по коду параметра kf функции forum(). Если параметр не задан - то выводится стандартное название форума. Далее следует ссылка "Ввести новое сообщение". При переходе по ней открывается страница с полем ввода многострочного текста, кнопка Принять и ссылка Отменить (возврат к вызвавшей статье). При вводе нового сообщения по кнопке Принять его текст записывается как сообщение верхнего уровня в общий поток сообщений.
Далее выводится поток введённых сообщений. Сообщения верхнего уровня упорядочиваются в соответствии со временем их подачи. Сообщения (ответы) более низких уровней выстраиваются в привязке к сообщению более высокого уровня. Они выводятся с некоторым отступом по отношению к сообщению более высокого уровня, на которое они представлены как ответ.
В каждом сообщении выводятся:
дата и время сообщения;
ссылка на анкету пользователя, оставившего сообщение;
ссылка Ответить;
ссылка Изменить, если данный пользователь является автором сообщения;
текст сообщения.
При переходе по ссылке Ответить выводится поле многострочного ввода, в которое копируется текст сообщения, на которое даётся ответ. После нажатия на кнопку Принять оно записывается в поток сообщений в привязке к сообщению более высокого уровня на которое оно представлено как ответ.
Собственные сообщения могут быть впоследствии скорректированы их автором или любым пользователем со статусом Редактор. Последнее может быть нужно для возможности исправления модератором оскорбительных и/или иных сообщений, не соответствующих неформализованным правилам ведения конкретного форума.

Определение типов форумов

Изначально, конфигурация расширения "Форум" (файл x_forum.txt) содержит определение только одного типа форума. Его описание содержится в файле x_forum.txt. На данном сайте определение стандартного форума выглядит так:
*Базовый тип форума
forum.$.n Обсуждение статьи
forum.$.a
forum.$.d 01333
forum.$.p

Описания форумов интерпретируются как Массивы Ключ/Значение. Ключ имеет специальную структуру, состоящую из трёх элементов (слов), разделённых точками.
Первое слово forum означает принадлежность записи к расширению Форум.
Второе слово - код типа форума. Это может быть произвольный набор символов. Нельзя использовать лишь символ точка (.). Рекомендуется именовать типы форумов латинскими буквами и цифрами. Признаком базового типа форума является символ $. Базовый форум должен быть определён обязательно.
Третье слово выражает код атрибута данного типа форумов. Здесь пока используются коды атрибутов, схожие с аналогичными предопределёнными атрибутами определения публикации:
n - название типа форума;
a - аннотация содержания форума;
d - код общих правил доступа к форуму пользователей различных категорий;
p - индивидуальные определения прав доступа к форуму для конкретных пользователей.
Права доступа формируются в соответствии с принятыми в Системе общими правилами - см. Регулирование прав доступа к публикации. Однако для форумов имеются небольшие отличия. Код 0 означает, что пользователя данной категории вообще не узнают о существовании форума. То есть функция forum как бы не сработает. Код 1 означает, что пользователи данной категории будут знать, что форум существует, но сообщения форума им не будут выведены (нет прав на чтение). Код 2 означает, что пользователи данной категории могут читать все сообщения форума, но не могут на них отвечать. Код 3 означает, можно давать писать новые сообщения и давать ответы на сообщения других пользователей. Код 4 означает, что данной категории пользователей (конкретным пользователям) можно также править все сообщения пользователю. У пользователей со статусом Редактор эта возможность имеется без всякого определения.
Создавать новые типы форума могут только пользователи со статусом Администратор. При этом все созданные типы форумов, которыми могут быть использованы всеми без исключения пользователями со статусом Писатель и выше. В дальнейшем будет реализована возможность создания новых типов форумов Экспертами и Редакторами. Но эти типы форумов могут создаваться только в статьях с их авторством.

Способы организации форумов

Для организации форума достаточно использовать в статье функцию forum(). Она может быть использована в любом месте статьи. Если она введена в центре, то и все сообщения форума также будут выводиться в центре, на том месте, где она вызвана. А после них будут выводиться последующие фрагменты статьи. Число вызовов функции forum() в одной статье не ограничено. Таким образом, в одной статье может содержаться несколько форумов.
Функция forum() в явном виде в статье может быть не использована. Однако, если в настройках заголовка или подвала статьи она использована, то форум также будет выведен в соответствующем её месте. То есть Эксперты, Редакторы и Администраторы могут навязать насильственный вывод форумов в статьях с их авторством. Например, в подвале любой своей статьи.
Форумы могут быть организованы также в отдельных статьях, но с привязкой к обсуждению другой статьи. В этом случае в другой статье в функции forum() нужно обязательно указать имя статьи или файла, к которым относится обсуждение. Для перехода к такому форуму нужно просто указать ссылку на статью с форумом в любой другой статье.
Например, в файле dok/t/x_forum.s содержится статья, содержащая следующий код:
.n Обсуждение статьи документации о расширении "Форум" 
.a 
.d 23333
.s 
*Обсуждение статьи документации о расширении "Форум" 

@forum('$','dok/x_forum.s')

В данной статье имеется ссылка Обсуждение статьи документации о расширении "Форум". Перейдя по ней Вы увидите копию форума, сообщения которого размещены в данной статье. Все изменения, внесённые там также появятся и на этой странице после её перезагрузки. И наоборот, поскольку привязка в обоих случаях идёт к одному и тому же форуму.
Вы не авторизованы. Поэтому сообщения форума под этой статьёй не увидите.

Обсуждение статьи
У Вас нет прав на чтение форума

Навигатор Статистика Код