Extension:BrowseImages/ru

From MediaWiki.org
Jump to: navigation, search
MediaWiki Extension
Crystal Clear action run.png
BrowseImages

Статус: beta

Области применения User interface
Используемые hook'и SkinTemplateContentActions
Описание Добавляет ссылки для следующей и предыдущей картинки в меню при просмотре страницы в именном пространстве Image.
Автор(ы) Robert Hänel (roberthaenel talk)
Версия 0.1 (2008-04-29)
MediaWiki 1.11
Ссылка для скачивания no link
Параметры $wgBrowseImagesGroupMode

Contents

[edit] Что этот плагин делает?

Этот плагин позволяет просматривать картинки в алфавитном порядке добавляя ссылки на "Следующий" и "Предыдущий" в меню при просмотре страницы в именном пространстве Image.

Так-же существует групповой метод работы, который подходит для галерей с именами в стиле Image:[some description][numbering].[extension] (например Image:Flowers 001.jpg - Image:Flowers 199.jpg). Если групповой метод работы включён, то просмотр возможет только внутри конкретной группы (ссылки Предыдущий и Следующий отключаются при просмотре первой и последней картинки в группе).

Этот плагин основан на Extension:Back-and-Forth (автор - Rob Church).

[edit] Инструкции скачивания

Скопируй код внузу и вставь его в $IP/extensions/BrowseImages/. Внимание: $IP обозначает корневую директорию установки MediaWiki, ту-же директорию, в которой находится LocalSettings.php.

[edit] Инсталляция

Чтобы установить этот плагин нужно добавить следующую строку в LocalSettings.php:

require_once("$IP/extensions/BrowseImages/BrowseImages.php");

Если надо разрешить групповой метод работы, так-же надо добавить:

$wgBrowseImagesGroupMode = true;

[edit] Код

[edit] BrowseImages.php

<?php
#
# BrowseImages extension for MediaWiki
#
# Installation:
#       create a new directory extensions/BrowseImages and copy all files there
#       add the following to LocalSettings.php:
#       require_once( "extensions/BrowseImages/BrowseImages.php" );
#
# Options:
#       add the following line to LocalSettings.php if you want to enable group mode:
#       $wgBrowseImagesGroupMode = true;
#       group mode is useful for galleries of images whose names match the pattern
#       Image:[some description][numbering].[extension], like for example
#       'Image:Flowers 001.jpg' to 'Image:Flowers 199.jpg'
#       if group mode is enabled, you can only browse within that group of images
#

if(! defined('MEDIAWIKI')) {
        die("This is a MediaWiki extension and can not be used standalone.\n");
}
 
$wgAutoloadClasses['BrowseImages'] = dirname( __FILE__ ) . '/BrowseImages.class.php';
$wgExtensionMessagesFiles['BrowseImages'] = dirname(__FILE__) . '/BrowseImages.i18n.php';
$wgExtensionFunctions[] = 'efBrowseImages';
$wgExtensionCredits['other'][] = array(
        'name' => 'BrowseImages',
        'description' => 'Adds links for next and previous image to the content actions menu
                when viewing a page in the Image namespace.',
        'version' => '0.1',
        'author' => 'Robert H&auml;nel',
        'url' => 'http://www.mediawiki.org/wiki/Extension:BrowseImages'
);
 
function efBrowseImages() {
        global $wgHooks;
        wfLoadExtensionMessages( 'BrowseImages' );
        $wgHooks['SkinTemplateContentActions'][] = 'BrowseImages::contentActionsHook';
}

[edit] BrowseImages.class.php

<?php
 
class BrowseImages {
 
        public static function contentActionsHook( &$content_actions) {
                global $wgTitle;
                if ( $wgTitle->getNamespace() == NS_IMAGE ) {
                        foreach( array( 'prev' => '<', 'next' => '>' ) as $kind => $op ) {
                                $link = self::getLink( $wgTitle, $op );
                                $class = $link ? false : 'inactive';
                                $action = $kind . 'img';
                                $content_actions[$action] = array(
                                        'class' => $class,
                                        'text' => htmlspecialchars( wfMsg( "browseimages-{$kind}" ) ),
                                        'href' => $link
                                );
                        }
                }
                return true;
        }
 
        private static function getLink( $title, $op ) {
                global $wgBrowseImagesGroupMode;
                $dbr = wfGetDB( DB_SLAVE );
                $res = $dbr->select(
                        'page',
                        array( 'page_namespace', 'page_title' ),
                        array(
                                'page_is_redirect' => 0,
                                'page_namespace' => $title->getNamespace(),
                                "page_title {$op} " . $dbr->addQuotes( $title->getDBkey() ),
                        ),
                        __METHOD__,
                        array(
                                'ORDER BY' => 'page_title' . ( $op == '<' ? ' DESC' : '' ),
                                'LIMIT' => 1,
                        )
                );
                if( $dbr->numRows( $res ) > 0 ) {
                        $row = $dbr->fetchObject( $res );
                        $dbr->freeResult( $res );
                        $target = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
                        if( $target instanceof Title ) {
                                if ($wgBrowseImagesGroupMode) {
                                        $titlegroup = '';
                                        $targetgroup = '';
                                        $regex = '/^(.+)\D\d+(\.\w+)?/';
                                        if (preg_match($regex, $title, $matches)) {
                                                $titlegroup = $matches[1];
                                        }
                                        if (preg_match($regex, $target, $matches)) {
                                                $targetgroup = $matches[1];
                                        }
                                        if ((!empty($titlegroup)) && ($titlegroup === $targetgroup)) {
                                                return $target->escapeLocalURL();
                                        }
                                } else {
                                        return $target->escapeLocalURL();
                                }
                        }
                }
                return false;
        }
 
}

[edit] BrowseImages.i18n.php

<?php
 
$messages = array();
 
$messages['en'] = array(
        'browseimages-next' => 'Next',
        'browseimages-prev' => 'Previous',
);
 
$messages['de'] = array(
        'browseimages-next' => 'Vor',
        'browseimages-prev' => 'Zurück',
);
 
$messages['zh-tw'] = array(
        'browseimages-next' => '下一張',
        'browseimages-prev' => '前一張',
);
 
$messages['es'] = array(
        'browseimages-next' => 'Siguiente',
        'browseimages-prev' => 'Anterior',
);
 
$messages['ru'] = array(
        'browseimages-next' => 'Следующий',
        'browseimages-prev' => 'Предыдущий',
);

[edit] Смотри также

Язык: English  • Русский
Personal tools
Namespaces

Variants
Actions
Navigation
Support
Download
Development
Communication
Print/export
Toolbox