Справочник автора/MediaWiki: различия между версиями
ЗаяцВолк (обсуждение | вклад) (→JS) |
ЗаяцВолк (обсуждение | вклад) (Ужатие информации, а то статья пухнет и мешает ходить) Метка: отменено |
||
Строка 106: | Строка 106: | ||
По умолчанию в сайтах на двжике MediaWiki есть следующие группы пользователей: | По умолчанию в сайтах на двжике MediaWiki есть следующие группы пользователей: | ||
{{Вкладки | |||
|Анонимы| | |||
Могут создавать и редактировать статьи и обсуждения к ним. Но анонимы по понятным причинам не могут стать администраторами, например. | Могут создавать и редактировать статьи и обсуждения к ним. Но анонимы по понятным причинам не могут стать администраторами, например. | ||
|Участники| | |||
Могут создавать и редактировать статьи и обсуждения к ним. | Могут создавать и редактировать статьи и обсуждения к ним. | ||
Строка 116: | Строка 117: | ||
'''NB:''' В MediaWiki действует принцип наследования прав – т. е. все иные группы имеют те же права, что и участники, но с отдельными дополнениями/исключениями. Таким образом, если убрать у участников какие-либо права, то они '''исчезнут у всех''' других групп. Так что при изменении прав участников не забудьте продублировать допуски у других групп, если это требуется. | '''NB:''' В MediaWiki действует принцип наследования прав – т. е. все иные группы имеют те же права, что и участники, но с отдельными дополнениями/исключениями. Таким образом, если убрать у участников какие-либо права, то они '''исчезнут у всех''' других групп. Так что при изменении прав участников не забудьте продублировать допуски у других групп, если это требуется. | ||
|Автоподтверждённые участники| | |||
Могут редактировать статьи, у которых выставлена защита уровня «разрешено только автоподтверждённым участникам». | Могут редактировать статьи, у которых выставлена защита уровня «разрешено только автоподтверждённым участникам». | ||
Строка 123: | Строка 124: | ||
Как правило, для попадания в эту группу необходимо сделать n-е количество правок за n-е количество дней. Можно сказать, защита от вандалов. | Как правило, для попадания в эту группу необходимо сделать n-е количество правок за n-е количество дней. Можно сказать, защита от вандалов. | ||
|Администраторы| | |||
Имеют право на переименование и удаление статей, а также бан обычных участников и анонимов. | Имеют право на переименование и удаление статей, а также бан обычных участников и анонимов. | ||
|Администраторы интерфейса| | |||
А вот эти товарищи могут править служебные страницы типа [[MediaWiki:Common.css]]. Обычно выдают админам, которые умеют программировать. | А вот эти товарищи могут править служебные страницы типа [[MediaWiki:Common.css]]. Обычно выдают админам, которые умеют программировать. | ||
|Скрывающие| | |||
Группа, которая [[Именно то, что написано на упаковке|может скрывать данные]]. | Группа, которая [[Именно то, что написано на упаковке|может скрывать данные]]. | ||
Строка 136: | Строка 137: | ||
* удаление [[меметика|меметических]] угроз… | * удаление [[меметика|меметических]] угроз… | ||
|Бюрократы| | |||
Администраторы рангом повыше. Именно они назначают различных администраторов и имеют право лишить их флагов. | Администраторы рангом повыше. Именно они назначают различных администраторов и имеют право лишить их флагов. | ||
}} | |||
== Организация информации == | == Организация информации == |
Версия 15:37, 19 ноября 2024
MediaWiki — это открытый сайтовый движок, на котором работает множество википроектов — посмотрелка, википедия, викитропы и пр.
Серверная часть
Тут для работы движка важны по сути 3 вещи:
- Интерпретатор php — поскольку php это язык, на котором написана сама MediaWiki. Без комментариев.
- СУБД — система управления базой данных. Именно в ней хранятся правки, статьи, история, ники и прочее. По-умолчанию медиавики в качестве СУБД использует MariaDB или MySQL. Так же поддерживает PostgresSQL и SQLite. В старых версиях поддерживается OracleDB.
- Вебсервер с поддержкой PHP (чаще всего Apache2) — предоставляет файлы сайта для пользователей в интернете. Именно он позволяет получить доступ к сайту его посетителям. Он же может вызывать множество проблем если настроен криво.
От «свежести» этих 3 компонентов зависит какую версию движка можно установить.
На что обратить внимание будучи на сервере:
- Файл LocalSettings.php — тут содержатся настройки работы медиавики — подключаемые расширения, настройки, интеграция с другими сервисами. В общем, много всего.
- Папка extensions — сюда закидываются расширения, которые планируется установить.
- Папка maintance — тут содержатся скрипты обслуживания медиавики на php. Обновить структуру БД, поменять пароль, много всего.
Клиентская часть
NB: программисты могут смело пропустить, ибо тут общие сведения в основном.
HTML
HTML — язык гипертекстовой разметки, на котором собственно выводятся все сайты. HTML — это скелет любой страницы, для наведения марафета используется CSS (см. ниже).
В целях безопасности Медиавики поддерживает далеко не все теги. К тому же отдельные расширения добавляют собственные теги, которые отсутствуют в базовом HTML. Например, многим известную связку <nowiki>…</nowiki> .
CSS
CSS — каскадная таблица стилей. По сути это, то что превращает голый текст с дозой списков и ссылок в нечто более красивое.
Медиавики по умолчанию поставляется с 3 стилями для проекта. Можно при желании установить и другие.
Что тут есть:
- Общие таблицы. Применяется для всех пользователей попадающих под условие (нужная тема, группа). Их могут править только участники со специальными правами.
- MediaWiki:Common.css — здесь можно менять общее оформление для вообще всех вариантов интерфейса, а также создавать новые классы CSS для последующего использования в страницах, шаблонах и пр.
- Статьи вида MediaWiki:Тема.css - тоже что и выше, но для конкретной темы.
- Статья вида MediaWiki:Группа_пользователей.css (например MediaWiki:Group-sysop.css) - то же что и выше, но для отдельных групп пользователей.
- И другие
- Персональные таблицы. Являются подстатьёй страницы участника и описывают таблицы применяемые к конкретному участнику. Отключены по умолчанию из-за того что некоторые браузеры позволяют через них пропихивать JS код, но об этом в блоке ниже
Без расширений и ухищрений CSS задается для элементов либо по ссылке выше, либо прямо в html-теге с помощью атрибута style.
JS
JavaScript — третий кит современной всемирной паутины. Если HТML это скелет, CSS это внешность, то JS может всем этим управлять, ежели воля программиста на то будет.
Что тут есть:
- MediaWiki:Common.js — тут прописывается js-код, который автоматом подгружается для всех пользователей. Именно сюда записываются разнообразные свистоперделки наподобие реализации шаблона Вкладки. Доступ к редактированию по умолчанию строго ограничен.
- Пользовательский js-код — позволяет участникам писать свои скрипты на все случаи жизни. На медиавики отключен по умолчанию, поскольку это очевидная дыра в безопасности.
jQuery
Медиавики по умолчанию подгружает jQuery.
jQuery — это библиотека на JS, которая фокусируется на взаимодействии JavaScript и HTML. Библиотека jQuery помогает легко получать доступ к любому элементу DOM, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека jQuery предоставляет удобный API для работы с AJAX.
Если без програмерской зауми, то jQuery упрощает программирование на связке HTML+CSS+JS, но это не точно.
Vue
Ещё один фреймворк для JS, который есть в поставке движка с версии 1.35.
Один из фокусов Vue – создание интерфейсов.
Как тут творить?
Вики-текст
В MediaWiki встроен «язык» позволяющий добавлять различные красивости на страницу — вики-разметка (Wiki markup). Почему в кавычках? Потому что по большому счёту вики-разметка — это надстройка над обычным HTML заменяющая его не понятную большинству нормальных людей систему тегов на более вразумительную (по мнению авторов) систему последовательностей символов. То есть это значит что при большом желании статьи на вики можно форматировать при помощи голого CSS и HTML, что порой приходится делать, когда парсер (часть сайта отвечающая за перевод вики-разметки в HTML и CSS) даёт сбои.
Шаблоны
« | Любая достаточно сложная платформа содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины Common Lisp[1] | » |
— Сжатая цитата для иллюстрации подраздела |
Иногда возникают ситуации, когда нужно один и тот же кусок использовать в нескольких местах или разбить что-то большое на что-то маленькое. В нормальных языках программирования для этого используются функции, в вики-разметке используются шаблоны. Шаблон представляет собой статью находящуюся в специально выделенном пространстве имён и (опционально) подготовленную особым образом для вставки.
В простейшем виде шаблоны умеют только подставлять данные, которые в них передали. Такого функционала явно не хватало и пошло-поехало.
- Одни начали «ломать» этот язык, используя неочевидную логику шаблонов для работы. Условные ветвления, обход ограничения на рекурсию[2] — по сути это хакерство[3].
- Другие начали подключать расширения, которые добавляли языку шаблонов новые управляющие конструкции.
Синтаксис
В языке шаблонов не так уж и много элементов. В данный момент нас интересуют всего два:
- {{}} — (двойные фигурные скобки) включенное в них содержимое является вызовом шаблона.
- {{{}}} — (тройные фигурные скобки) включенное в неё содержимое является переменной внутри шаблона.
Чуете, куда ведёт?
Что можно применять в шаблонах:
- Разметка, HTML и CSS. Так как шаблон является обычной статьёй, то он поддерживает всё тоже самое что и обычная статья.
- Функции парсера. Так же фича которую можно использовать в обычных статьях, но чаще находит своё применение именно здесь.
- Параметры. При помощи специальных конструкций можно оставлять поля в которые при размещении шаблона можно указать нужный вам кусок. Почти ничем не ограничены и могут подставляться буквально целые куски разметки, главное чтобы итоговый результат для парсера сошёлся.
- Расширенные функции парсера. Математические действия, сравнения, отработка исключений, сложные условия и многое другое. Мощный инструмент позволяющий создавать гораздо более комплексные шаблоны чем обычно. Расширение поставляется вместе с самой медиавики, просто включите и наслаждайтесь.
- В шаблонах можно использовать скрипты написанные на Lua, но об этом в соответствующем разделе.
Сложности
- Первая и самая большая сложность — читаемость! Посмотрев на некоторое сложные шаблоны, например Шаблон:Infobox, понимаешь что их редактирование требует умения копаться в тексте ведь функционала современных IDE не завезли. Не даром вверху приведена цитата с Лиспом. Тем, кто программировал на C/C++ или других подобных по внешнему виду языках, должно быть попроще разобраться во всех этих хитросплетениях скобочек.
- Вторая сложность сильно способствующая первой — чувствительность парсера. В обычных языках программирования читаемость обеспечивается форматированием — пробелами, отступами и прочим. Но здесь, любой лишний символ считывается парсером и может превратить ваш лучший шаблон в бяку.
- Третье — кастрированность языка. Без расширений язык мало что может. Циклы? Рекурсия? Лямбды[4]? Условные ветвления? Пфф, ставь расширения, смерд. На самом деле это неудивительно, ведь язык шаблонов изначально и не был на такое рассчитан.
Проще говоря, язык шаблонов крайне плохой, поскольку вынуждает программиста говнокодить.
Lua
Где-то с 2015 года стал поставляться вместе с медиавики, став таким образом чем-то вроде языка программирования по умолчанию. Просто подключаем расширение в LocalSettings.php и изучаем язык.
Тут и читаемость и многие программерские штучки-дрючки. Без своих специфических недостатков, правда, не обошлось.
В любом случае, на Lua делать шаблоны проще, чем на языке фигурных скобочек.
Экзотика
Тут перечислены другие ЯП для продвинутого создания шаблонов и фич.
- PHP – есть расширение, которое позволяет писать код этом языке программирования.
- Widgets – это расширение предназначено для вставки произвольного кода. Знаете, там, карты, видео загрузить и пр. Но код-то можно вставить произвольный. Ничего не мешает запилить логику на JS, а всё остальное на HTML и CSS, причём разграничив всё друг от друга для удобства.
Права участников
По умолчанию в сайтах на двжике MediaWiki есть следующие группы пользователей:
АнонимыУчастникиАвтоподтверждённые участникиАдминистраторыАдминистраторы интерфейсаСкрывающиеБюрократы
Могут создавать и редактировать статьи и обсуждения к ним. Но анонимы по понятным причинам не могут стать администраторами, например.
Организация информации
Пространства имён
Базовый способ разграничения статей в МедиаВики, причём деление происходит по типу и роли страниц.
Все пространства имён (кроме основного) отделяются от статей двоеточием :
Рассмотрим некоторые пространства имён, которые есть на любом вики-проекте
Основное пространство
Именно в нём и находится 80% всех статей на сайте. Основное пространство никак не обозначается.
Участник / User
Это пространство, как не сложно догадаться, участников.
При создании учётки также неявно создаётся и статья об участнике. Именно благодаря этому можно посмотреть вклад участника, его права и пр.
{{SITENAME}} / Project
Обсуждение / Talk
Это даже не одно пространство, а целая куча пространств для других пространств:
- Для основного пространства – Обсуждение: / Talk:
- Для пространства участников – Обсуждение участника: / User talk:
- Много их!
При этом ничем друг от друга кроме префикса они не отличаются.
Категории
Подстраницы
Навигационные таблицы
Навигационные таблицы это шаблоны, в которых указываются ссылки на статьи. Группировка статей в таблице на ваше усмотрение.
Строго говоря, это фанон, поскольку навигационные таблицы не входят в поставку МедиаВики. Тем не менее таблицы навигации встречаются повсеместно на википроектах.
На каждом проекте нав. таблицы реализуются самостоятельно или в дело идёт копипаст с других проектов. Например, на этом сайте сабж реализован на Lua.
Примечания
- ↑ В том числе и сам Common Lisp – шутка программистов.
- ↑ Запрет нужен, чтобы страница и сервер не зависли.
- ↑ Небольшой ликбез: Хакерство многозначный термин. В данном случае подразумевается использование языка не по прямому назначению, что вызывает сложности в понимании, поддержке и пр.
- ↑ имеются ввиду безымянные шаблоны-функции внутри шаблона