Extension:SpecialPagesChangeLocation/ru
From MediaWiki.org
|
SpecialPagesChangeLocation Статус: beta |
|
|---|---|
| Области применения | User interface, Namespace -deprecated |
| Описание | |
| Автор(ы) | Jean-Lou Dupont |
| Версия | Смотри SVN |
| MediaWiki | Протестировано на 1.10, но скорее всего так-же работает но более ранних версиях |
| Ссылка для скачивания | SVN |
Contents |
[edit] Мотивация для создания
Этот плагин позволяет изменять страницу, которая перечисляет существующие служебные страницы, обычно это страница Special:Specialpages.
[edit] Возможности
- Выводит сообщение в Special:Version если новая страница не существует
- Позволяет располагать список служебных страниц в любом именном пространстве
- Локализация сообщений
- Изменяет ссылку только если новая страница существует
[edit] Использование
Отредактирую страницу где будет находится список служебных страниц. Как правило эта страница должна быть защищена. Если нужно добавить динамические элементы в новой странице (например список служебных страниц созданных плагинами), то нужно (например) использовать функции парсера из Extension:PageFunctions.
[edit] Инсталляция
- Скопируй файлы плагина с репозитории SVN, используя предоставленную ссылку, в директорию плагинов (например /extensions/SpecialPagesChangeLocation)
- Отредактирую
LocalSettings.phpдобавив:
require('extensions/SpecialPagesChangeLocation/SpecialPagesChangeLocation.php'); // e.g. MediaWiki:SpecialPages SpecialPagesChangeLocation::setPage( 'СтраницаГдеБудетНовыйСписок' );
[edit] История
[edit] Смотри также
Этот плагин является частью Платформы BizzWiki.
[edit] Код
*/ $wgExtensionCredits['other'][] = array( 'name' => 'SpecialPagesChangeLocation', 'version' => '$Id: SpecialPagesChangeLocation.php 729 2007-09-07 18:09:42Z JeanLou.Dupont $', 'author' => 'Jean-Lou Dupont', 'url' => 'http://www.mediawiki.org/wiki/Extension:SpecialPagesChangeLocation', 'description' => "Enables changing the location of the page which lists the Special Pages.", ); $wgExtensionFunctions[] = create_function('','return SpecialPagesChangeLocation::setup();' ); require('SpecialPagesChangeLocation.i18n.php'); class SpecialPagesChangeLocation { const thisType = 'other'; const thisName = 'SpecialPagesChangeLocation'; // defaults to the ... default (!) static $page = 'Special:Specialpages'; static $doHook = false; static $msg = array(); public static function setPage( $page = null ) { if ($page === null) return; self::$page = $page; self::$doHook = true; } public function setup() { global $wgMessageCache; foreach( self::$msg as $key => $value ) $wgMessageCache->addMessages( self::$msg[$key], $key ); global $wgHooks; $wgHooks['SpecialVersionExtensionTypes'][] = 'SpecialPagesChangeLocation::hSpecialVersionExtensionTypes'; // do substitution only if a new page is set. if (!self::$doHook) return; // If the default is changed & the page exists THEN // hook up the appropriate vector so we can substitute if (!self::checkpage()) return; $wgHooks['SkinTemplateOutputPageBeforeExec'][] = 'SpecialPagesChangeLocation::hSkinTemplateOutputPageBeforeExec'; } public static function hSkinTemplateOutputPageBeforeExec( &$skin, &$tpl ) { // get the current nav url list // There is no 'get' method so we have to hack... $urls = $tpl->data['nav_urls']; // build the URI $title = Title::newFromText( self::$page ); $href = $title->getLocalURL(); // substitute $urls['specialpages'] = array( 'href' => $href ); $tpl->set('nav_urls', $urls); // play nice return true; } /** Help the user by providing messages in the [[Special:Version]] page. */ public function hSpecialVersionExtensionTypes( &$sp, &$extensionTypes ) { global $wgExtensionCredits; $result = null; if (!self::checkPage( $title )) $result = wfMsgForContent('specialpageschangelocation-page-not-exist', self::$page ); foreach ( $wgExtensionCredits[self::thisType] as $index => &$el ) if (isset($el['name'])) if ($el['name']==self::thisName) $el['description'].=$result; return true; // continue hook-chain. } private static function checkPage() { $title = Title::newFromText( self::$page ); return $title->exists(); } } //
| Язык: | English • Русский |
|---|
