dev

This page, or parts of it, are still untranslated. Please translate it to the appropriate language (русский).

WikiForum создаёт форум, похожий на обсуждения на обычной вики-странице с поддержкой вики-разметки.

Попробуйте WikiForum здесь: WikiForum/demo

Installation

Начало

Данное руководство позволит вам создать форум с базовыми функциями (загрузчик и тема оформления по умолчанию).

Site-wide installation
Add this to MediaWiki:ImportJS:
dev:WikiForum/core.js
dev:WikiForum/theme/default.js
dev:WikiForum/loader/default.js
Usage
Форум загрузится в пространстве имён Форум по умолчанию.

Кастомный загрузчик

Подраздел ещё не написан

Кастомная тема

Подраздел ещё не написан

Технические детали

Элементы

parser
Функции, ответственные за парсинг исходного кода в WikiForum-Element.
updater
Функции, ответственные за добавление, удаление и изменение тем.
renderer
Функции, ответственные за рендер элементов в HTML в зависимости от настроек темы.
theme
функции, ответственные за определение HTML-структуры страниц форума.
WikiForum-Element
Массив, содержащий абстрактную структуру форума. Обеспечивает метаданные для updater и renderer.

Структурированный пример

Вики-разметка страницы

<!--
 - WikiForum Container
 - 
 - Total Forums: 1
 - Last modiflied: 2020-12-27T08:08:03.000Z
 - Last user: User4
 -
 - DO NOT EDIT DIRECTLY
 -->

<!-- start forum#1 -->
<div class="wiki-forum" data-depth-max="3" data-title="Forum Topic 1" data-page-name="Forum:Sandbox">

<!-- start thread#1 -->
<div class="forum-thread" data-time-publish="2020-12-27T08:08:00.000Z" data-user-author="User1">
  <div class="forum-content">
<!-- start content -->
Я первая тема на вики-форуме!

Привет, WikiForum. WikiForum обеспечивает структурированную на стороне клиента при помощи JavaScript.
<!-- end content -->
  </div>
</div>
<!-- end thread#1 -->

<!-- start thread#2 -->
<div class="forum-thread" data-time-publish="2020-12-27T08:08:01.000Z" data-user-author="User2">
  <div class="forum-content">
<!-- start content -->
О, классно. Я второй этаж~
<!-- end content -->
  </div>
  <!-- start thread#2-1 -->
  <div class="forum-thread" data-time-publish="2020-12-27T08:08:02.000Z" data-user-author="User3">
    <div class="forum-content">
<!-- start content -->
А я ответ на втором этаже.
<!-- end content -->
    </div>
  </div>
  <!-- end thread#2-1 -->

</div>
<!-- end thread#2 -->

<!-- start thread#3 -->
<div class="forum-thread" data-time-publish="2020-12-27T08:08:03.000Z" data-user-author="User4">
  <div class="forum-content">
<!-- start content -->
<span style="font-size: large">Ну а ещё можно использовать вики-разметку на форуме:</span>

'''жирный''' ''курсив'' <del>зачёркнутый</del>

[[Ссылка]] https://example.com

* Элемент списка 1
* Элемент списка 2
* Элемент списка 3

 Затата

[[File:Example.jpg|thumb|left|Это изображение]]
<!-- end content -->
  </div>
</div>
<!-- end thread#3 -->

</div>
<!-- end forum#1 -->

<!-- end WikiForum -->

WikiForum-Element

[{
  "forumid": "1",
  "meta": {
    "pageName": "Forum:Demo",
    "title": "Forum Topic 1",
    "depthMax": 3
  },
  "threads": [
    {
      "threadid": "1",
      "content": "Я первая тема на вики-форуме!\n\nПривет, WikiForum. WikiForum обеспечивает структурированную на стороне клиента при помощи JavaScript.",
      "meta": {
        "userAuthor": "User1",
        "timePublish": "2020-12-27T08:08:00.000Z"
      }
    },
    {
      "threadid": "2",
      "content": "О, классно. Я второй этаж~",
      "meta": {
        "userAuthor": "User2",
        "timePublish": "2020-12-27T08:08:01.000Z"
      },
      "threads": [
        {
          "threadid": "2-1",
          "content": "А я ответ на втором этаже.",
          "meta": {
            "userAuthor": "User3",
            "timePublish": "2020-12-27T08:08:02.000Z"
          }
        }
      ]
    },
    {
      "threadid": "3",
      "content": "<span style=\"font-size: large\">Ну а ещё можно использовать вики-разметку на форуме:</span>\n\n'''жирный''' ''курсив'' <del>зачёркнутый</del>\n\n[[Ссылка]] https://example.com\n\n* Элемент списка 1\n* Элемент списка 2\n* Элемент списка 3\n\n Затата\n\n[[File:Example.jpg|thumb|left|Это изображение]]",
      "meta": {
        "userAuthor": "User4",
        "timePublish": "2020-12-27T08:08:03.000Z"
      }
    }
  ]
}]

Использованные технологии

Разработка

Совет: для начала вам потребуется установить Git, Node.js и yarn.

# Клонировать репозиторий
git clone https://github.com/Fandom-zh/Gadget-WikiForum.git
cd Gadget-WikiForum

# Установка зависимостей
yarn install

# Запуск dev-версии}
yarn dev # -> ./dev/
# Вы можете запустить liveServer vscode по адресу http://127.0.0.1:1005

# Сборка релиз-версии
yarn build # -> ./public/dist/*