Extension:SpecialPagesChangeLocation/ru

From MediaWiki.org
Jump to: navigation, search
MediaWiki Extension
Crystal Clear action run.png
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  • Русский
Personal tools
Namespaces

Variants
Actions
Navigation
Support
Download
Development
Communication
Print/export
Toolbox