Extension:BetaFeatures/ru

Расширение BetaFeatures позволяет другим расширениям MediaWiki регистрировать бета-функции в списке пользовательских настроек на вики. Расширение использует существующую архитектуру пользовательских настроек и несколько служебных страниц для выполнения своей работы.

Использование новых приёмов в вашем расширении
Использование этого расширения для поддержки вашей бета-функции просто. Зарегистрируйте привязку типа "GetBetaFeaturePreferences" в основном файле вашего расширения — синтаксис практически идентичен таковому у привязки GetPreferences, но с небольшими изменениями для поддержки необходимого нам в этом случае типа настройки.

In :

In :

Затем вы можете использовать функцию, предоставленную BetaFeatures для удобства, чтобы проверить, включена ли эта бета-возможность.

Вы также можете использовать обычные проверки на настройки, но не проверяйте на истинные и ложные значения, а используйте значения из класса HTMLFeatureField.

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

If you want to also use your extension without BetaFeatures, you should also check for its existence, e.g.:

Configuration
The  config variable can be used to limit which beta features are shown in preferences. By default it is empty, and all beta features are shown.

If it is used then in order for a beta feature to show up in the preferences it needs to be listed in the whitelist. This config variable accepts an array of strings. Each string should be the name of a beta feature as specified in the preference definition passed to. For example, in the code given above, the name of the beta feature is, so you would need to add that string to the   array in your wiki configs.

Расширенное использование
Хотите увидеть кое-что по-настоящему крутое?

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

Управление зависимостями
Затем мы можем на самом деле определить управление зависимостями для каждой возможности. Чтобы сделать это, мы сначала регистрируем название (name) привязки, которую мы хотим использовать для этого, в привязке "GetBetaFeatureDependencyHooks", затем мы регистрируем привязку этого типа, которая проверяет наличие требуемого кода, и возвращает true, если требование удовлетворено, а иначе возвращает false.

Вы можете злоупотреблять использовать эту возможность, чтобы выполнять отключение возможностей, отмеченных как зависимые, для каждой вики. Но это уже просто запредельное хакерство. Вам, скорее всего, не следует этого делать. Я слышу, как вы об этом подумываете вот прямо сейчас. Прекратите.

Фигня про базы данных
Определена таблица базы данных, которая используется BetaFeatures. Но вы можете оказаться в замешательстве, если попытаетесь использовать её локально.

Мы используем очередь заданий, чтобы выполнять обновление этой таблицы, когда кэш устаревает (TTL 30 минут). Если ваша вики настроена таким образом, что она выполняет задания по каждому запросу, то будет выполнен один ооооооочень медленный запрос каждые 30 минут, а остальное будет относительно быстрым. Если вы настраиваете свою вики, чтобы она выполняла задания через cron, всё будет работать намного лучше.

См. также

 * Бета-функции
 * План развития
 * План развёртывания