|
@ -1,13 +0,0 @@
|
|||
<?php
|
||||
// This file exists to ensure that base classes are preloaded before
|
||||
// Chick.php is compiled, working around a bug in the APC opcode
|
||||
// cache on PHP 5, where cached code can break if the include order
|
||||
// changed on a subsequent page view.
|
||||
// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
|
||||
|
||||
if ( ! defined( 'MEDIAWIKI' ) )
|
||||
die( 1 );
|
||||
|
||||
require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
|
||||
require_once( dirname(__FILE__) . '/MonoBook.php' );
|
||||
|
32
Chick.php
|
@ -1,32 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Chick: A lightweight Monobook skin with no sidebar, the sidebar links are
|
||||
* given at the bottom of the page instead, as in the unstyled MySkin.
|
||||
*
|
||||
* @file
|
||||
* @ingroup Skins
|
||||
*/
|
||||
|
||||
if( !defined( 'MEDIAWIKI' ) )
|
||||
die( -1 );
|
||||
|
||||
/** */
|
||||
require_once( dirname(__FILE__) . '/MonoBook.php' );
|
||||
|
||||
/**
|
||||
* Inherit main code from SkinTemplate, set the CSS and template filter.
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class SkinChick extends SkinTemplate {
|
||||
var $skinname = 'chick', $stylename = 'chick',
|
||||
$template = 'MonoBookTemplate', $useHeadElement = true;
|
||||
|
||||
function setupSkinUserCss( OutputPage $out ){
|
||||
parent::setupSkinUserCss( $out );
|
||||
// Append to the default screen common & print styles...
|
||||
$out->addStyle( 'chick/main.css', 'screen,handheld' );
|
||||
$out->addStyle( 'chick/IE50Fixes.css', 'screen,handheld', 'lt IE 5.5000' );
|
||||
$out->addStyle( 'chick/IE55Fixes.css', 'screen,handheld', 'IE 5.5000' );
|
||||
$out->addStyle( 'chick/IE60Fixes.css', 'screen,handheld', 'IE 6' );
|
||||
}
|
||||
}
|
366
CologneBlue.php
|
@ -1,366 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Cologne Blue: A nicer-looking alternative to Standard.
|
||||
*
|
||||
* @todo document
|
||||
* @file
|
||||
* @ingroup Skins
|
||||
*/
|
||||
|
||||
if( !defined( 'MEDIAWIKI' ) ) {
|
||||
die( -1 );
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo document
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class SkinCologneBlue extends Skin {
|
||||
|
||||
function getStylesheet() {
|
||||
return 'common/cologneblue.css';
|
||||
}
|
||||
|
||||
function getSkinName() {
|
||||
return 'cologneblue';
|
||||
}
|
||||
|
||||
function doBeforeContent() {
|
||||
$qb = $this->qbSetting();
|
||||
$mainPageObj = Title::newMainPage();
|
||||
|
||||
$s = "\n<div id='content'>\n<div id='topbar'>" .
|
||||
'<table width="100%" border="0" cellspacing="0" cellpadding="8"><tr>';
|
||||
|
||||
$s .= '<td class="top" align="left" valign="middle" nowrap="nowrap">';
|
||||
$s .= '<a href="' . $mainPageObj->escapeLocalURL() . '">';
|
||||
$s .= '<span id="sitetitle">' . wfMsg( 'sitetitle' ) . '</span></a>';
|
||||
|
||||
$s .= '</td><td class="top" align="right" valign="bottom" width="100%">';
|
||||
$s .= $this->sysLinks();
|
||||
$s .= '</td></tr><tr><td valign="top">';
|
||||
|
||||
$s .= '<font size="-1"><span id="sitesub">';
|
||||
$s .= htmlspecialchars( wfMsg( 'sitesubtitle' ) ) . '</span></font>';
|
||||
$s .= '</td><td align="right">';
|
||||
|
||||
$s .= '<font size="-1"><span id="langlinks">';
|
||||
$s .= str_replace( '<br />', '', $this->otherLanguages() );
|
||||
$cat = $this->getCategoryLinks();
|
||||
if( $cat ) {
|
||||
$s .= "<br />$cat\n";
|
||||
}
|
||||
$s .= '<br />' . $this->pageTitleLinks();
|
||||
$s .= '</span></font>';
|
||||
|
||||
$s .= "</td></tr></table>\n";
|
||||
|
||||
$s .= "\n</div>\n<div id='article'>";
|
||||
|
||||
$notice = wfGetSiteNotice();
|
||||
if( $notice ) {
|
||||
$s .= "\n<div id='siteNotice'>$notice</div>\n";
|
||||
}
|
||||
$s .= $this->pageTitle();
|
||||
$s .= $this->pageSubtitle() . "\n";
|
||||
return $s;
|
||||
}
|
||||
|
||||
function doAfterContent(){
|
||||
global $wgLang;
|
||||
|
||||
$s = "\n</div><br clear='all' />\n";
|
||||
|
||||
$s .= "\n<div id='footer'>";
|
||||
$s .= '<table width="98%" border="0" cellspacing="0"><tr>';
|
||||
|
||||
$qb = $this->qbSetting();
|
||||
if ( 1 == $qb || 3 == $qb ) { # Left
|
||||
$s .= $this->getQuickbarCompensator();
|
||||
}
|
||||
$s .= '<td class="bottom" align="center" valign="top">';
|
||||
|
||||
$s .= $this->bottomLinks();
|
||||
$s .= $wgLang->pipeList( array(
|
||||
"\n<br />" . $this->link(
|
||||
Title::newMainPage(),
|
||||
null,
|
||||
array(),
|
||||
array(),
|
||||
array( 'known', 'noclasses' )
|
||||
),
|
||||
$this->aboutLink(),
|
||||
$this->searchForm( wfMsg( 'qbfind' ) )
|
||||
) );
|
||||
|
||||
$s .= "\n<br />" . $this->pageStats();
|
||||
|
||||
$s .= '</td>';
|
||||
if ( 2 == $qb ) { # Right
|
||||
$s .= $this->getQuickbarCompensator();
|
||||
}
|
||||
$s .= "</tr></table>\n</div>\n</div>\n";
|
||||
|
||||
if ( 0 != $qb ) {
|
||||
$s .= $this->quickBar();
|
||||
}
|
||||
return $s;
|
||||
}
|
||||
|
||||
function reallyGenerateUserStylesheet() {
|
||||
$s = parent::reallyGenerateUserStylesheet();
|
||||
$qb = $this->qbSetting();
|
||||
|
||||
if ( 2 == $qb ) { # Right
|
||||
$s .= "#quickbar { position: absolute; right: 4px; }\n" .
|
||||
"#article { margin-left: 4px; margin-right: 148px; }\n";
|
||||
} elseif ( 1 == $qb ) {
|
||||
$s .= "#quickbar { position: absolute; left: 4px; }\n" .
|
||||
"#article { margin-left: 148px; margin-right: 4px; }\n";
|
||||
} elseif ( 3 == $qb ) { # Floating left
|
||||
$s .= "#quickbar { position:absolute; left:4px } \n" .
|
||||
"#topbar { margin-left: 148px }\n" .
|
||||
"#article { margin-left:148px; margin-right: 4px; } \n" .
|
||||
"body>#quickbar { position:fixed; left:4px; top:4px; overflow:auto ;bottom:4px;} \n"; # Hides from IE
|
||||
} elseif ( 4 == $qb ) { # Floating right
|
||||
$s .= "#quickbar { position: fixed; right: 4px; } \n" .
|
||||
"#topbar { margin-right: 148px }\n" .
|
||||
"#article { margin-right: 148px; margin-left: 4px; } \n" .
|
||||
"body>#quickbar { position: fixed; right: 4px; top: 4px; overflow: auto ;bottom:4px;} \n"; # Hides from IE
|
||||
}
|
||||
return $s;
|
||||
}
|
||||
|
||||
function sysLinks() {
|
||||
global $wgUser, $wgLang, $wgContLang;
|
||||
$li = SpecialPage::getTitleFor( 'Userlogin' );
|
||||
$lo = SpecialPage::getTitleFor( 'Userlogout' );
|
||||
|
||||
$rt = $this->mTitle->getPrefixedURL();
|
||||
if ( 0 == strcasecmp( urlencode( $lo ), $rt ) ) {
|
||||
$q = array();
|
||||
} else {
|
||||
$q = array( 'returnto' => $rt );
|
||||
}
|
||||
|
||||
$s = array(
|
||||
$this->mainPageLink(),
|
||||
$this->linkKnown(
|
||||
Title::newFromText( wfMsgForContent( 'aboutpage' ) ),
|
||||
wfMsg( 'about' )
|
||||
),
|
||||
$this->linkKnown(
|
||||
Title::newFromText( wfMsgForContent( 'helppage' ) ),
|
||||
wfMsg( 'help' )
|
||||
),
|
||||
$this->linkKnown(
|
||||
Title::newFromText( wfMsgForContent( 'faqpage' ) ),
|
||||
wfMsg( 'faq' )
|
||||
),
|
||||
$this->specialLink( 'specialpages' )
|
||||
);
|
||||
|
||||
/* show links to different language variants */
|
||||
if( $this->variantLinks() ) {
|
||||
$s[] = $this->variantLinks();
|
||||
}
|
||||
if( $this->extensionTabLinks() ) {
|
||||
$s[] = $this->extensionTabLinks();
|
||||
}
|
||||
if ( $wgUser->isLoggedIn() ) {
|
||||
$s[] = $this->linkKnown(
|
||||
$lo,
|
||||
wfMsg( 'logout' ),
|
||||
array(),
|
||||
$q
|
||||
);
|
||||
} else {
|
||||
$s[] = $this->linkKnown(
|
||||
$li,
|
||||
wfMsg( 'login' ),
|
||||
array(),
|
||||
$q
|
||||
);
|
||||
}
|
||||
|
||||
return $wgLang->pipeList( $s );
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the sidebar
|
||||
* @access private
|
||||
*/
|
||||
function quickBar(){
|
||||
global $wgOut, $wgUser, $wgEnableUploads;
|
||||
|
||||
$tns = $this->mTitle->getNamespace();
|
||||
|
||||
$s = "\n<div id='quickbar'>";
|
||||
|
||||
$sep = '<br />';
|
||||
$s .= $this->menuHead( 'qbfind' );
|
||||
$s .= $this->searchForm();
|
||||
|
||||
$s .= $this->menuHead( 'qbbrowse' );
|
||||
|
||||
# Use the first heading from the Monobook sidebar as the "browse" section
|
||||
$bar = $this->buildSidebar();
|
||||
unset( $bar['SEARCH'] );
|
||||
unset( $bar['LANGUAGES'] );
|
||||
unset( $bar['TOOLBOX'] );
|
||||
$browseLinks = reset( $bar );
|
||||
|
||||
foreach ( $browseLinks as $link ) {
|
||||
if ( $link['text'] != '-' ) {
|
||||
$s .= "<a href=\"{$link['href']}\">" .
|
||||
htmlspecialchars( $link['text'] ) . '</a>' . $sep;
|
||||
}
|
||||
}
|
||||
|
||||
if ( $wgOut->isArticle() ) {
|
||||
$s .= $this->menuHead( 'qbedit' );
|
||||
$s .= '<strong>' . $this->editThisPage() . '</strong>';
|
||||
|
||||
$s .= $sep . $this->linkKnown(
|
||||
Title::newFromText( wfMsgForContent( 'edithelppage' ) ),
|
||||
wfMsg( 'edithelp' )
|
||||
);
|
||||
|
||||
if( $wgUser->isLoggedIn() ) {
|
||||
$s .= $sep . $this->moveThisPage();
|
||||
}
|
||||
if ( $wgUser->isAllowed( 'delete' ) ) {
|
||||
$dtp = $this->deleteThisPage();
|
||||
if ( $dtp != '' ) {
|
||||
$s .= $sep . $dtp;
|
||||
}
|
||||
}
|
||||
if ( $wgUser->isAllowed( 'protect' ) ) {
|
||||
$ptp = $this->protectThisPage();
|
||||
if ( $ptp != '' ) {
|
||||
$s .= $sep . $ptp;
|
||||
}
|
||||
}
|
||||
$s .= $sep;
|
||||
|
||||
$s .= $this->menuHead( 'qbpageoptions' );
|
||||
$s .= $this->talkLink()
|
||||
. $sep . $this->commentLink()
|
||||
. $sep . $this->printableLink();
|
||||
if ( $wgUser->isLoggedIn() ) {
|
||||
$s .= $sep . $this->watchThisPage();
|
||||
}
|
||||
|
||||
$s .= $sep;
|
||||
|
||||
$s .= $this->menuHead( 'qbpageinfo' )
|
||||
. $this->historyLink()
|
||||
. $sep . $this->whatLinksHere()
|
||||
. $sep . $this->watchPageLinksLink();
|
||||
|
||||
if( $tns == NS_USER || $tns == NS_USER_TALK ) {
|
||||
$id = User::idFromName( $this->mTitle->getText() );
|
||||
if( $id != 0 ) {
|
||||
$s .= $sep . $this->userContribsLink();
|
||||
if( $this->showEmailUser( $id ) ) {
|
||||
$s .= $sep . $this->emailUserLink();
|
||||
}
|
||||
}
|
||||
}
|
||||
$s .= $sep;
|
||||
}
|
||||
|
||||
$s .= $this->menuHead( 'qbmyoptions' );
|
||||
if ( $wgUser->isLoggedIn() ) {
|
||||
$name = $wgUser->getName();
|
||||
$tl = $this->link(
|
||||
$wgUser->getTalkPage(),
|
||||
wfMsg( 'mytalk' ),
|
||||
array(),
|
||||
array(),
|
||||
array( 'known', 'noclasses' )
|
||||
);
|
||||
if ( $wgUser->getNewtalk() ) {
|
||||
$tl .= ' *';
|
||||
}
|
||||
|
||||
$s .= $this->link(
|
||||
$wgUser->getUserPage(),
|
||||
wfMsg( 'mypage' ),
|
||||
array(),
|
||||
array(),
|
||||
array( 'known', 'noclasses' )
|
||||
) . $sep . $tl . $sep . $this->specialLink( 'watchlist' )
|
||||
. $sep .
|
||||
$this->link(
|
||||
SpecialPage::getSafeTitleFor( 'Contributions', $wgUser->getName() ),
|
||||
wfMsg( 'mycontris' ),
|
||||
array(),
|
||||
array(),
|
||||
array( 'known', 'noclasses' )
|
||||
) . $sep . $this->specialLink( 'preferences' )
|
||||
. $sep . $this->specialLink( 'userlogout' );
|
||||
} else {
|
||||
$s .= $this->specialLink( 'userlogin' );
|
||||
}
|
||||
|
||||
$s .= $this->menuHead( 'qbspecialpages' )
|
||||
. $this->specialLink( 'newpages' )
|
||||
. $sep . $this->specialLink( 'listfiles' )
|
||||
. $sep . $this->specialLink( 'statistics' );
|
||||
if ( $wgUser->isLoggedIn() && $wgEnableUploads ) {
|
||||
$s .= $sep . $this->specialLink( 'upload' );
|
||||
}
|
||||
|
||||
global $wgSiteSupportPage;
|
||||
|
||||
if( $wgSiteSupportPage ) {
|
||||
$s .= $sep . '<a href="' . htmlspecialchars( $wgSiteSupportPage ) . '" class="internal">'
|
||||
. wfMsg( 'sitesupport' ) . '</a>';
|
||||
}
|
||||
|
||||
$s .= $sep . $this->link(
|
||||
SpecialPage::getTitleFor( 'Specialpages' ),
|
||||
wfMsg( 'moredotdotdot' ),
|
||||
array(),
|
||||
array(),
|
||||
array( 'known', 'noclasses' )
|
||||
);
|
||||
|
||||
$s .= $sep . "\n</div>\n";
|
||||
return $s;
|
||||
}
|
||||
|
||||
function menuHead( $key ) {
|
||||
$s = "\n<h6>" . wfMsg( $key ) . "</h6>";
|
||||
return $s;
|
||||
}
|
||||
|
||||
function searchForm( $label = '' ) {
|
||||
global $wgRequest, $wgUseTwoButtonsSearchForm;
|
||||
|
||||
$search = $wgRequest->getText( 'search' );
|
||||
$action = $this->escapeSearchLink();
|
||||
$s = "<form id=\"searchform{$this->searchboxes}\" method=\"get\" class=\"inline\" action=\"$action\">";
|
||||
if( $label != '' ) {
|
||||
$s .= "{$label}: ";
|
||||
}
|
||||
|
||||
$s .= "<input type='text' id=\"searchInput{$this->searchboxes}\" class=\"mw-searchInput\" name=\"search\" size=\"14\" value=\""
|
||||
. htmlspecialchars( substr( $search, 0, 256 ) ) . "\" /><br />"
|
||||
. "<input type='submit' id=\"searchGoButton{$this->searchboxes}\" class=\"searchButton\" name=\"go\" value=\"" . htmlspecialchars( wfMsg( 'searcharticle' ) ) . "\" />";
|
||||
|
||||
if( $wgUseTwoButtonsSearchForm ) {
|
||||
$s .= "<input type='submit' id=\"mw-searchButton{$this->searchboxes}\" class=\"searchButton\" name=\"fulltext\" value=\"" . htmlspecialchars( wfMsg( 'search' ) ) . "\" />\n";
|
||||
} else {
|
||||
$s .= '<div><a href="' . $action . '" rel="search">' . wfMsg( 'powersearch-legend' ) . "</a></div>\n";
|
||||
}
|
||||
|
||||
$s .= '</form>';
|
||||
|
||||
// Ensure unique id's for search boxes made after the first
|
||||
$this->searchboxes = $this->searchboxes == '' ? 2 : $this->searchboxes + 1;
|
||||
|
||||
return $s;
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
// This file exists to ensure that base classes are preloaded before
|
||||
// Modern.php is compiled, working around a bug in the APC opcode
|
||||
// cache on PHP 5, where cached code can break if the include order
|
||||
// changed on a subsequent page view.
|
||||
// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
|
||||
|
||||
if ( ! defined( 'MEDIAWIKI' ) )
|
||||
die( 1 );
|
||||
|
||||
require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php' );
|
||||
|
338
Modern.php
|
@ -1,338 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Modern skin, derived from monobook template.
|
||||
*
|
||||
* @todo document
|
||||
* @file
|
||||
* @ingroup Skins
|
||||
*/
|
||||
|
||||
if( !defined( 'MEDIAWIKI' ) )
|
||||
die( -1 );
|
||||
|
||||
/**
|
||||
* Inherit main code from SkinTemplate, set the CSS and template filter.
|
||||
* @todo document
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class SkinModern extends SkinTemplate {
|
||||
var $skinname = 'modern', $stylename = 'modern',
|
||||
$template = 'ModernTemplate', $useHeadElement = true;
|
||||
|
||||
/*
|
||||
* We don't like the default getPoweredBy, the icon clashes with the
|
||||
* skin L&F.
|
||||
*/
|
||||
function getPoweredBy() {
|
||||
global $wgVersion;
|
||||
return "<div class='mw_poweredby'>Powered by MediaWiki $wgVersion</div>";
|
||||
}
|
||||
|
||||
function setupSkinUserCss( OutputPage $out ){
|
||||
global $wgStyleVersion, $wgJsMimeType, $wgStylePath;
|
||||
|
||||
// Do not call parent::setupSkinUserCss(), we have our own print style
|
||||
$out->addStyle( 'common/shared.css', 'screen' );
|
||||
$out->addStyle( 'modern/main.css', 'screen' );
|
||||
$out->addStyle( 'modern/print.css', 'print' );
|
||||
$out->addStyle( 'modern/rtl.css', 'screen', '', 'rtl' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo document
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class ModernTemplate extends QuickTemplate {
|
||||
var $skin;
|
||||
/**
|
||||
* Template filter callback for Modern skin.
|
||||
* Takes an associative array of data set from a SkinTemplate-based
|
||||
* class, and a wrapper for MediaWiki's localization database, and
|
||||
* outputs a formatted page.
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function execute() {
|
||||
global $wgRequest, $wgOut;
|
||||
$this->skin = $skin = $this->data['skin'];
|
||||
$action = $wgRequest->getText( 'action' );
|
||||
|
||||
// Suppress warnings to prevent notices about missing indexes in $this->data
|
||||
wfSuppressWarnings();
|
||||
|
||||
$this->html( 'headelement' );
|
||||
?>
|
||||
|
||||
<!-- heading -->
|
||||
<div id="mw_header"><h1 id="firstHeading"><?php $this->html('title') ?></h1></div>
|
||||
|
||||
<div id="mw_main">
|
||||
<div id="mw_contentwrapper">
|
||||
<!-- navigation portlet -->
|
||||
<div id="p-cactions" class="portlet">
|
||||
<h5><?php $this->msg('views') ?></h5>
|
||||
<div class="pBody">
|
||||
<ul>
|
||||
<?php foreach($this->data['content_actions'] as $key => $tab) {
|
||||
echo '
|
||||
<li id="' . Sanitizer::escapeId( "ca-$key" ) . '"';
|
||||
if( $tab['class'] ) {
|
||||
echo ' class="'.htmlspecialchars($tab['class']).'"';
|
||||
}
|
||||
echo'><a href="'.htmlspecialchars($tab['href']).'"';
|
||||
# We don't want to give the watch tab an accesskey if the
|
||||
# page is being edited, because that conflicts with the
|
||||
# accesskey on the watch checkbox. We also don't want to
|
||||
# give the edit tab an accesskey, because that's fairly su-
|
||||
# perfluous and conflicts with an accesskey (Ctrl-E) often
|
||||
# used for editing in Safari.
|
||||
if( in_array( $action, array( 'edit', 'submit' ) )
|
||||
&& in_array( $key, array( 'edit', 'watch', 'unwatch' ))) {
|
||||
echo $skin->tooltip( "ca-$key" );
|
||||
} else {
|
||||
echo $skin->tooltipAndAccesskey( "ca-$key" );
|
||||
}
|
||||
echo '>'.htmlspecialchars($tab['text']).'</a></li>';
|
||||
} ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- content -->
|
||||
<div id="mw_content">
|
||||
<!-- contentholder does nothing by default, but it allows users to style the text inside
|
||||
the content area without affecting the meaning of 'em' in #mw_content, which is used
|
||||
for the margins -->
|
||||
<div id="mw_contentholder" <?php $this->html("specialpageattributes") ?>>
|
||||
<div class='mw-topboxes'>
|
||||
<div id="mw-js-message" style="display:none;"<?php $this->html('userlangattributes')?>></div>
|
||||
<div class="mw-topbox" id="siteSub"><?php $this->msg('tagline') ?></div>
|
||||
<?php if($this->data['newtalk'] ) {
|
||||
?><div class="usermessage mw-topbox"><?php $this->html('newtalk') ?></div>
|
||||
<?php } ?>
|
||||
<?php if($this->data['sitenotice']) {
|
||||
?><div class="mw-topbox" id="siteNotice"><?php $this->html('sitenotice') ?></div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
<div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html('subtitle') ?></div>
|
||||
|
||||
<?php if($this->data['undelete']) { ?><div id="contentSub2"><?php $this->html('undelete') ?></div><?php } ?>
|
||||
<?php if($this->data['showjumplinks']) { ?><div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#mw_portlets"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div><?php } ?>
|
||||
|
||||
<?php $this->html('bodytext') ?>
|
||||
<div class='mw_clear'></div>
|
||||
<?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
|
||||
<?php $this->html ('dataAfterContent') ?>
|
||||
</div><!-- mw_contentholder -->
|
||||
</div><!-- mw_content -->
|
||||
</div><!-- mw_contentwrapper -->
|
||||
|
||||
<div id="mw_portlets"<?php $this->html("userlangattributes") ?>>
|
||||
|
||||
<!-- portlets -->
|
||||
<?php
|
||||
$sidebar = $this->data['sidebar'];
|
||||
if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
|
||||
if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
|
||||
if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
|
||||
|
||||
foreach ($sidebar as $boxName => $cont) {
|
||||
if ( $boxName == 'SEARCH' ) {
|
||||
$this->searchBox();
|
||||
} elseif ( $boxName == 'TOOLBOX' ) {
|
||||
$this->toolbox();
|
||||
} elseif ( $boxName == 'LANGUAGES' ) {
|
||||
$this->languageBox();
|
||||
} else {
|
||||
$this->customBox( $boxName, $cont );
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
</div><!-- mw_portlets -->
|
||||
|
||||
|
||||
</div><!-- main -->
|
||||
|
||||
<div class="mw_clear"></div>
|
||||
|
||||
<!-- personal portlet -->
|
||||
<div class="portlet" id="p-personal">
|
||||
<h5><?php $this->msg('personaltools') ?></h5>
|
||||
<div class="pBody">
|
||||
<ul>
|
||||
<?php foreach($this->data['personal_urls'] as $key => $item) { ?>
|
||||
<li id="<?php echo Sanitizer::escapeId( "pt-$key" ) ?>"<?php
|
||||
if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php
|
||||
echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php
|
||||
if(!empty($item['class'])) { ?> class="<?php
|
||||
echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
|
||||
echo htmlspecialchars($item['text']) ?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- footer -->
|
||||
<div id="footer"<?php $this->html('userlangattributes') ?>>
|
||||
<ul id="f-list">
|
||||
<?php
|
||||
$footerlinks = array(
|
||||
'lastmod', 'viewcount', 'numberofwatchingusers', 'credits', 'copyright',
|
||||
'privacy', 'about', 'disclaimer', 'tagline',
|
||||
);
|
||||
foreach( $footerlinks as $aLink ) {
|
||||
if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
|
||||
?> <li id="<?php echo$aLink?>"><?php $this->html($aLink) ?></li>
|
||||
<?php }
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<?php echo $this->html("poweredbyico"); ?>
|
||||
</div>
|
||||
|
||||
<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
|
||||
<?php $this->html('reporttime') ?>
|
||||
<?php if ( $this->data['debug'] ): ?>
|
||||
<!-- Debug output:
|
||||
<?php $this->text( 'debug' ); ?>
|
||||
-->
|
||||
<?php endif; ?>
|
||||
</body></html>
|
||||
<?php
|
||||
wfRestoreWarnings();
|
||||
} // end of execute() method
|
||||
|
||||
/*************************************************************************************************/
|
||||
function searchBox() {
|
||||
global $wgUseTwoButtonsSearchForm;
|
||||
?>
|
||||
<!-- search -->
|
||||
<div id="p-search" class="portlet">
|
||||
<h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
|
||||
<div id="searchBody" class="pBody">
|
||||
<form action="<?php $this->text('wgScript') ?>" id="searchform">
|
||||
<input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
|
||||
<input id="searchInput" name="search" type="text"<?php echo $this->skin->tooltipAndAccesskey('search');
|
||||
if( isset( $this->data['search'] ) ) {
|
||||
?> value="<?php $this->text('search') ?>"<?php } ?> />
|
||||
<input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?>
|
||||
<input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> /><?php } else { ?>
|
||||
|
||||
<div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/*************************************************************************************************/
|
||||
function toolbox() {
|
||||
?>
|
||||
<!-- toolbox -->
|
||||
<div class="portlet" id="p-tb">
|
||||
<h5><?php $this->msg('toolbox') ?></h5>
|
||||
<div class="pBody">
|
||||
<ul>
|
||||
<?php
|
||||
if($this->data['notspecialpage']) { ?>
|
||||
<li id="t-whatlinkshere"><a href="<?php
|
||||
echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href'])
|
||||
?>"<?php echo $this->skin->tooltipAndAccesskey('t-whatlinkshere') ?>><?php $this->msg('whatlinkshere') ?></a></li>
|
||||
<?php
|
||||
if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
|
||||
<li id="t-recentchangeslinked"><a href="<?php
|
||||
echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
|
||||
?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked-toolbox') ?></a></li>
|
||||
<?php }
|
||||
}
|
||||
if(isset($this->data['nav_urls']['trackbacklink'])) { ?>
|
||||
<li id="t-trackbacklink"><a href="<?php
|
||||
echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
|
||||
?>"<?php echo $this->skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
|
||||
<?php }
|
||||
if($this->data['feeds']) { ?>
|
||||
<li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) {
|
||||
?><a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php
|
||||
echo htmlspecialchars($feed['href']) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a>
|
||||
<?php } ?></li><?php
|
||||
}
|
||||
|
||||
foreach( array('contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
|
||||
|
||||
if($this->data['nav_urls'][$special]) {
|
||||
?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
|
||||
?>"<?php echo $this->skin->tooltipAndAccesskey('t-'.$special) ?>><?php $this->msg($special) ?></a></li>
|
||||
<?php }
|
||||
}
|
||||
|
||||
if(!empty($this->data['nav_urls']['print']['href'])) { ?>
|
||||
<li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href'])
|
||||
?>" rel="alternate"<?php echo $this->skin->tooltipAndAccesskey('t-print') ?>><?php $this->msg('printableversion') ?></a></li><?php
|
||||
}
|
||||
|
||||
if(!empty($this->data['nav_urls']['permalink']['href'])) { ?>
|
||||
<li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href'])
|
||||
?>"<?php echo $this->skin->tooltipAndAccesskey('t-permalink') ?>><?php $this->msg('permalink') ?></a></li><?php
|
||||
} elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?>
|
||||
<li id="t-ispermalink"<?php echo $this->skin->tooltip('t-ispermalink') ?>><?php $this->msg('permalink') ?></li><?php
|
||||
}
|
||||
|
||||
wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) );
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/*************************************************************************************************/
|
||||
function languageBox() {
|
||||
if( $this->data['language_urls'] ) {
|
||||
?>
|
||||
<div id="p-lang" class="portlet">
|
||||
<h5><?php $this->msg('otherlanguages') ?></h5>
|
||||
<div class="pBody">
|
||||
<ul>
|
||||
<?php foreach($this->data['language_urls'] as $langlink) { ?>
|
||||
<li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php
|
||||
?><a href="<?php echo htmlspecialchars($langlink['href']) ?>"><?php echo $langlink['text'] ?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************************************/
|
||||
function customBox( $bar, $cont ) {
|
||||
?>
|
||||
<div class='generated-sidebar portlet' id='<?php echo Sanitizer::escapeId( "p-$bar" ) ?>'<?php echo $this->skin->tooltip('p-'.$bar) ?>>
|
||||
<h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo $bar; else echo $out; ?></h5>
|
||||
<div class='pBody'>
|
||||
<?php if ( is_array( $cont ) ) { ?>
|
||||
<ul>
|
||||
<?php foreach($cont as $key => $val) { ?>
|
||||
<li id="<?php echo Sanitizer::escapeId($val['id']) ?>"<?php
|
||||
if ( $val['active'] ) { ?> class="active" <?php }
|
||||
?>><a href="<?php echo htmlspecialchars($val['href']) ?>"<?php echo $this->skin->tooltipAndAccesskey($val['id']) ?>><?php echo htmlspecialchars($val['text']) ?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<?php } else {
|
||||
# allow raw HTML block to be defined by extensions
|
||||
print $cont;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
} // end of class
|
||||
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
// This file exists to ensure that base classes are preloaded before
|
||||
// MonoBook.php is compiled, working around a bug in the APC opcode
|
||||
// cache on PHP 5, where cached code can break if the include order
|
||||
// changed on a subsequent page view.
|
||||
// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
|
||||
|
||||
if ( ! defined( 'MEDIAWIKI' ) )
|
||||
die( 1 );
|
||||
|
||||
require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
|
||||
|
346
MonoBook.php
|
@ -1,346 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* MonoBook nouveau
|
||||
*
|
||||
* Translated from gwicke's previous TAL template version to remove
|
||||
* dependency on PHPTAL.
|
||||
*
|
||||
* @todo document
|
||||
* @file
|
||||
* @ingroup Skins
|
||||
*/
|
||||
|
||||
if( !defined( 'MEDIAWIKI' ) )
|
||||
die( -1 );
|
||||
|
||||
/**
|
||||
* Inherit main code from SkinTemplate, set the CSS and template filter.
|
||||
* @todo document
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class SkinMonoBook extends SkinTemplate {
|
||||
/** Using monobook. */
|
||||
var $skinname = 'monobook', $stylename = 'monobook',
|
||||
$template = 'MonoBookTemplate', $useHeadElement = true;
|
||||
|
||||
function setupSkinUserCss( OutputPage $out ) {
|
||||
global $wgHandheldStyle;
|
||||
|
||||
parent::setupSkinUserCss( $out );
|
||||
|
||||
// Append to the default screen common & print styles...
|
||||
$out->addStyle( 'monobook/main.css', 'screen' );
|
||||
if( $wgHandheldStyle ) {
|
||||
// Currently in testing... try 'chick/main.css'
|
||||
$out->addStyle( $wgHandheldStyle, 'handheld' );
|
||||
}
|
||||
|
||||
$out->addStyle( 'monobook/IE50Fixes.css', 'screen', 'lt IE 5.5000' );
|
||||
$out->addStyle( 'monobook/IE55Fixes.css', 'screen', 'IE 5.5000' );
|
||||
$out->addStyle( 'monobook/IE60Fixes.css', 'screen', 'IE 6' );
|
||||
$out->addStyle( 'monobook/IE70Fixes.css', 'screen', 'IE 7' );
|
||||
|
||||
$out->addStyle( 'monobook/rtl.css', 'screen', '', 'rtl' );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo document
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class MonoBookTemplate extends QuickTemplate {
|
||||
var $skin;
|
||||
/**
|
||||
* Template filter callback for MonoBook skin.
|
||||
* Takes an associative array of data set from a SkinTemplate-based
|
||||
* class, and a wrapper for MediaWiki's localization database, and
|
||||
* outputs a formatted page.
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function execute() {
|
||||
global $wgRequest;
|
||||
|
||||
$this->skin = $skin = $this->data['skin'];
|
||||
$action = $wgRequest->getText( 'action' );
|
||||
|
||||
// Suppress warnings to prevent notices about missing indexes in $this->data
|
||||
wfSuppressWarnings();
|
||||
|
||||
$this->html( 'headelement' );
|
||||
?><div id="globalWrapper">
|
||||
<div id="column-content"><div id="content" <?php $this->html("specialpageattributes") ?>>
|
||||
<a id="top"></a>
|
||||
<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
|
||||
|
||||
<h1 id="firstHeading" class="firstHeading"><?php $this->html('title') ?></h1>
|
||||
<div id="bodyContent">
|
||||
<h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
|
||||
<div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html('subtitle') ?></div>
|
||||
<?php if($this->data['undelete']) { ?>
|
||||
<div id="contentSub2"><?php $this->html('undelete') ?></div>
|
||||
<?php } ?><?php if($this->data['newtalk'] ) { ?>
|
||||
<div class="usermessage"><?php $this->html('newtalk') ?></div>
|
||||
<?php } ?><?php if($this->data['showjumplinks']) { ?>
|
||||
<div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div>
|
||||
<?php } ?>
|
||||
<!-- start content -->
|
||||
<?php $this->html('bodytext') ?>
|
||||
<?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
|
||||
<!-- end content -->
|
||||
<?php if($this->data['dataAfterContent']) { $this->html ('dataAfterContent'); } ?>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div></div>
|
||||
<div id="column-one"<?php $this->html('userlangattributes') ?>>
|
||||
<div id="p-cactions" class="portlet">
|
||||
<h5><?php $this->msg('views') ?></h5>
|
||||
<div class="pBody">
|
||||
<ul><?php
|
||||
foreach($this->data['content_actions'] as $key => $tab) {
|
||||
echo '
|
||||
<li id="' . Sanitizer::escapeId( "ca-$key" ) . '"';
|
||||
if( $tab['class'] ) {
|
||||
echo ' class="'.htmlspecialchars($tab['class']).'"';
|
||||
}
|
||||
echo '><a href="'.htmlspecialchars($tab['href']).'"';
|
||||
# We don't want to give the watch tab an accesskey if the
|
||||
# page is being edited, because that conflicts with the
|
||||
# accesskey on the watch checkbox. We also don't want to
|
||||
# give the edit tab an accesskey, because that's fairly su-
|
||||
# perfluous and conflicts with an accesskey (Ctrl-E) often
|
||||
# used for editing in Safari.
|
||||
if( in_array( $action, array( 'edit', 'submit' ) )
|
||||
&& in_array( $key, array( 'edit', 'watch', 'unwatch' ))) {
|
||||
echo $skin->tooltip( "ca-$key" );
|
||||
} else {
|
||||
echo $skin->tooltipAndAccesskey( "ca-$key" );
|
||||
}
|
||||
echo '>'.htmlspecialchars($tab['text']).'</a></li>';
|
||||
} ?>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet" id="p-personal">
|
||||
<h5><?php $this->msg('personaltools') ?></h5>
|
||||
<div class="pBody">
|
||||
<ul<?php $this->html('userlangattributes') ?>>
|
||||
<?php foreach($this->data['personal_urls'] as $key => $item) { ?>
|
||||
<li id="<?php echo Sanitizer::escapeId( "pt-$key" ) ?>"<?php
|
||||
if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php
|
||||
echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php
|
||||
if(!empty($item['class'])) { ?> class="<?php
|
||||
echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
|
||||
echo htmlspecialchars($item['text']) ?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet" id="p-logo">
|
||||
<a style="background-image: url(<?php $this->text('logopath') ?>);" <?php
|
||||
?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"<?php
|
||||
echo $skin->tooltipAndAccesskey('p-logo') ?>></a>
|
||||
</div>
|
||||
<script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script>
|
||||
<?php
|
||||
$sidebar = $this->data['sidebar'];
|
||||
if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
|
||||
if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
|
||||
if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
|
||||
foreach ($sidebar as $boxName => $cont) {
|
||||
if ( $boxName == 'SEARCH' ) {
|
||||
$this->searchBox();
|
||||
} elseif ( $boxName == 'TOOLBOX' ) {
|
||||
$this->toolbox();
|
||||
} elseif ( $boxName == 'LANGUAGES' ) {
|
||||
$this->languageBox();
|
||||
} else {
|
||||
$this->customBox( $boxName, $cont );
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div><!-- end of the left (by default at least) column -->
|
||||
<div class="visualClear"></div>
|
||||
<div id="footer"<?php $this->html('userlangattributes') ?>>
|
||||
<?php
|
||||
if($this->data['poweredbyico']) { ?>
|
||||
<div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div>
|
||||
<?php }
|
||||
if($this->data['copyrightico']) { ?>
|
||||
<div id="f-copyrightico"><?php $this->html('copyrightico') ?></div>
|
||||
<?php }
|
||||
|
||||
// Generate additional footer links
|
||||
$footerlinks = array(
|
||||
'lastmod', 'viewcount', 'numberofwatchingusers', 'credits', 'copyright',
|
||||
'privacy', 'about', 'disclaimer', 'tagline',
|
||||
);
|
||||
$validFooterLinks = array();
|
||||
foreach( $footerlinks as $aLink ) {
|
||||
if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
|
||||
$validFooterLinks[] = $aLink;
|
||||
}
|
||||
}
|
||||
if ( count( $validFooterLinks ) > 0 ) {
|
||||
?> <ul id="f-list">
|
||||
<?php
|
||||
foreach( $validFooterLinks as $aLink ) {
|
||||
if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
|
||||
?> <li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li>
|
||||
<?php }
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<?php }
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
|
||||
<?php $this->html('reporttime') ?>
|
||||
<?php if ( $this->data['debug'] ): ?>
|
||||
<!-- Debug output:
|
||||
<?php $this->text( 'debug' ); ?>
|
||||
|
||||
-->
|
||||
<?php endif; ?>
|
||||
</body></html>
|
||||
<?php
|
||||
wfRestoreWarnings();
|
||||
} // end of execute() method
|
||||
|
||||
/*************************************************************************************************/
|
||||
function searchBox() {
|
||||
global $wgUseTwoButtonsSearchForm;
|
||||
?>
|
||||
<div id="p-search" class="portlet">
|
||||
<h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
|
||||
<div id="searchBody" class="pBody">
|
||||
<form action="<?php $this->text('wgScript') ?>" id="searchform">
|
||||
<input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
|
||||
<?php
|
||||
echo Html::input( 'search',
|
||||
isset( $this->data['search'] ) ? $this->data['search'] : '', 'search',
|
||||
array(
|
||||
'id' => 'searchInput',
|
||||
'title' => $this->skin->titleAttrib( 'search' ),
|
||||
'accesskey' => $this->skin->accesskey( 'search' )
|
||||
) ); ?>
|
||||
|
||||
<input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?>
|
||||
<input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> /><?php } else { ?>
|
||||
|
||||
<div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/*************************************************************************************************/
|
||||
function toolbox() {
|
||||
?>
|
||||
<div class="portlet" id="p-tb">
|
||||
<h5><?php $this->msg('toolbox') ?></h5>
|
||||
<div class="pBody">
|
||||
<ul>
|
||||
<?php
|
||||
if($this->data['notspecialpage']) { ?>
|
||||
<li id="t-whatlinkshere"><a href="<?php
|
||||
echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href'])
|
||||
?>"<?php echo $this->skin->tooltipAndAccesskey('t-whatlinkshere') ?>><?php $this->msg('whatlinkshere') ?></a></li>
|
||||
<?php
|
||||
if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
|
||||
<li id="t-recentchangeslinked"><a href="<?php
|
||||
echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
|
||||
?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked-toolbox') ?></a></li>
|
||||
<?php }
|
||||
}
|
||||
if( isset( $this->data['nav_urls']['trackbacklink'] ) && $this->data['nav_urls']['trackbacklink'] ) { ?>
|
||||
<li id="t-trackbacklink"><a href="<?php
|
||||
echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
|
||||
?>"<?php echo $this->skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
|
||||
<?php }
|
||||
if($this->data['feeds']) { ?>
|
||||
<li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) {
|
||||
?><a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php
|
||||
echo htmlspecialchars($feed['href']) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a>
|
||||
<?php } ?></li><?php
|
||||
}
|
||||
|
||||
foreach( array('contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
|
||||
|
||||
if($this->data['nav_urls'][$special]) {
|
||||
?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
|
||||
?>"<?php echo $this->skin->tooltipAndAccesskey('t-'.$special) ?>><?php $this->msg($special) ?></a></li>
|
||||
<?php }
|
||||
}
|
||||
|
||||
if(!empty($this->data['nav_urls']['print']['href'])) { ?>
|
||||
<li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href'])
|
||||
?>" rel="alternate"<?php echo $this->skin->tooltipAndAccesskey('t-print') ?>><?php $this->msg('printableversion') ?></a></li><?php
|
||||
}
|
||||
|
||||
if(!empty($this->data['nav_urls']['permalink']['href'])) { ?>
|
||||
<li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href'])
|
||||
?>"<?php echo $this->skin->tooltipAndAccesskey('t-permalink') ?>><?php $this->msg('permalink') ?></a></li><?php
|
||||
} elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?>
|
||||
<li id="t-ispermalink"<?php echo $this->skin->tooltip('t-ispermalink') ?>><?php $this->msg('permalink') ?></li><?php
|
||||
}
|
||||
|
||||
wfRunHooks( 'MonoBookTemplateToolboxEnd', array( &$this ) );
|
||||
wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) );
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/*************************************************************************************************/
|
||||
function languageBox() {
|
||||
if( $this->data['language_urls'] ) {
|
||||
?>
|
||||
<div id="p-lang" class="portlet">
|
||||
<h5<?php $this->html('userlangattributes') ?>><?php $this->msg('otherlanguages') ?></h5>
|
||||
<div class="pBody">
|
||||
<ul>
|
||||
<?php foreach($this->data['language_urls'] as $langlink) { ?>
|
||||
<li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php
|
||||
?><a href="<?php echo htmlspecialchars($langlink['href']) ?>"><?php echo $langlink['text'] ?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************************************/
|
||||
function customBox( $bar, $cont ) {
|
||||
?>
|
||||
<div class='generated-sidebar portlet' id='<?php echo Sanitizer::escapeId( "p-$bar" ) ?>'<?php echo $this->skin->tooltip('p-'.$bar) ?>>
|
||||
<h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo htmlspecialchars($bar); else echo htmlspecialchars($out); ?></h5>
|
||||
<div class='pBody'>
|
||||
<?php if ( is_array( $cont ) ) { ?>
|
||||
<ul>
|
||||
<?php foreach($cont as $key => $val) { ?>
|
||||
<li id="<?php echo Sanitizer::escapeId($val['id']) ?>"<?php
|
||||
if ( $val['active'] ) { ?> class="active" <?php }
|
||||
?>><a href="<?php echo htmlspecialchars($val['href']) ?>"<?php echo $this->skin->tooltipAndAccesskey($val['id']) ?>><?php echo htmlspecialchars($val['text']) ?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<?php } else {
|
||||
# allow raw HTML block to be defined by extensions
|
||||
print $cont;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
} // end of class
|
||||
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<?php
|
||||
// This file exists to ensure that base classes are preloaded before
|
||||
// MySkin.php is compiled, working around a bug in the APC opcode
|
||||
// cache on PHP 5, where cached code can break if the include order
|
||||
// changed on a subsequent page view.
|
||||
// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
|
||||
|
||||
if ( ! defined( 'MEDIAWIKI' ) )
|
||||
die( 1 );
|
||||
|
||||
require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
|
||||
require_once( dirname(__FILE__) . '/MonoBook.php' );
|
||||
|
20
MySkin.php
|
@ -1,20 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* MySkin: Monobook without the CSS. The idea is that you
|
||||
* customise it using user or site CSS
|
||||
*
|
||||
* @file
|
||||
* @ingroup Skins
|
||||
*/
|
||||
|
||||
if( !defined( 'MEDIAWIKI' ) )
|
||||
die( -1 );
|
||||
|
||||
/**
|
||||
* Inherit main code from SkinTemplate, set the CSS and template filter.
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class SkinMySkin extends SkinTemplate {
|
||||
var $skinname = 'myskin', $stylename = 'myskin',
|
||||
$template = 'MonoBookTemplate', $useHeadElement = true;
|
||||
}
|
119
Nostalgia.php
|
@ -1,119 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Nostalgia: A skin which looks like Wikipedia did in its first year (2001).
|
||||
*
|
||||
* @file
|
||||
* @ingroup Skins
|
||||
*/
|
||||
|
||||
if( !defined( 'MEDIAWIKI' ) ) {
|
||||
die( -1 );
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo document
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class SkinNostalgia extends Skin {
|
||||
|
||||
function getStylesheet() {
|
||||
return 'common/nostalgia.css';
|
||||
}
|
||||
|
||||
function getSkinName() {
|
||||
return 'nostalgia';
|
||||
}
|
||||
|
||||
function doBeforeContent() {
|
||||
$s = "\n<div id='content'>\n<div id='top'>\n";
|
||||
$s .= '<div id="logo">' . $this->logoText( 'right' ) . '</div>';
|
||||
|
||||
$s .= $this->pageTitle();
|
||||
$s .= $this->pageSubtitle() . "\n";
|
||||
|
||||
$s .= '<div id="topbar">';
|
||||
$s .= $this->topLinks() . "\n<br />";
|
||||
|
||||
$notice = wfGetSiteNotice();
|
||||
if( $notice ) {
|
||||
$s .= "\n<div id='siteNotice'>$notice</div>\n";
|
||||
}
|
||||
$s .= $this->pageTitleLinks();
|
||||
|
||||
$ol = $this->otherLanguages();
|
||||
if( $ol ) {
|
||||
$s .= '<br />' . $ol;
|
||||
}
|
||||
|
||||
$cat = $this->getCategoryLinks();
|
||||
if( $cat ) {
|
||||
$s .= '<br />' . $cat;
|
||||
}
|
||||
|
||||
$s .= "<br clear='all' /></div><hr />\n</div>\n";
|
||||
$s .= "\n<div id='article'>";
|
||||
|
||||
return $s;
|
||||
}
|
||||
|
||||
function topLinks() {
|
||||
global $wgOut, $wgUser, $wgEnableUploads;
|
||||
$sep = " |\n";
|
||||
|
||||
$s = $this->mainPageLink() . $sep
|
||||
. $this->specialLink( 'recentchanges' );
|
||||
|
||||
if ( $wgOut->isArticle() ) {
|
||||
$s .= $sep . '<strong>' . $this->editThisPage() . '</strong>' . $sep . $this->historyLink();
|
||||
}
|
||||
|
||||
/* show links to different language variants */
|
||||
$s .= $this->variantLinks();
|
||||
$s .= $this->extensionTabLinks();
|
||||
if ( $wgUser->isAnon() ) {
|
||||
$s .= $sep . $this->specialLink( 'userlogin' );
|
||||
} else {
|
||||
$name = $wgUser->getName();
|
||||
/* show user page and user talk links */
|
||||
$s .= $sep . $this->link( $wgUser->getUserPage(), wfMsgHtml( 'mypage' ) );
|
||||
$s .= $sep . $this->link( $wgUser->getTalkPage(), wfMsgHtml( 'mytalk' ) );
|
||||
if ( $wgUser->getNewtalk() ) {
|
||||
$s .= ' *';
|
||||
}
|
||||
/* show watchlist link */
|
||||
$s .= $sep . $this->specialLink( 'watchlist' );
|
||||
/* show my contributions link */
|
||||
$s .= $sep . $this->link(
|
||||
SpecialPage::getSafeTitleFor( 'Contributions', $wgUser->getName() ),
|
||||
wfMsgHtml( 'mycontris' ) );
|
||||
/* show my preferences link */
|
||||
$s .= $sep . $this->specialLink( 'preferences' );
|
||||
/* show upload file link */
|
||||
if ( $wgEnableUploads ) {
|
||||
$s .= $sep . $this->specialLink( 'upload' );
|
||||
}
|
||||
/* show log out link */
|
||||
$s .= $sep . $this->specialLink( 'userlogout' );
|
||||
}
|
||||
|
||||
$s .= $sep . $this->specialPagesList();
|
||||
|
||||
return $s;
|
||||
}
|
||||
|
||||
function doAfterContent() {
|
||||
$s = "\n</div><br clear='all' />\n";
|
||||
|
||||
$s .= "\n<div id='footer'><hr />";
|
||||
|
||||
$s .= $this->bottomLinks();
|
||||
$s .= "\n<br />" . $this->pageStats();
|
||||
$s .= "\n<br />" . $this->mainPageLink()
|
||||
. ' | ' . $this->aboutLink()
|
||||
. ' | ' . $this->searchForm();
|
||||
|
||||
$s .= "\n</div>\n</div>\n";
|
||||
|
||||
return $s;
|
||||
}
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
wikimo-skin
|
||||
===========
|
||||
|
||||
Mediawiki skin for Mozilla Wiki - starting from Mediwiki 1.18
|
|
@ -1,13 +0,0 @@
|
|||
<?php
|
||||
// This file exists to ensure that base classes are preloaded before
|
||||
// Simple.php is compiled, working around a bug in the APC opcode
|
||||
// cache on PHP 5, where cached code can break if the include order
|
||||
// changed on a subsequent page view.
|
||||
// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
|
||||
|
||||
if ( ! defined( 'MEDIAWIKI' ) )
|
||||
die( 1 );
|
||||
|
||||
require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
|
||||
require_once( dirname(__FILE__) . '/MonoBook.php' );
|
||||
|
68
Simple.php
|
@ -1,68 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Simple: A lightweight skin with a simple white-background sidebar and no
|
||||
* top bar.
|
||||
*
|
||||
* @file
|
||||
* @ingroup Skins
|
||||
*/
|
||||
|
||||
if( !defined( 'MEDIAWIKI' ) )
|
||||
die( -1 );
|
||||
|
||||
/** */
|
||||
require_once( dirname(__FILE__) . '/MonoBook.php' );
|
||||
|
||||
/**
|
||||
* Inherit main code from SkinTemplate, set the CSS and template filter.
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class SkinSimple extends SkinTemplate {
|
||||
var $skinname = 'simple', $stylename = 'simple',
|
||||
$template = 'MonoBookTemplate', $useHeadElement = true;
|
||||
|
||||
function setupSkinUserCss( OutputPage $out ){
|
||||
$out->addStyle( 'simple/main.css', 'screen' );
|
||||
$out->addStyle( 'simple/rtl.css', '', '', 'rtl' );
|
||||
}
|
||||
|
||||
function reallyGenerateUserStylesheet() {
|
||||
global $wgUser;
|
||||
$s = '';
|
||||
if( ( $undopt = $wgUser->getOption( 'underline' ) ) != 2 ) {
|
||||
$underline = $undopt ? 'underline' : 'none';
|
||||
$s .= "a { text-decoration: $underline; }\n";
|
||||
}
|
||||
if( $wgUser->getOption( 'highlightbroken' ) ) {
|
||||
$s .= "a.new, #quickbar a.new { text-decoration: line-through; }\n";
|
||||
} else {
|
||||
$s .= <<<CSS
|
||||
a.new, #quickbar a.new,
|
||||
a.stub, #quickbar a.stub {
|
||||
color: inherit;
|
||||
text-decoration: inherit;
|
||||
}
|
||||
a.new:after, #quickbar a.new:after {
|
||||
content: "?";
|
||||
color: #CC2200;
|
||||
text-decoration: $underline;
|
||||
}
|
||||
a.stub:after, #quickbar a.stub:after {
|
||||
content: "!";
|
||||
color: #772233;
|
||||
text-decoration: $underline;
|
||||
}
|
||||
CSS;
|
||||
}
|
||||
if( $wgUser->getOption( 'justify' ) ) {
|
||||
$s .= "#article, #bodyContent { text-align: justify; }\n";
|
||||
}
|
||||
if( !$wgUser->getOption( 'showtoc' ) ) {
|
||||
$s .= "#toc { display: none; }\n";
|
||||
}
|
||||
if( !$wgUser->getOption( 'editsection' ) ) {
|
||||
$s .= ".editsection { display: none; }\n";
|
||||
}
|
||||
return $s;
|
||||
}
|
||||
}
|
283
Standard.php
|
@ -1,283 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Standard (a.k.a. Classic) skin: old MediaWiki default skin
|
||||
*
|
||||
* @file
|
||||
* @ingroup Skins
|
||||
*/
|
||||
|
||||
if( !defined( 'MEDIAWIKI' ) ) {
|
||||
die( -1 );
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo document
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class SkinStandard extends Skin {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function setupSkinUserCss( OutputPage $out ){
|
||||
if ( 3 == $this->qbSetting() ) { # Floating left
|
||||
$out->addStyle( 'common/quickbar.css' );
|
||||
} elseif ( 4 == $this->qbSetting() ) { # Floating right
|
||||
$out->addStyle( 'common/quickbar-right.css' );
|
||||
}
|
||||
parent::setupSkinUserCss( $out );
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function reallyGenerateUserStylesheet() {
|
||||
$s = parent::reallyGenerateUserStylesheet();
|
||||
$qb = $this->qbSetting();
|
||||
|
||||
if ( 2 == $qb ) { # Right
|
||||
$s .= "#quickbar { position: absolute; top: 4px; right: 4px; " .
|
||||
"border-left: 2px solid #000000; }\n" .
|
||||
"#article, #mw-data-after-content { margin-left: 4px; margin-right: 152px; }\n";
|
||||
} elseif ( 1 == $qb || 3 == $qb ) {
|
||||
$s .= "#quickbar { position: absolute; top: 4px; left: 4px; " .
|
||||
"border-right: 1px solid gray; }\n" .
|
||||
"#article, #mw-data-after-content { margin-left: 152px; margin-right: 4px; }\n";
|
||||
} elseif ( 4 == $qb ) {
|
||||
$s .= "#quickbar { border-right: 1px solid gray; }\n" .
|
||||
"#article, #mw-data-after-content { margin-right: 152px; margin-left: 4px; }\n";
|
||||
}
|
||||
return $s;
|
||||
}
|
||||
|
||||
function doAfterContent() {
|
||||
global $wgContLang, $wgLang;
|
||||
wfProfileIn( __METHOD__ );
|
||||
wfProfileIn( __METHOD__ . '-1' );
|
||||
|
||||
$s = "\n</div><br style=\"clear:both\" />\n";
|
||||
$s .= "\n<div id='footer'>";
|
||||
$s .= '<table border="0" cellspacing="0"><tr>';
|
||||
|
||||
wfProfileOut( __METHOD__ . '-1' );
|
||||
wfProfileIn( __METHOD__ . '-2' );
|
||||
|
||||
$qb = $this->qbSetting();
|
||||
$shove = ( $qb != 0 );
|
||||
$left = ( $qb == 1 || $qb == 3 );
|
||||
if( $wgContLang->isRTL() ) {
|
||||
$left = !$left;
|
||||
}
|
||||
|
||||
if ( $shove && $left ) { # Left
|
||||
$s .= $this->getQuickbarCompensator();
|
||||
}
|
||||
wfProfileOut( __METHOD__ . '-2' );
|
||||
wfProfileIn( __METHOD__ . '-3' );
|
||||
$l = $wgContLang->alignStart();
|
||||
$s .= "<td class='bottom' align='$l' valign='top'>";
|
||||
|
||||
$s .= $this->bottomLinks();
|
||||
$s .= "\n<br />" . $wgLang->pipeList( array(
|
||||
$this->mainPageLink(),
|
||||
$this->aboutLink(),
|
||||
$this->specialLink( 'recentchanges' ),
|
||||
$this->searchForm() ) )
|
||||
. '<br /><span id="pagestats">' . $this->pageStats() . '</span>';
|
||||
|
||||
$s .= '</td>';
|
||||
if ( $shove && !$left ) { # Right
|
||||
$s .= $this->getQuickbarCompensator();
|
||||
}
|
||||
$s .= "</tr></table>\n</div>\n</div>\n";
|
||||
|
||||
wfProfileOut( __METHOD__ . '-3' );
|
||||
wfProfileIn( __METHOD__ . '-4' );
|
||||
if ( 0 != $qb ) {
|
||||
$s .= $this->quickBar();
|
||||
}
|
||||
wfProfileOut( __METHOD__ . '-4' );
|
||||
wfProfileOut( __METHOD__ );
|
||||
return $s;
|
||||
}
|
||||
|
||||
function quickBar() {
|
||||
global $wgOut, $wgUser, $wgRequest, $wgContLang;
|
||||
global $wgEnableUploads, $wgRemoteUploads;
|
||||
|
||||
wfProfileIn( __METHOD__ );
|
||||
|
||||
$action = $wgRequest->getText( 'action' );
|
||||
$wpPreview = $wgRequest->getBool( 'wpPreview' );
|
||||
$tns = $this->mTitle->getNamespace();
|
||||
|
||||
$s = "\n<div id='quickbar'>";
|
||||
$s .= "\n" . $this->logoText() . "\n<hr class='sep' />";
|
||||
|
||||
$sep = "\n<br />";
|
||||
|
||||
# Use the first heading from the Monobook sidebar as the "browse" section
|
||||
$bar = $this->buildSidebar();
|
||||
unset( $bar['SEARCH'] );
|
||||
unset( $bar['LANGUAGES'] );
|
||||
unset( $bar['TOOLBOX'] );
|
||||
$browseLinks = reset( $bar );
|
||||
|
||||
foreach ( $browseLinks as $link ) {
|
||||
if ( $link['text'] != '-' ) {
|
||||
$s .= "<a href=\"{$link['href']}\">" .
|
||||
htmlspecialchars( $link['text'] ) . '</a>' . $sep;
|
||||
}
|
||||
}
|
||||
|
||||
if( $wgUser->isLoggedIn() ) {
|
||||
$s.= $this->specialLink( 'watchlist' ) ;
|
||||
$s .= $sep . $this->linkKnown(
|
||||
SpecialPage::getTitleFor( 'Contributions' ),
|
||||
wfMsg( 'mycontris' ),
|
||||
array(),
|
||||
array( 'target' => $wgUser->getName() )
|
||||
);
|
||||
}
|
||||
// only show watchlist link if logged in
|
||||
$s .= "\n<hr class='sep' />";
|
||||
$articleExists = $this->mTitle->getArticleId();
|
||||
if ( $wgOut->isArticle() || $action == 'edit' || $action == 'history' || $wpPreview ) {
|
||||
if( $wgOut->isArticle() ) {
|
||||
$s .= '<strong>' . $this->editThisPage() . '</strong>';
|
||||
} else { # backlink to the article in edit or history mode
|
||||
if( $articleExists ){ # no backlink if no article
|
||||
switch( $tns ) {
|
||||
case NS_TALK:
|
||||
case NS_USER_TALK:
|
||||
case NS_PROJECT_TALK:
|
||||
case NS_FILE_TALK:
|
||||
case NS_MEDIAWIKI_TALK:
|
||||
case NS_TEMPLATE_TALK:
|
||||
case NS_HELP_TALK:
|
||||
case NS_CATEGORY_TALK:
|
||||
$text = wfMsg('viewtalkpage');
|
||||
break;
|
||||
case NS_MAIN:
|
||||
$text = wfMsg( 'articlepage' );
|
||||
break;
|
||||
case NS_USER:
|
||||
$text = wfMsg( 'userpage' );
|
||||
break;
|
||||
case NS_PROJECT:
|
||||
$text = wfMsg( 'projectpage' );
|
||||
break;
|
||||
case NS_FILE:
|
||||
$text = wfMsg( 'imagepage' );
|
||||
break;
|
||||
case NS_MEDIAWIKI:
|
||||
$text = wfMsg( 'mediawikipage' );
|
||||
break;
|
||||
case NS_TEMPLATE:
|
||||
$text = wfMsg( 'templatepage' );
|
||||
break;
|
||||
case NS_HELP:
|
||||
$text = wfMsg( 'viewhelppage' );
|
||||
break;
|
||||
case NS_CATEGORY:
|
||||
$text = wfMsg( 'categorypage' );
|
||||
break;
|
||||
default:
|
||||
$text = wfMsg( 'articlepage' );
|
||||
}
|
||||
|
||||
$link = $this->mTitle->getText();
|
||||
if( $nstext = $wgContLang->getNsText( $tns ) ) { # add namespace if necessary
|
||||
$link = $nstext . ':' . $link;
|
||||
}
|
||||
|
||||
$s .= $this->link(
|
||||
Title::newFromText( $link ),
|
||||
$text
|
||||
);
|
||||
} elseif( $this->mTitle->getNamespace() != NS_SPECIAL ) {
|
||||
# we just throw in a "New page" text to tell the user that he's in edit mode,
|
||||
# and to avoid messing with the separator that is prepended to the next item
|
||||
$s .= '<strong>' . wfMsg( 'newpage' ) . '</strong>';
|
||||
}
|
||||
}
|
||||
|
||||
# "Post a comment" link
|
||||
if( ( $this->mTitle->isTalkPage() || $wgOut->showNewSectionLink() ) && $action != 'edit' && !$wpPreview )
|
||||
$s .= '<br />' . $this->link(
|
||||
$this->mTitle,
|
||||
wfMsg( 'postcomment' ),
|
||||
array(),
|
||||
array(
|
||||
'action' => 'edit',
|
||||
'section' => 'new'
|
||||
),
|
||||
array( 'known', 'noclasses' )
|
||||
);
|
||||
|
||||
#if( $tns%2 && $action!='edit' && !$wpPreview) {
|
||||
#$s.= '<br />'.$this->linkKnown( Title::newFromText( $wgTitle->getPrefixedText() ),wfMsg('postcomment'),array(),array('action'=>'edit','section'=>'new'));
|
||||
#}
|
||||
|
||||
/*
|
||||
watching could cause problems in edit mode:
|
||||
if user edits article, then loads "watch this article" in background and then saves
|
||||
article with "Watch this article" checkbox disabled, the article is transparently
|
||||
unwatched. Therefore we do not show the "Watch this page" link in edit mode
|
||||
*/
|
||||
if ( $wgUser->isLoggedIn() && $articleExists ) {
|
||||
if( $action != 'edit' && $action != 'submit' ) {
|
||||
$s .= $sep . $this->watchThisPage();
|
||||
}
|
||||
if ( $this->mTitle->userCan( 'edit' ) )
|
||||
$s .= $sep . $this->moveThisPage();
|
||||
}
|
||||
if ( $wgUser->isAllowed( 'delete' ) && $articleExists ) {
|
||||
$s .= $sep . $this->deleteThisPage() .
|
||||
$sep . $this->protectThisPage();
|
||||
}
|
||||
$s .= $sep . $this->talkLink();
|
||||
if( $articleExists && $action != 'history' ) {
|
||||
$s .= $sep . $this->historyLink();
|
||||
}
|
||||
$s .= $sep . $this->whatLinksHere();
|
||||
|
||||
if( $wgOut->isArticleRelated() ) {
|
||||
$s .= $sep . $this->watchPageLinksLink();
|
||||
}
|
||||
|
||||
if (
|
||||
NS_USER == $this->mTitle->getNamespace() ||
|
||||
$this->mTitle->getNamespace() == NS_USER_TALK
|
||||
) {
|
||||
|
||||
$id = User::idFromName( $this->mTitle->getText() );
|
||||
$ip = User::isIP( $this->mTitle->getText() );
|
||||
|
||||
if( $id || $ip ){
|
||||
$s .= $sep . $this->userContribsLink();
|
||||
}
|
||||
if( $this->showEmailUser( $id ) ) {
|
||||
$s .= $sep . $this->emailUserLink();
|
||||
}
|
||||
}
|
||||
$s .= "\n<br /><hr class='sep' />";
|
||||
}
|
||||
|
||||
if ( $wgUser->isLoggedIn() && ( $wgEnableUploads || $wgRemoteUploads ) ) {
|
||||
$s .= $this->specialLink( 'upload' ) . $sep;
|
||||
}
|
||||
$s .= $this->specialLink( 'specialpages' );
|
||||
|
||||
global $wgSiteSupportPage;
|
||||
if( $wgSiteSupportPage ) {
|
||||
$s .= "\n<br /><a href=\"" . htmlspecialchars( $wgSiteSupportPage ) .
|
||||
'" class="internal">' . wfMsg( 'sitesupport' ) . '</a>';
|
||||
}
|
||||
|
||||
$s .= "\n<br /></div>\n";
|
||||
wfProfileOut( __METHOD__ );
|
||||
return $s;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
<?php
|
||||
// This file exists to ensure that base classes are preloaded before
|
||||
// MonoBook.php is compiled, working around a bug in the APC opcode
|
||||
// cache on PHP 5, where cached code can break if the include order
|
||||
// changed on a subsequent page view.
|
||||
// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
|
||||
|
||||
if ( ! defined( 'MEDIAWIKI' ) )
|
||||
die( 1 );
|
||||
|
||||
require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
|
799
Vector.php
|
@ -1,799 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Vector - Branch of MonoBook which has many usability improvements and
|
||||
* somewhat cleaner code.
|
||||
*
|
||||
* @todo document
|
||||
* @file
|
||||
* @ingroup Skins
|
||||
*/
|
||||
|
||||
if( !defined( 'MEDIAWIKI' ) ) {
|
||||
die( -1 );
|
||||
}
|
||||
|
||||
/**
|
||||
* SkinTemplate class for Vector skin
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class SkinVector extends SkinTemplate {
|
||||
|
||||
/* Functions */
|
||||
var $skinname = 'vector', $stylename = 'vector',
|
||||
$template = 'VectorTemplate', $useHeadElement = true;
|
||||
|
||||
/**
|
||||
* Initializes output page and sets up skin-specific parameters
|
||||
* @param $out OutputPage object to initialize
|
||||
*/
|
||||
public function initPage( OutputPage $out ) {
|
||||
global $wgLocalStylePath, $wgRequest;
|
||||
|
||||
parent::initPage( $out );
|
||||
|
||||
// Append CSS which includes IE only behavior fixes for hover support -
|
||||
// this is better than including this in a CSS fille since it doesn't
|
||||
// wait for the CSS file to load before fetching the HTC file.
|
||||
$min = $wgRequest->getFuzzyBool( 'debug' ) ? '' : '.min';
|
||||
$out->addHeadItem( 'csshover',
|
||||
'<!--[if lt IE 7]><style type="text/css">body{behavior:url("' .
|
||||
htmlspecialchars( $wgLocalStylePath ) .
|
||||
"/{$this->stylename}/csshover{$min}.htc\")}</style><![endif]-->"
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load skin and user CSS files in the correct order
|
||||
* fixes bug 22916
|
||||
* @param $out OutputPage object
|
||||
*/
|
||||
function setupSkinUserCss( OutputPage $out ){
|
||||
parent::setupSkinUserCss( $out );
|
||||
$out->addModuleStyles( 'skins.vector' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a structured array of links used for tabs and menus
|
||||
* @return array
|
||||
* @private
|
||||
*/
|
||||
function buildNavigationUrls() {
|
||||
global $wgContLang, $wgLang, $wgOut, $wgUser, $wgRequest, $wgArticle;
|
||||
global $wgDisableLangConversion, $wgVectorUseIconWatch;
|
||||
|
||||
wfProfileIn( __METHOD__ );
|
||||
|
||||
$links = array(
|
||||
'namespaces' => array(),
|
||||
'views' => array(),
|
||||
'actions' => array(),
|
||||
'variants' => array()
|
||||
);
|
||||
|
||||
// Detects parameters
|
||||
$action = $wgRequest->getVal( 'action', 'view' );
|
||||
$section = $wgRequest->getVal( 'section' );
|
||||
|
||||
$userCanRead = $this->mTitle->userCanRead();
|
||||
|
||||
// Checks if page is some kind of content
|
||||
if( $this->iscontent ) {
|
||||
// Gets page objects for the related namespaces
|
||||
$subjectPage = $this->mTitle->getSubjectPage();
|
||||
$talkPage = $this->mTitle->getTalkPage();
|
||||
|
||||
// Determines if this is a talk page
|
||||
$isTalk = $this->mTitle->isTalkPage();
|
||||
|
||||
// Generates XML IDs from namespace names
|
||||
$subjectId = $this->mTitle->getNamespaceKey( '' );
|
||||
|
||||
if ( $subjectId == 'main' ) {
|
||||
$talkId = 'talk';
|
||||
} else {
|
||||
$talkId = "{$subjectId}_talk";
|
||||
}
|
||||
|
||||
// Adds namespace links
|
||||
$links['namespaces'][$subjectId] = $this->tabAction(
|
||||
$subjectPage, 'nstab-' . $subjectId, !$isTalk, '', $userCanRead
|
||||
);
|
||||
$links['namespaces'][$subjectId]['context'] = 'subject';
|
||||
$links['namespaces'][$talkId] = $this->tabAction(
|
||||
$talkPage, 'talk', $isTalk, '', $userCanRead
|
||||
);
|
||||
$links['namespaces'][$talkId]['context'] = 'talk';
|
||||
|
||||
// Adds view view link
|
||||
if ( $this->mTitle->exists() && $userCanRead ) {
|
||||
$links['views']['view'] = $this->tabAction(
|
||||
$isTalk ? $talkPage : $subjectPage,
|
||||
'vector-view-view', ( $action == 'view' || $action == 'purge' ), '', true
|
||||
);
|
||||
}
|
||||
|
||||
wfProfileIn( __METHOD__ . '-edit' );
|
||||
|
||||
// Checks if user can...
|
||||
if (
|
||||
// read and edit the current page
|
||||
$userCanRead && $this->mTitle->quickUserCan( 'edit' ) &&
|
||||
(
|
||||
// if it exists
|
||||
$this->mTitle->exists() ||
|
||||
// or they can create one here
|
||||
$this->mTitle->quickUserCan( 'create' )
|
||||
)
|
||||
) {
|
||||
// Builds CSS class for talk page links
|
||||
$isTalkClass = $isTalk ? ' istalk' : '';
|
||||
|
||||
// Determines if we're in edit mode
|
||||
$selected = (
|
||||
( $action == 'edit' || $action == 'submit' ) &&
|
||||
( $section != 'new' )
|
||||
);
|
||||
$links['views']['edit'] = array(
|
||||
'class' => ( $selected ? 'selected' : '' ) . $isTalkClass,
|
||||
'text' => $this->mTitle->exists()
|
||||
? wfMsg( 'vector-view-edit' )
|
||||
: wfMsg( 'vector-view-create' ),
|
||||
'href' =>
|
||||
$this->mTitle->getLocalURL( $this->editUrlOptions() )
|
||||
);
|
||||
// Checks if this is a current rev of talk page and we should show a new
|
||||
// section link
|
||||
if ( ( $isTalk && $wgArticle && $wgArticle->isCurrent() ) || ( $wgOut->showNewSectionLink() ) ) {
|
||||
// Checks if we should ever show a new section link
|
||||
if ( !$wgOut->forceHideNewSectionLink() ) {
|
||||
// Adds new section link
|
||||
//$links['actions']['addsection']
|
||||
$links['views']['addsection'] = array(
|
||||
'class' => 'collapsible ' . ( $section == 'new' ? 'selected' : false ),
|
||||
'text' => wfMsg( 'vector-action-addsection' ),
|
||||
'href' => $this->mTitle->getLocalURL(
|
||||
'action=edit§ion=new'
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
// Checks if the page has some kind of viewable content
|
||||
} elseif ( $this->mTitle->hasSourceText() && $userCanRead ) {
|
||||
// Adds view source view link
|
||||
$links['views']['viewsource'] = array(
|
||||
'class' => ( $action == 'edit' ) ? 'selected' : false,
|
||||
'text' => wfMsg( 'vector-view-viewsource' ),
|
||||
'href' =>
|
||||
$this->mTitle->getLocalURL( $this->editUrlOptions() )
|
||||
);
|
||||
}
|
||||
wfProfileOut( __METHOD__ . '-edit' );
|
||||
|
||||
wfProfileIn( __METHOD__ . '-live' );
|
||||
|
||||
// Checks if the page exists
|
||||
if ( $this->mTitle->exists() && $userCanRead ) {
|
||||
// Adds history view link
|
||||
$links['views']['history'] = array(
|
||||
'class' => 'collapsible ' . ( ( $action == 'history' ) ? 'selected' : false ),
|
||||
'text' => wfMsg( 'vector-view-history' ),
|
||||
'href' => $this->mTitle->getLocalURL( 'action=history' ),
|
||||
'rel' => 'archives',
|
||||
);
|
||||
|
||||
if( $wgUser->isAllowed( 'delete' ) ) {
|
||||
$links['actions']['delete'] = array(
|
||||
'class' => ( $action == 'delete' ) ? 'selected' : false,
|
||||
'text' => wfMsg( 'vector-action-delete' ),
|
||||
'href' => $this->mTitle->getLocalURL( 'action=delete' )
|
||||
);
|
||||
}
|
||||
if ( $this->mTitle->quickUserCan( 'move' ) ) {
|
||||
$moveTitle = SpecialPage::getTitleFor(
|
||||
'Movepage', $this->thispage
|
||||
);
|
||||
$links['actions']['move'] = array(
|
||||
'class' => $this->mTitle->isSpecial( 'Movepage' ) ?
|
||||
'selected' : false,
|
||||
'text' => wfMsg( 'vector-action-move' ),
|
||||
'href' => $moveTitle->getLocalURL()
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
$this->mTitle->getNamespace() !== NS_MEDIAWIKI &&
|
||||
$wgUser->isAllowed( 'protect' )
|
||||
) {
|
||||
if ( !$this->mTitle->isProtected() ) {
|
||||
$links['actions']['protect'] = array(
|
||||
'class' => ( $action == 'protect' ) ?
|
||||
'selected' : false,
|
||||
'text' => wfMsg( 'vector-action-protect' ),
|
||||
'href' =>
|
||||
$this->mTitle->getLocalURL( 'action=protect' )
|
||||
);
|
||||
|
||||
} else {
|
||||
$links['actions']['unprotect'] = array(
|
||||
'class' => ( $action == 'unprotect' ) ?
|
||||
'selected' : false,
|
||||
'text' => wfMsg( 'vector-action-unprotect' ),
|
||||
'href' =>
|
||||
$this->mTitle->getLocalURL( 'action=unprotect' )
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// article doesn't exist or is deleted
|
||||
if (
|
||||
$wgUser->isAllowed( 'deletedhistory' ) &&
|
||||
$wgUser->isAllowed( 'undelete' )
|
||||
) {
|
||||
$n = $this->mTitle->isDeleted();
|
||||
if( $n ) {
|
||||
$undelTitle = SpecialPage::getTitleFor( 'Undelete' );
|
||||
$links['actions']['undelete'] = array(
|
||||
'class' => false,
|
||||
'text' => wfMsgExt(
|
||||
'vector-action-undelete',
|
||||
array( 'parsemag' ),
|
||||
$wgLang->formatNum( $n )
|
||||
),
|
||||
'href' => $undelTitle->getLocalURL(
|
||||
'target=' . urlencode( $this->thispage )
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
$this->mTitle->getNamespace() !== NS_MEDIAWIKI &&
|
||||
$wgUser->isAllowed( 'protect' )
|
||||
) {
|
||||
if ( !$this->mTitle->getRestrictions( 'create' ) ) {
|
||||
$links['actions']['protect'] = array(
|
||||
'class' => ( $action == 'protect' ) ?
|
||||
'selected' : false,
|
||||
'text' => wfMsg( 'vector-action-protect' ),
|
||||
'href' =>
|
||||
$this->mTitle->getLocalURL( 'action=protect' )
|
||||
);
|
||||
|
||||
} else {
|
||||
$links['actions']['unprotect'] = array(
|
||||
'class' => ( $action == 'unprotect' ) ?
|
||||
'selected' : false,
|
||||
'text' => wfMsg( 'vector-action-unprotect' ),
|
||||
'href' =>
|
||||
$this->mTitle->getLocalURL( 'action=unprotect' )
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
wfProfileOut( __METHOD__ . '-live' );
|
||||
/**
|
||||
* The following actions use messages which, if made particular to
|
||||
* the Vector skin, would break the Ajax code which makes this
|
||||
* action happen entirely inline. Skin::makeGlobalVariablesScript
|
||||
* defines a set of messages in a javascript object - and these
|
||||
* messages are assumed to be global for all skins. Without making
|
||||
* a change to that procedure these messages will have to remain as
|
||||
* the global versions.
|
||||
*/
|
||||
// Checks if the user is logged in
|
||||
if ( $this->loggedin ) {
|
||||
if ( $wgVectorUseIconWatch ) {
|
||||
$class = 'icon';
|
||||
$place = 'views';
|
||||
} else {
|
||||
$class = '';
|
||||
$place = 'actions';
|
||||
}
|
||||
$mode = $this->mTitle->userIsWatching() ? 'unwatch' : 'watch';
|
||||
$links[$place][$mode] = array(
|
||||
'class' => $class . ( ( $action == 'watch' || $action == 'unwatch' ) ? ' selected' : false ),
|
||||
'text' => wfMsg( $mode ), // uses 'watch' or 'unwatch' message
|
||||
'href' => $this->mTitle->getLocalURL( 'action=' . $mode )
|
||||
);
|
||||
}
|
||||
// This is instead of SkinTemplateTabs - which uses a flat array
|
||||
wfRunHooks( 'SkinTemplateNavigation', array( &$this, &$links ) );
|
||||
|
||||
// If it's not content, it's got to be a special page
|
||||
} else {
|
||||
$links['namespaces']['special'] = array(
|
||||
'class' => 'selected',
|
||||
'text' => wfMsg( 'nstab-special' ),
|
||||
'href' => $wgRequest->getRequestURL()
|
||||
);
|
||||
// Equiv to SkinTemplateBuildContentActionUrlsAfterSpecialPage
|
||||
wfRunHooks( 'SkinTemplateNavigation::SpecialPage', array( &$this, &$links ) );
|
||||
}
|
||||
|
||||
// Gets list of language variants
|
||||
$variants = $wgContLang->getVariants();
|
||||
// Checks that language conversion is enabled and variants exist
|
||||
if( !$wgDisableLangConversion && count( $variants ) > 1 ) {
|
||||
// Gets preferred variant
|
||||
$preferred = $wgContLang->getPreferredVariant();
|
||||
// Loops over each variant
|
||||
foreach( $variants as $code ) {
|
||||
// Gets variant name from language code
|
||||
$varname = $wgContLang->getVariantname( $code );
|
||||
// Checks if the variant is marked as disabled
|
||||
if( $varname == 'disable' ) {
|
||||
// Skips this variant
|
||||
continue;
|
||||
}
|
||||
// Appends variant link
|
||||
$links['variants'][] = array(
|
||||
'class' => ( $code == $preferred ) ? 'selected' : false,
|
||||
'text' => $varname,
|
||||
'href' => $this->mTitle->getLocalURL( '', $code )
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Equiv to SkinTemplateContentActions
|
||||
wfRunHooks( 'SkinTemplateNavigation::Universal', array( &$this, &$links ) );
|
||||
|
||||
wfProfileOut( __METHOD__ );
|
||||
|
||||
return $links;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* QuickTemplate class for Vector skin
|
||||
* @ingroup Skins
|
||||
*/
|
||||
class VectorTemplate extends QuickTemplate {
|
||||
|
||||
/* Members */
|
||||
|
||||
/**
|
||||
* @var Cached skin object
|
||||
*/
|
||||
var $skin;
|
||||
|
||||
/* Functions */
|
||||
|
||||
/**
|
||||
* Outputs the entire contents of the XHTML page
|
||||
*/
|
||||
public function execute() {
|
||||
global $wgRequest, $wgLang;
|
||||
|
||||
$this->skin = $this->data['skin'];
|
||||
$action = $wgRequest->getText( 'action' );
|
||||
|
||||
// Build additional attributes for navigation urls
|
||||
$nav = $this->skin->buildNavigationUrls();
|
||||
foreach ( $nav as $section => $links ) {
|
||||
foreach ( $links as $key => $link ) {
|
||||
$xmlID = $key;
|
||||
if ( isset( $link['context'] ) && $link['context'] == 'subject' ) {
|
||||
$xmlID = 'ca-nstab-' . $xmlID;
|
||||
} else if ( isset( $link['context'] ) && $link['context'] == 'talk' ) {
|
||||
$xmlID = 'ca-talk';
|
||||
} else {
|
||||
$xmlID = 'ca-' . $xmlID;
|
||||
}
|
||||
$nav[$section][$key]['attributes'] =
|
||||
' id="' . Sanitizer::escapeId( $xmlID ) . '"';
|
||||
if ( $nav[$section][$key]['class'] ) {
|
||||
$nav[$section][$key]['attributes'] .=
|
||||
' class="' . htmlspecialchars( $link['class'] ) . '"';
|
||||
unset( $nav[$section][$key]['class'] );
|
||||
}
|
||||
// We don't want to give the watch tab an accesskey if the page
|
||||
// is being edited, because that conflicts with the accesskey on
|
||||
// the watch checkbox. We also don't want to give the edit tab
|
||||
// an accesskey, because that's fairly superfluous and conflicts
|
||||
// with an accesskey (Ctrl-E) often used for editing in Safari.
|
||||
if (
|
||||
in_array( $action, array( 'edit', 'submit' ) ) &&
|
||||
in_array( $key, array( 'edit', 'watch', 'unwatch' ) )
|
||||
) {
|
||||
$nav[$section][$key]['key'] =
|
||||
$this->skin->tooltip( $xmlID );
|
||||
} else {
|
||||
$nav[$section][$key]['key'] =
|
||||
$this->skin->tooltipAndAccesskey( $xmlID );
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->data['namespace_urls'] = $nav['namespaces'];
|
||||
$this->data['view_urls'] = $nav['views'];
|
||||
$this->data['action_urls'] = $nav['actions'];
|
||||
$this->data['variant_urls'] = $nav['variants'];
|
||||
// Build additional attributes for personal_urls
|
||||
foreach ( $this->data['personal_urls'] as $key => $item) {
|
||||
$this->data['personal_urls'][$key]['attributes'] =
|
||||
' id="' . Sanitizer::escapeId( "pt-$key" ) . '"';
|
||||
if ( isset( $item['active'] ) && $item['active'] ) {
|
||||
$this->data['personal_urls'][$key]['attributes'] .=
|
||||
' class="active"';
|
||||
}
|
||||
$this->data['personal_urls'][$key]['key'] =
|
||||
$this->skin->tooltipAndAccesskey('pt-'.$key);
|
||||
}
|
||||
|
||||
// Generate additional footer links
|
||||
$footerlinks = $this->data["footerlinks"];
|
||||
|
||||
// Reduce footer links down to only those which are being used
|
||||
$validFooterLinks = array();
|
||||
foreach( $footerlinks as $category => $links ) {
|
||||
$validFooterLinks[$category] = array();
|
||||
foreach( $links as $link ) {
|
||||
if( isset( $this->data[$link] ) && $this->data[$link] ) {
|
||||
$validFooterLinks[$category][] = $link;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Generate additional footer icons
|
||||
$footericons = $this->data["footericons"];
|
||||
// Unset any icons which don't have an image
|
||||
foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) {
|
||||
foreach ( $footerIconsBlock as $footerIconKey => $footerIcon ) {
|
||||
if ( !is_string($footerIcon) && !isset($footerIcon["src"]) ) {
|
||||
unset($footerIconsBlock[$footerIconKey]);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Redo removal of any empty blocks
|
||||
foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) {
|
||||
if ( count($footerIconsBlock) <= 0 ) {
|
||||
unset($footericons[$footerIconsKey]);
|
||||
}
|
||||
}
|
||||
|
||||
// Reverse horizontally rendered navigation elements
|
||||
if ( $wgLang->isRTL() ) {
|
||||
$this->data['view_urls'] =
|
||||
array_reverse( $this->data['view_urls'] );
|
||||
$this->data['namespace_urls'] =
|
||||
array_reverse( $this->data['namespace_urls'] );
|
||||
$this->data['personal_urls'] =
|
||||
array_reverse( $this->data['personal_urls'] );
|
||||
}
|
||||
// Output HTML Page
|
||||
$this->html( 'headelement' );
|
||||
?>
|
||||
<div id="mw-page-base" class="noprint"></div>
|
||||
<div id="mw-head-base" class="noprint"></div>
|
||||
<!-- content -->
|
||||
<div id="content"<?php $this->html('specialpageattributes') ?>>
|
||||
<a id="top"></a>
|
||||
<div id="mw-js-message" style="display:none;"<?php $this->html('userlangattributes') ?>></div>
|
||||
<?php if ( $this->data['sitenotice'] ): ?>
|
||||
<!-- sitenotice -->
|
||||
<div id="siteNotice"><?php $this->html( 'sitenotice' ) ?></div>
|
||||
<!-- /sitenotice -->
|
||||
<?php endif; ?>
|
||||
<!-- firstHeading -->
|
||||
<h1 id="firstHeading" class="firstHeading"><?php $this->html( 'title' ) ?></h1>
|
||||
<!-- /firstHeading -->
|
||||
<!-- bodyContent -->
|
||||
<div id="bodyContent">
|
||||
<!-- tagline -->
|
||||
<div id="siteSub"><?php $this->msg( 'tagline' ) ?></div>
|
||||
<!-- /tagline -->
|
||||
<!-- subtitle -->
|
||||
<div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html( 'subtitle' ) ?></div>
|
||||
<!-- /subtitle -->
|
||||
<?php if ( $this->data['undelete'] ): ?>
|
||||
<!-- undelete -->
|
||||
<div id="contentSub2"><?php $this->html( 'undelete' ) ?></div>
|
||||
<!-- /undelete -->
|
||||
<?php endif; ?>
|
||||
<?php if($this->data['newtalk'] ): ?>
|
||||
<!-- newtalk -->
|
||||
<div class="usermessage"><?php $this->html( 'newtalk' ) ?></div>
|
||||
<!-- /newtalk -->
|
||||
<?php endif; ?>
|
||||
<?php if ( $this->data['showjumplinks'] ): ?>
|
||||
<!-- jumpto -->
|
||||
<div id="jump-to-nav">
|
||||
<?php $this->msg( 'jumpto' ) ?> <a href="#mw-head"><?php $this->msg( 'jumptonavigation' ) ?></a>,
|
||||
<a href="#p-search"><?php $this->msg( 'jumptosearch' ) ?></a>
|
||||
</div>
|
||||
<!-- /jumpto -->
|
||||
<?php endif; ?>
|
||||
<!-- bodytext -->
|
||||
<?php $this->html( 'bodytext' ) ?>
|
||||
<!-- /bodytext -->
|
||||
<?php if ( $this->data['catlinks'] ): ?>
|
||||
<!-- catlinks -->
|
||||
<?php $this->html( 'catlinks' ); ?>
|
||||
<!-- /catlinks -->
|
||||
<?php endif; ?>
|
||||
<?php if ( $this->data['dataAfterContent'] ): ?>
|
||||
<!-- dataAfterContent -->
|
||||
<?php $this->html( 'dataAfterContent' ); ?>
|
||||
<!-- /dataAfterContent -->
|
||||
<?php endif; ?>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
<!-- /bodyContent -->
|
||||
</div>
|
||||
<!-- /content -->
|
||||
<!-- header -->
|
||||
<div id="mw-head" class="noprint">
|
||||
<?php $this->renderNavigation( 'PERSONAL' ); ?>
|
||||
<div id="left-navigation">
|
||||
<?php $this->renderNavigation( array( 'NAMESPACES', 'VARIANTS' ) ); ?>
|
||||
</div>
|
||||
<div id="right-navigation">
|
||||
<?php $this->renderNavigation( array( 'VIEWS', 'ACTIONS', 'SEARCH' ) ); ?>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /header -->
|
||||
<!-- panel -->
|
||||
<div id="mw-panel" class="noprint">
|
||||
<!-- logo -->
|
||||
<div id="p-logo"><a style="background-image: url(<?php $this->text( 'logopath' ) ?>);" href="<?php echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] ) ?>" <?php echo $this->skin->tooltipAndAccesskey( 'p-logo' ) ?>></a></div>
|
||||
<!-- /logo -->
|
||||
<?php $this->renderPortals( $this->data['sidebar'] ); ?>
|
||||
</div>
|
||||
<!-- /panel -->
|
||||
<!-- footer -->
|
||||
<div id="footer"<?php $this->html('userlangattributes') ?>>
|
||||
<?php foreach( $validFooterLinks as $category => $links ): ?>
|
||||
<?php if ( count( $links ) > 0 ): ?>
|
||||
<ul id="footer-<?php echo $category ?>">
|
||||
<?php foreach( $links as $link ): ?>
|
||||
<?php if( isset( $this->data[$link] ) && $this->data[$link] ): ?>
|
||||
<li id="footer-<?php echo $category ?>-<?php echo $link ?>"><?php $this->html( $link ) ?></li>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
<?php if ( count( $footericons ) > 0 ): ?>
|
||||
<ul id="footer-icons" class="noprint">
|
||||
<?php foreach ( $footericons as $blockName => $footerIcons ): ?>
|
||||
<li id="footer-<?php echo htmlspecialchars($blockName); ?>ico">
|
||||
<?php foreach ( $footerIcons as $icon ): ?>
|
||||
<?php echo $this->skin->makeFooterIcon( $icon ); ?>
|
||||
|
||||
<?php endforeach; ?>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php endif; ?>
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
<!-- /footer -->
|
||||
<?php $this->html( 'bottomscripts' ); /* JS call to runBodyOnloadHook */ ?>
|
||||
<!-- fixalpha -->
|
||||
<script type="<?php $this->text('jsmimetype') ?>"> if ( window.isMSIE55 ) fixalpha(); </script>
|
||||
<!-- /fixalpha -->
|
||||
<?php $this->html( 'reporttime' ) ?>
|
||||
<?php if ( $this->data['debug'] ): ?>
|
||||
<!-- Debug output: <?php $this->text( 'debug' ); ?> -->
|
||||
<?php endif; ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Render a series of portals
|
||||
*/
|
||||
private function renderPortals( $portals ) {
|
||||
// Force the rendering of the following portals
|
||||
if ( !isset( $portals['SEARCH'] ) ) $portals['SEARCH'] = true;
|
||||
if ( !isset( $portals['TOOLBOX'] ) ) $portals['TOOLBOX'] = true;
|
||||
if ( !isset( $portals['LANGUAGES'] ) ) $portals['LANGUAGES'] = true;
|
||||
// Render portals
|
||||
foreach ( $portals as $name => $content ) {
|
||||
echo "\n<!-- {$name} -->\n";
|
||||
switch( $name ) {
|
||||
case 'SEARCH':
|
||||
break;
|
||||
case 'TOOLBOX':
|
||||
?>
|
||||
<div class="portal" id="p-tb">
|
||||
<h5<?php $this->html('userlangattributes') ?>><?php $this->msg( 'toolbox' ) ?></h5>
|
||||
<div class="body">
|
||||
<ul>
|
||||
<?php if( $this->data['notspecialpage'] ): ?>
|
||||
<li id="t-whatlinkshere"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['whatlinkshere']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-whatlinkshere' ) ?>><?php $this->msg( 'whatlinkshere' ) ?></a></li>
|
||||
<?php if( $this->data['nav_urls']['recentchangeslinked'] ): ?>
|
||||
<li id="t-recentchangeslinked"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['recentchangeslinked']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-recentchangeslinked' ) ?>><?php $this->msg( 'recentchangeslinked-toolbox' ) ?></a></li>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
<?php if( isset( $this->data['nav_urls']['trackbacklink'] ) ): ?>
|
||||
<li id="t-trackbacklink"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['trackbacklink']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-trackbacklink' ) ?>><?php $this->msg( 'trackbacklink' ) ?></a></li>
|
||||
<?php endif; ?>
|
||||
<?php if( $this->data['feeds']): ?>
|
||||
<li id="feedlinks">
|
||||
<?php foreach( $this->data['feeds'] as $key => $feed ): ?>
|
||||
<a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php echo htmlspecialchars( $feed['href'] ) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey( 'feed-' . $key ) ?>><?php echo htmlspecialchars( $feed['text'] ) ?></a>
|
||||
<?php endforeach; ?>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<?php foreach( array( 'contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages' ) as $special ): ?>
|
||||
<?php if( $this->data['nav_urls'][$special]): ?>
|
||||
<li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars( $this->data['nav_urls'][$special]['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-' . $special ) ?>><?php $this->msg( $special ) ?></a></li>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
<?php if( !empty( $this->data['nav_urls']['print']['href'] ) ): ?>
|
||||
<li id="t-print"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['print']['href'] ) ?>" rel="alternate"<?php echo $this->skin->tooltipAndAccesskey( 't-print' ) ?>><?php $this->msg( 'printableversion' ) ?></a></li>
|
||||
<?php endif; ?>
|
||||
<?php if ( !empty( $this->data['nav_urls']['permalink']['href'] ) ): ?>
|
||||
<li id="t-permalink"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['permalink']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-permalink' ) ?>><?php $this->msg( 'permalink' ) ?></a></li>
|
||||
<?php elseif ( $this->data['nav_urls']['permalink']['href'] === '' ): ?>
|
||||
<li id="t-ispermalink"<?php echo $this->skin->tooltip( 't-ispermalink' ) ?>><?php $this->msg( 'permalink' ) ?></li>
|
||||
<?php endif; ?>
|
||||
<?php wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) ); ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
case 'LANGUAGES':
|
||||
if ( $this->data['language_urls'] ) {
|
||||
?>
|
||||
<div class="portal" id="p-lang">
|
||||
<h5<?php $this->html('userlangattributes') ?>><?php $this->msg( 'otherlanguages' ) ?></h5>
|
||||
<div class="body">
|
||||
<ul>
|
||||
<?php foreach ( $this->data['language_urls'] as $langlink ): ?>
|
||||
<li class="<?php echo htmlspecialchars( $langlink['class'] ) ?>"><a href="<?php echo htmlspecialchars( $langlink['href'] ) ?>" title="<?php echo htmlspecialchars( $langlink['title'] ) ?>"><?php echo $langlink['text'] ?></a></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
break;
|
||||
default:
|
||||
?>
|
||||
<div class="portal" id='<?php echo Sanitizer::escapeId( "p-$name" ) ?>'<?php echo $this->skin->tooltip( 'p-' . $name ) ?>>
|
||||
<h5<?php $this->html('userlangattributes') ?>><?php $out = wfMsg( $name ); if ( wfEmptyMsg( $name, $out ) ) echo htmlspecialchars( $name ); else echo htmlspecialchars( $out ); ?></h5>
|
||||
<div class="body">
|
||||
<?php if ( is_array( $content ) ): ?>
|
||||
<ul>
|
||||
<?php foreach( $content as $val ): ?>
|
||||
<li id="<?php echo Sanitizer::escapeId( $val['id'] ) ?>"<?php if ( $val['active'] ): ?> class="active" <?php endif; ?>><a href="<?php echo htmlspecialchars( $val['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( $val['id'] ) ?>><?php echo htmlspecialchars( $val['text'] ) ?></a></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php else: ?>
|
||||
<?php echo $content; /* Allow raw HTML block to be defined by extensions */ ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
}
|
||||
echo "\n<!-- /{$name} -->\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Render one or more navigations elements by name, automatically reveresed
|
||||
* when UI is in RTL mode
|
||||
*/
|
||||
private function renderNavigation( $elements ) {
|
||||
global $wgVectorUseSimpleSearch, $wgVectorShowVariantName, $wgUser;
|
||||
|
||||
// If only one element was given, wrap it in an array, allowing more
|
||||
// flexible arguments
|
||||
if ( !is_array( $elements ) ) {
|
||||
$elements = array( $elements );
|
||||
// If there's a series of elements, reverse them when in RTL mode
|
||||
} else if ( wfUILang()->isRTL() ) {
|
||||
$elements = array_reverse( $elements );
|
||||
}
|
||||
// Render elements
|
||||
foreach ( $elements as $name => $element ) {
|
||||
echo "\n<!-- {$name} -->\n";
|
||||
switch ( $element ) {
|
||||
case 'NAMESPACES':
|
||||
?>
|
||||
<div id="p-namespaces" class="vectorTabs<?php if ( count( $this->data['namespace_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
|
||||
<h5><?php $this->msg('namespaces') ?></h5>
|
||||
<ul<?php $this->html('userlangattributes') ?>>
|
||||
<?php foreach ($this->data['namespace_urls'] as $link ): ?>
|
||||
<li <?php echo $link['attributes'] ?>><span><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></span></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
case 'VARIANTS':
|
||||
?>
|
||||
<div id="p-variants" class="vectorMenu<?php if ( count( $this->data['variant_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
|
||||
<?php if ( $wgVectorShowVariantName ): ?>
|
||||
<h4>
|
||||
<?php foreach ( $this->data['variant_urls'] as $link ): ?>
|
||||
<?php if ( stripos( $link['attributes'], 'selected' ) !== false ): ?>
|
||||
<?php echo htmlspecialchars( $link['text'] ) ?>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
</h4>
|
||||
<?php endif; ?>
|
||||
<h5><span><?php $this->msg('variants') ?></span><a href="#"></a></h5>
|
||||
<div class="menu">
|
||||
<ul<?php $this->html('userlangattributes') ?>>
|
||||
<?php foreach ( $this->data['variant_urls'] as $link ): ?>
|
||||
<li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
case 'VIEWS':
|
||||
?>
|
||||
<div id="p-views" class="vectorTabs<?php if ( count( $this->data['view_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
|
||||
<h5><?php $this->msg('views') ?></h5>
|
||||
<ul<?php $this->html('userlangattributes') ?>>
|
||||
<?php foreach ( $this->data['view_urls'] as $link ): ?>
|
||||
<li<?php echo $link['attributes'] ?>><span><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo (array_key_exists('img',$link) ? '<img src="'.$link['img'].'" alt="'.$link['text'].'" />' : htmlspecialchars( $link['text'] ) ) ?></a></span></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
case 'ACTIONS':
|
||||
?>
|
||||
<div id="p-cactions" class="vectorMenu<?php if ( count( $this->data['action_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
|
||||
<h5><span><?php $this->msg('actions') ?></span><a href="#"></a></h5>
|
||||
<div class="menu">
|
||||
<ul<?php $this->html('userlangattributes') ?>>
|
||||
<?php foreach ($this->data['action_urls'] as $link ): ?>
|
||||
<li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
case 'PERSONAL':
|
||||
?>
|
||||
<div id="p-personal" class="<?php if ( count( $this->data['personal_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
|
||||
<h5><?php $this->msg('personaltools') ?></h5>
|
||||
<ul<?php $this->html('userlangattributes') ?>>
|
||||
<?php foreach($this->data['personal_urls'] as $item): ?>
|
||||
<li <?php echo $item['attributes'] ?>><a href="<?php echo htmlspecialchars($item['href']) ?>"<?php echo $item['key'] ?><?php if(!empty($item['class'])): ?> class="<?php echo htmlspecialchars($item['class']) ?>"<?php endif; ?>><?php echo htmlspecialchars($item['text']) ?></a></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
case 'SEARCH':
|
||||
?>
|
||||
<div id="p-search">
|
||||
<h5<?php $this->html('userlangattributes') ?>><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h5>
|
||||
<form action="<?php $this->text( 'wgScript' ) ?>" id="searchform">
|
||||
<input type='hidden' name="title" value="<?php $this->text( 'searchtitle' ) ?>"/>
|
||||
<?php if ( $wgVectorUseSimpleSearch && $wgUser->getOption( 'vector-simplesearch' ) ): ?>
|
||||
<div id="simpleSearch">
|
||||
<?php if ( $this->data['rtl'] ): ?>
|
||||
<button id="searchButton" type='submit' name='button' <?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?>><img src="<?php echo $this->skin->getSkinStylePath('images/search-rtl.png'); ?>" alt="<?php $this->msg( 'searchbutton' ) ?>" /></button>
|
||||
<?php endif; ?>
|
||||
<input id="searchInput" name="search" type="text" <?php echo $this->skin->tooltipAndAccesskey( 'search' ); ?> <?php if( isset( $this->data['search'] ) ): ?> value="<?php $this->text( 'search' ) ?>"<?php endif; ?> />
|
||||
<?php if ( !$this->data['rtl'] ): ?>
|
||||
<button id="searchButton" type='submit' name='button' <?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?>><img src="<?php echo $this->skin->getSkinStylePath('images/search-ltr.png'); ?>" alt="<?php $this->msg( 'searchbutton' ) ?>" /></button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<input id="searchInput" name="search" type="text" <?php echo $this->skin->tooltipAndAccesskey( 'search' ); ?> <?php if( isset( $this->data['search'] ) ): ?> value="<?php $this->text( 'search' ) ?>"<?php endif; ?> />
|
||||
<input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg( 'searcharticle' ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> />
|
||||
<input type="submit" name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg( 'searchbutton' ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> />
|
||||
<?php endif; ?>
|
||||
</form>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
break;
|
||||
}
|
||||
echo "\n<!-- /{$name} -->\n";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
/*
|
||||
** IE5.0 Fix Stylesheet
|
||||
*/
|
||||
|
||||
#column-content {
|
||||
margin: 0 !important;
|
||||
float: none;
|
||||
}
|
||||
#column-content #content {
|
||||
margin-top: 3em;
|
||||
height: 1%;
|
||||
}
|
||||
#column-one {
|
||||
position: absolute;
|
||||
overflow: visible;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 3;
|
||||
}
|
||||
#footer {
|
||||
margin: 0 0 0 13.6em;
|
||||
}
|
||||
|
||||
/* IE 5 & 5.5 interpret keyword sizes one off */
|
||||
body { font-size: xx-small; }
|
||||
/*
|
||||
** the edit tabs
|
||||
*/
|
||||
#p-cactions li {
|
||||
float: left;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0 !important;
|
||||
height: 0.9em;
|
||||
}
|
||||
#p-cactions li a {
|
||||
display: block;
|
||||
padding-bottom: 0.045em;
|
||||
}
|
||||
#p-cactions li.selected a {
|
||||
padding-bottom: 0.17em;
|
||||
}
|
||||
#p-cactions li a:hover {
|
||||
padding-bottom: 0.17em;
|
||||
}
|
||||
/* 5.0 doesn't like the background icon for external links and user */
|
||||
.link-external,
|
||||
.external {
|
||||
background: none;
|
||||
padding: 0;
|
||||
}
|
||||
#p-personal ul { float: right }
|
||||
#p-personal li { float: left }
|
||||
li#pt-userpage,
|
||||
li#pt-anonuserpage,
|
||||
li#pt-login,
|
||||
li#pt-logout {
|
||||
background: none;
|
||||
padding-left: none;
|
||||
}
|
||||
.visualClear {
|
||||
width:100%;
|
||||
height: 0px;
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
#firstHeading { margin-bottom: 0.3em; }
|
||||
/*div{ border:1px solid Red !important;}*/
|
|
@ -1,81 +0,0 @@
|
|||
/* IE5.5/win- only fixes */
|
||||
|
||||
#column-content {
|
||||
float: none;
|
||||
margin-left: 0;
|
||||
height: 1%;
|
||||
}
|
||||
#column-content #content {
|
||||
position: relative;
|
||||
z-index: 5;
|
||||
margin-left: 12.2em;
|
||||
margin-top: 3em;
|
||||
height: 1%;
|
||||
}
|
||||
#column-one {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 4;
|
||||
width: 100%;
|
||||
}
|
||||
#footer {
|
||||
margin-left: 13.6em;
|
||||
border-left: 1px solid #fabd23;
|
||||
}
|
||||
|
||||
/*#bodyContent div,
|
||||
#bodyContent pre { overflow: auto; }*/
|
||||
|
||||
#p-personal { padding-bottom: 0.1em; }
|
||||
|
||||
body { font-size: xx-small; }
|
||||
|
||||
#p-cactions {
|
||||
width: 76% !important;
|
||||
z-index: 3 !important;
|
||||
float: none;
|
||||
}
|
||||
#p-cactions li {
|
||||
padding-bottom: 0 !important;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
cursor: default;
|
||||
float: none !important;
|
||||
}
|
||||
#p-cactions li a {
|
||||
display: inline-block !important;
|
||||
vertical-align: top;
|
||||
padding-bottom: 0;
|
||||
border: solid #aaa;
|
||||
border-width: 1px 1px 0;
|
||||
}
|
||||
#p-cactions li.selected a {
|
||||
border-color: #fabd23;
|
||||
padding-bottom: 0.17em;
|
||||
}
|
||||
#p-cactions li a:hover {
|
||||
padding-bottom: 0.17em;
|
||||
}
|
||||
.portlet {
|
||||
overflow:hidden;
|
||||
}
|
||||
#bodyContent a.external {
|
||||
background: url(external.png) center right no-repeat;
|
||||
padding-right: 13px;
|
||||
}
|
||||
/* show the hand */
|
||||
#p-logo a,
|
||||
#p-logo a:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
.visualClear {
|
||||
width:90%;
|
||||
height: 1px;
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
#editform {
|
||||
width: 100%;
|
||||
}
|
|
@ -1,79 +0,0 @@
|
|||
/* 6.0 - only fixes */
|
||||
/* content area */
|
||||
/* workaround for various ie float bugs */
|
||||
#column-content {
|
||||
float: none;
|
||||
margin-left: 0;
|
||||
height: 1%;
|
||||
}
|
||||
#column-content #content {
|
||||
margin-left: 12.2em;
|
||||
margin-top: 3em;
|
||||
height: 1%;
|
||||
}
|
||||
#column-one {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 4;
|
||||
}
|
||||
#footer {
|
||||
margin-left: 13.6em;
|
||||
border-left: 1px solid #fabd23;
|
||||
}
|
||||
|
||||
/* the tabs */
|
||||
|
||||
#p-cactions {
|
||||
z-index: 3;
|
||||
}
|
||||
|
||||
#p-cactions li {
|
||||
padding-bottom: 0 !important;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
cursor: default;
|
||||
float: none !important;
|
||||
}
|
||||
#p-cactions li a {
|
||||
display: inline-block !important;
|
||||
vertical-align: top;
|
||||
padding-bottom: 0;
|
||||
border: solid #aaa;
|
||||
border-width: 1px 1px 0;
|
||||
}
|
||||
#p-cactions li.selected a {
|
||||
border-color: #fabd23;
|
||||
padding-bottom: 0.17em;
|
||||
}
|
||||
#p-cactions li a:hover {
|
||||
padding-bottom: 0.17em;
|
||||
}
|
||||
#portal-personaltools {
|
||||
padding-bottom: 0.1em;
|
||||
}
|
||||
#bodyContent a.external {
|
||||
background: url(external.png) center right no-repeat;
|
||||
padding-right: 13px;
|
||||
}
|
||||
|
||||
/* show the hand */
|
||||
#p-logo a,
|
||||
#p-logo a:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
div.visualClear {
|
||||
width:100%;
|
||||
line-height: 0;
|
||||
}
|
||||
textarea {
|
||||
width: 96%;
|
||||
}
|
||||
|
||||
div.editsection,
|
||||
#catlinks,
|
||||
div.tright,
|
||||
div.tleft {
|
||||
position: relative;
|
||||
}
|
||||
/*{ border:1px solid Red !important;}*/
|
411
chick/main.css
|
@ -1,411 +0,0 @@
|
|||
/*
|
||||
** MediaWiki 'chick' style sheet for PDAs or other small-screen devices.
|
||||
** Copyright Timwi
|
||||
** License: GPL (http://www.gnu.org/copyleft/gpl.html)
|
||||
**
|
||||
** Loosely based on Monobook by Gabriel Wicke
|
||||
*/
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
color: black;
|
||||
background: white;
|
||||
margin: 0;
|
||||
padding: 0.3em;
|
||||
}
|
||||
|
||||
a { color: #002bb8; }
|
||||
a:visited { color: #5a3696; }
|
||||
a:active { color: #ffa500; }
|
||||
a.stub { color: #772233; }
|
||||
a.new,
|
||||
#p-personal a.new { color:#ba0000; }
|
||||
a.new:visited,
|
||||
#p-personal a.new:visited { color:#a55858; }
|
||||
|
||||
img {
|
||||
border: none;
|
||||
vertical-align: middle;
|
||||
}
|
||||
p {
|
||||
margin: 0.4em 0em 0.5em 0em;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
p img { margin: 0; }
|
||||
|
||||
hr {
|
||||
height: 1px;
|
||||
color: #aaaaaa;
|
||||
background-color: #aaaaaa;
|
||||
border: 0;
|
||||
margin: 0.2em 0 0.2em 0;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color: black;
|
||||
background: none;
|
||||
font-weight: normal;
|
||||
margin: 0;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.17em;
|
||||
border-bottom: 1px solid #aaaaaa;
|
||||
}
|
||||
.editsection {
|
||||
font-weight: normal;
|
||||
}
|
||||
h1 { font-size: 188%; }
|
||||
h1 .editsection { font-size: 53.2%; }
|
||||
h2 { font-size: 150%; }
|
||||
h2 .editsection { font-size: 66.7%; }
|
||||
h3, h4, h5, h6 {
|
||||
border-bottom: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
h3 { font-size: 132%; }
|
||||
h3 .editsection { font-size: 75.8%; }
|
||||
h4 { font-size: 116%; }
|
||||
h4 .editsection { font-size: 86.2%; }
|
||||
h5 { font-size: 100%; }
|
||||
h6 { font-size: 80%; }
|
||||
h6 .editsection { font-size: 125%; }
|
||||
|
||||
ul {
|
||||
line-height: 1.5em;
|
||||
margin: 0.3em 0 0 1.5em;
|
||||
padding:0;
|
||||
}
|
||||
ol {
|
||||
line-height: 1.5em;
|
||||
margin: 0.3em 0 0 3.2em;
|
||||
padding:0;
|
||||
list-style-image: none;
|
||||
}
|
||||
li { margin-bottom: 0.1em; }
|
||||
dt {
|
||||
font-weight: bold;
|
||||
margin-bottom: 0.1em;
|
||||
}
|
||||
dl{
|
||||
margin-top: 0.2em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
dd {
|
||||
line-height: 1.5em;
|
||||
margin-left: 2em;
|
||||
margin-bottom: 0.1em;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #2f6fab;
|
||||
margin: 1em 0em 1em 0em;
|
||||
padding: 0em 1em 1em 1em;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
legend {
|
||||
background: white;
|
||||
padding: 0.5em;
|
||||
font-size: 95%;
|
||||
}
|
||||
form {
|
||||
border: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
textarea {
|
||||
border: 1px solid #2f6fab;
|
||||
color: black;
|
||||
background-color: white;
|
||||
width: 100%;
|
||||
padding: 0.1em;
|
||||
overflow: auto;
|
||||
}
|
||||
/* hide this from ie/mac and konq2.2 */
|
||||
@media All {
|
||||
head:first-child+body input {
|
||||
visibility: visible;
|
||||
border: 1px solid #2f6fab;
|
||||
color: black;
|
||||
background-color: white;
|
||||
vertical-align: middle;
|
||||
padding: 0.2em;
|
||||
}
|
||||
}
|
||||
input.historysubmit {
|
||||
padding: 0 0.3em 0.3em 0.3em !important;
|
||||
font-size: 94%;
|
||||
cursor: pointer;
|
||||
height: 1.7em !important;
|
||||
margin-left: 1.6em;
|
||||
}
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] { border:none; }
|
||||
select {
|
||||
border: 1px solid #2f6fab;
|
||||
color: black;
|
||||
vertical-align: top;
|
||||
}
|
||||
abbr, acronym, .explain {
|
||||
border-bottom: 1px dotted black;
|
||||
color: black;
|
||||
background: none;
|
||||
cursor: help;
|
||||
}
|
||||
q {
|
||||
font-family: Times, "Times New Roman", serif;
|
||||
font-style: italic;
|
||||
}
|
||||
code { background-color: #f9f9f9; }
|
||||
pre {
|
||||
padding: 1em;
|
||||
border: 1px dashed #2f6fab;
|
||||
color: black;
|
||||
background-color: #f9f9f9;
|
||||
line-height: 1.1em;
|
||||
}
|
||||
|
||||
/*
|
||||
** the main content area
|
||||
*/
|
||||
|
||||
span.subpages { display: block; }
|
||||
|
||||
/* Some space under the headers in the content area */
|
||||
#bodyContent h1, #bodyContent h2 { margin-bottom:0.6em; }
|
||||
#bodyContent h3,
|
||||
#bodyContent h4,
|
||||
#bodyContent h5 {
|
||||
margin-bottom: 0.3em;
|
||||
}
|
||||
#firstHeading { margin-bottom:0.1em; }
|
||||
|
||||
/* user notification thing */
|
||||
.usermessage {
|
||||
background-color: #ffce7b;
|
||||
border: 1px solid #ffa500;
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
margin: 0.1em 0 0 0;
|
||||
padding: 2px 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
#siteNotice {
|
||||
text-align: center;
|
||||
font-size: 95%;
|
||||
padding: 0 0.9em 0 0.9em;
|
||||
}
|
||||
#siteNotice p { margin: 0; padding: 0; }
|
||||
.error {
|
||||
color: red;
|
||||
font-size: larger;
|
||||
}
|
||||
.catlinks {
|
||||
border:1px solid #aaaaaa;
|
||||
background-color:#f9f9f9;
|
||||
padding: 2px 5px;
|
||||
margin: 0.1em 0 0 0;
|
||||
clear: both;
|
||||
}
|
||||
.catlinks { margin: 0; padding: 0; }
|
||||
|
||||
|
||||
/* currently unused, intended to be used by a metadata box
|
||||
in the bottom-right corner of the content area */
|
||||
.documentDescription {
|
||||
/* The summary text describing the document */
|
||||
font-weight: bold;
|
||||
display: block;
|
||||
margin: 1em 0em;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
.documentByLine {
|
||||
text-align: right;
|
||||
font-size: 90%;
|
||||
clear: both;
|
||||
font-weight: normal;
|
||||
color: #76797c;
|
||||
}
|
||||
|
||||
/* emulate center */
|
||||
.center {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
*.center * {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
/* small for tables and similar */
|
||||
.small, .small * { font-size: 94%; }
|
||||
table.small { font-size: 100% }
|
||||
|
||||
/*
|
||||
** content styles
|
||||
*/
|
||||
|
||||
#toc {
|
||||
/*border:1px solid #2f6fab;*/
|
||||
border:1px solid #aaaaaa;
|
||||
background-color:#f9f9f9;
|
||||
padding:5px;
|
||||
font-size: 95%;
|
||||
}
|
||||
#toc ul { margin-left: 2em; }
|
||||
#toc .toctoggle { font-size: 94%; }
|
||||
#toc .editsection {
|
||||
margin-top: 0.7em;
|
||||
font-size: 94%;
|
||||
}
|
||||
|
||||
/* images */
|
||||
div.floatright, table.floatright {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin: 0;
|
||||
position: relative;
|
||||
border: 0.5em solid white;
|
||||
border-width: 0.5em 0 0.8em 1.4em;
|
||||
}
|
||||
div.floatright p { font-style: italic; }
|
||||
div.floatleft, table.floatleft {
|
||||
float: left;
|
||||
clear: left;
|
||||
margin: 0.3em 0.5em 0.5em 0;
|
||||
position: relative;
|
||||
border: 0.5em solid white;
|
||||
border-width: 0.5em 1.4em 0.8em 0;
|
||||
}
|
||||
div.floatleft p { font-style: italic; }
|
||||
/* thumbnails */
|
||||
div.thumb {
|
||||
margin-bottom: 0.5em;
|
||||
border-style: solid; border-color: white;
|
||||
width: auto;
|
||||
}
|
||||
div.thumbinner {
|
||||
border:1px solid #cccccc;
|
||||
padding: 3px !important;
|
||||
background-color:#f9f9f9;
|
||||
font-size: 94%;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
}
|
||||
html .thumbimage {
|
||||
border:1px solid #cccccc;
|
||||
}
|
||||
html .thumbcaption {
|
||||
border: none;
|
||||
text-align: left;
|
||||
line-height: 1.4em;
|
||||
padding: 0.3em 0 0.1em 0;
|
||||
}
|
||||
div.magnify {
|
||||
float: right;
|
||||
border: none !important;
|
||||
background: none !important;
|
||||
}
|
||||
div.magnify a, div.magnify img {
|
||||
display: block;
|
||||
border: none !important;
|
||||
background: none !important;
|
||||
}
|
||||
div.tright {
|
||||
clear: right;
|
||||
float: right;
|
||||
border-width: 0.5em 0 0.8em 1.4em;
|
||||
}
|
||||
div.tleft {
|
||||
float: left;
|
||||
clear: left;
|
||||
margin-right:0.5em;
|
||||
border-width: 0.5em 1.4em 0.8em 0;
|
||||
}
|
||||
img.thumbborder {
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.hiddenStructure {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/*
|
||||
** classes for special content elements like town boxes
|
||||
** intended to be referenced directly from the wiki src
|
||||
*/
|
||||
|
||||
/*
|
||||
** User styles
|
||||
*/
|
||||
/* table standards */
|
||||
table.rimage {
|
||||
float:right;
|
||||
position:relative;
|
||||
margin-left:1em;
|
||||
margin-bottom:1em;
|
||||
text-align:center;
|
||||
}
|
||||
.toccolours {
|
||||
border:1px solid #aaaaaa;
|
||||
background-color:#f9f9f9;
|
||||
padding:5px;
|
||||
font-size: 95%;
|
||||
}
|
||||
|
||||
/*
|
||||
** edit views etc
|
||||
*/
|
||||
.special li {
|
||||
line-height: 1.4em;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a.external { color: #3366bb; }
|
||||
div#footer { text-align: center; }
|
||||
ul#f-list li { list-style: none; text-align: center; }
|
||||
div.portlet { margin: 0.5em 0; }
|
||||
|
||||
.redirectText {
|
||||
font-size:150%;
|
||||
margin:5px;
|
||||
}
|
||||
|
||||
ul.special li.not-patrolled, ol.special li.not-patrolled {
|
||||
background-color: #ffa;
|
||||
}
|
||||
div.patrollink {
|
||||
font-size: 75%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
span.updatedmarker {
|
||||
color:black;
|
||||
background-color:#00FF00;
|
||||
}
|
||||
|
||||
div.gallerybox {
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
#xjump-to-nav {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.templatesUsed { margin-top: 1.5em; }
|
||||
|
||||
.printfooter {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#footer {
|
||||
background-color: white;
|
||||
border-top: 1px solid #fabd23;
|
||||
border-bottom: 1px solid #fabd23;
|
||||
margin: .6em 0 1em 0;
|
||||
padding: .4em 0 1.2em 0;
|
||||
text-align: center;
|
||||
font-size: 90%;
|
||||
}
|
||||
#f-poweredbyico, #f-copyrightico {
|
||||
display: inline;
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
/**
|
||||
* Fixes textarea scrolling bug (bug #19334). The bug only occurs when a
|
||||
* percentage width is given, so instead of width: 100%, use min-width: 100%;
|
||||
* max-width: 100%. We also need to give a fixed width for the actual width
|
||||
* property for the hack to work, although the actual value (500px here) ends
|
||||
* up being ignored; min/max-width take precedence.
|
||||
*
|
||||
* More info: http://grantovich.net/posts/2009/06/that-weird-ie8-textarea-bug/
|
||||
*/
|
||||
#wpTextbox1 {
|
||||
height: 390px;
|
||||
width: 500px;
|
||||
min-width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
|
@ -1,129 +0,0 @@
|
|||
// IE fixes javascript
|
||||
|
||||
window.isMSIE55 = ( window.showModalDialog && window.clipboardData && window.createPopup );
|
||||
window.doneIETransform = undefined;
|
||||
window.doneIEAlphaFix = undefined;
|
||||
|
||||
window.hookit = function() {
|
||||
if ( !doneIETransform && document.getElementById && document.getElementById( 'bodyContent' ) ) {
|
||||
doneIETransform = true;
|
||||
relativeforfloats();
|
||||
fixalpha();
|
||||
}
|
||||
};
|
||||
|
||||
if ( document.attachEvent ) {
|
||||
document.attachEvent( 'onreadystatechange', window.hookit );
|
||||
}
|
||||
|
||||
// png alpha transparency fixes
|
||||
window.fixalpha = function( logoId ) {
|
||||
// bg
|
||||
if ( isMSIE55 && !doneIEAlphaFix ) {
|
||||
var plogo = document.getElementById( logoId || 'p-logo' );
|
||||
if ( !plogo ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var logoa = plogo.getElementsByTagName('a')[0];
|
||||
if ( !logoa ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var bg = logoa.currentStyle.backgroundImage;
|
||||
var imageUrl = bg.substring( 5, bg.length - 2 );
|
||||
|
||||
doneIEAlphaFix = true;
|
||||
|
||||
if ( imageUrl.substr( imageUrl.length - 4 ).toLowerCase() == '.png' ) {
|
||||
var logospan = logoa.appendChild( document.createElement( 'span' ) );
|
||||
|
||||
logoa.style.backgroundImage = 'none';
|
||||
logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')';
|
||||
logospan.style.height = '100%';
|
||||
logospan.style.position = 'absolute';
|
||||
logospan.style.width = logoa.currentStyle.width;
|
||||
logospan.style.cursor = 'hand';
|
||||
// Center image with hack for IE5.5
|
||||
if ( document.documentElement.dir == 'rtl' ) {
|
||||
logospan.style.right = '50%';
|
||||
logospan.style.setExpression( 'marginRight', '"-" + (this.offsetWidth / 2) + "px"' );
|
||||
} else {
|
||||
logospan.style.left = '50%';
|
||||
logospan.style.setExpression( 'marginLeft', '"-" + (this.offsetWidth / 2) + "px"' );
|
||||
}
|
||||
logospan.style.top = '50%';
|
||||
logospan.style.setExpression( 'marginTop', '"-" + (this.offsetHeight / 2) + "px"' );
|
||||
|
||||
var linkFix = logoa.appendChild( logoa.cloneNode() );
|
||||
linkFix.style.position = 'absolute';
|
||||
linkFix.style.height = '100%';
|
||||
linkFix.style.width = '100%';
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// fix ie6 disappering float bug
|
||||
window.relativeforfloats = function() {
|
||||
var bc = document.getElementById( 'bodyContent' );
|
||||
if ( bc ) {
|
||||
var tables = bc.getElementsByTagName( 'table' );
|
||||
var divs = bc.getElementsByTagName( 'div' );
|
||||
}
|
||||
setrelative( tables );
|
||||
setrelative( divs );
|
||||
};
|
||||
|
||||
window.setrelative = function( nodes ) {
|
||||
var i = 0;
|
||||
while ( i < nodes.length ) {
|
||||
if( ( ( nodes[i].style.float && nodes[i].style.float != ( 'none' ) ||
|
||||
( nodes[i].align && nodes[i].align != ( 'none' ) ) ) &&
|
||||
( !nodes[i].style.position || nodes[i].style.position != 'relative' ) ) )
|
||||
{
|
||||
nodes[i].style.position = 'relative';
|
||||
}
|
||||
i++;
|
||||
}
|
||||
};
|
||||
|
||||
// Expand links for printing
|
||||
String.prototype.hasClass = function( classWanted ) {
|
||||
var classArr = this.split(/\s/);
|
||||
for ( var i = 0; i < classArr.length; i++ ) {
|
||||
if ( classArr[i].toLowerCase() == classWanted.toLowerCase() ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
window.expandedURLs = undefined;
|
||||
|
||||
window.onbeforeprint = function() {
|
||||
expandedURLs = [];
|
||||
|
||||
var contentEl = document.getElementById( 'content' );
|
||||
|
||||
if ( contentEl ) {
|
||||
var allLinks = contentEl.getElementsByTagName( 'a' );
|
||||
|
||||
for ( var i = 0; i < allLinks.length; i++ ) {
|
||||
if ( allLinks[i].className.hasClass( 'external' ) && !allLinks[i].className.hasClass( 'free' ) ) {
|
||||
var expandedLink = document.createElement( 'span' );
|
||||
var expandedText = document.createTextNode( ' (' + allLinks[i].href + ')' );
|
||||
expandedLink.appendChild( expandedText );
|
||||
allLinks[i].parentNode.insertBefore( expandedLink, allLinks[i].nextSibling );
|
||||
expandedURLs[i] = expandedLink;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
window.onafterprint = function() {
|
||||
for ( var i = 0; i < expandedURLs.length; i++ ) {
|
||||
if ( expandedURLs[i] ) {
|
||||
expandedURLs[i].removeNode( true );
|
||||
}
|
||||
}
|
||||
};
|
|
@ -1,2 +0,0 @@
|
|||
jquery.min.js: jquery.js
|
||||
php ../../maintenance/minify.php $< --outfile $@
|
177
common/ajax.js
|
@ -1,177 +0,0 @@
|
|||
// remote scripting library
|
||||
// (c) copyright 2005 modernmethod, inc
|
||||
window.sajax_debug_mode = false;
|
||||
window.sajax_request_type = 'GET';
|
||||
|
||||
/**
|
||||
* if sajax_debug_mode is true, this function outputs given the message into
|
||||
* the element with id = sajax_debug; if no such element exists in the document,
|
||||
* it is injected.
|
||||
*/
|
||||
window.sajax_debug = function(text) {
|
||||
if (!sajax_debug_mode) return false;
|
||||
|
||||
var e = document.getElementById( 'sajax_debug' );
|
||||
|
||||
if ( !e ) {
|
||||
e = document.createElement( 'p' );
|
||||
e.className = 'sajax_debug';
|
||||
e.id = 'sajax_debug';
|
||||
|
||||
var b = document.getElementsByTagName( 'body' )[0];
|
||||
|
||||
if ( b.firstChild ) {
|
||||
b.insertBefore( e, b.firstChild );
|
||||
} else {
|
||||
b.appendChild( e );
|
||||
}
|
||||
}
|
||||
|
||||
var m = document.createElement( 'div' );
|
||||
m.appendChild( document.createTextNode( text ) );
|
||||
|
||||
e.appendChild( m );
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* Compatibility wrapper for creating a new XMLHttpRequest object.
|
||||
*/
|
||||
window.sajax_init_object = function() {
|
||||
sajax_debug( 'sajax_init_object() called..' );
|
||||
var A;
|
||||
try {
|
||||
// Try the new style before ActiveX so we don't
|
||||
// unnecessarily trigger warnings in IE 7 when
|
||||
// set to prompt about ActiveX usage
|
||||
A = new XMLHttpRequest();
|
||||
} catch ( e ) {
|
||||
try {
|
||||
A = new ActiveXObject( 'Msxml2.XMLHTTP' );
|
||||
} catch ( e ) {
|
||||
try {
|
||||
A = new ActiveXObject( 'Microsoft.XMLHTTP' );
|
||||
} catch ( oc ) {
|
||||
A = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( !A ) {
|
||||
sajax_debug( 'Could not create connection object.' );
|
||||
}
|
||||
|
||||
return A;
|
||||
};
|
||||
|
||||
/**
|
||||
* Perform an AJAX call to MediaWiki. Calls are handled by AjaxDispatcher.php
|
||||
* func_name - the name of the function to call. Must be registered in $wgAjaxExportList
|
||||
* args - an array of arguments to that function
|
||||
* target - the target that will handle the result of the call. If this is a function,
|
||||
* if will be called with the XMLHttpRequest as a parameter; if it's an input
|
||||
* element, its value will be set to the resultText; if it's another type of
|
||||
* element, its innerHTML will be set to the resultText.
|
||||
*
|
||||
* Example:
|
||||
* sajax_do_call( 'doFoo', [1, 2, 3], document.getElementById( 'showFoo' ) );
|
||||
*
|
||||
* This will call the doFoo function via MediaWiki's AjaxDispatcher, with
|
||||
* (1, 2, 3) as the parameter list, and will show the result in the element
|
||||
* with id = showFoo
|
||||
*/
|
||||
window.sajax_do_call = function(func_name, args, target) {
|
||||
var i, x, n;
|
||||
var uri;
|
||||
var post_data;
|
||||
uri = wgServer +
|
||||
( ( wgScript == null ) ? ( wgScriptPath + '/index.php' ) : wgScript ) +
|
||||
'?action=ajax';
|
||||
if ( sajax_request_type == 'GET' ) {
|
||||
if ( uri.indexOf( '?' ) == -1 ) {
|
||||
uri = uri + '?rs=' + encodeURIComponent( func_name );
|
||||
} else {
|
||||
uri = uri + '&rs=' + encodeURIComponent( func_name );
|
||||
}
|
||||
for ( i = 0; i < args.length; i++ ) {
|
||||
uri = uri + '&rsargs[]=' + encodeURIComponent( args[i] );
|
||||
}
|
||||
//uri = uri + '&rsrnd=' + new Date().getTime();
|
||||
post_data = null;
|
||||
} else {
|
||||
post_data = 'rs=' + encodeURIComponent( func_name );
|
||||
for ( i = 0; i < args.length; i++ ) {
|
||||
post_data = post_data + '&rsargs[]=' + encodeURIComponent( args[i] );
|
||||
}
|
||||
}
|
||||
x = sajax_init_object();
|
||||
if ( !x ) {
|
||||
alert( 'AJAX not supported' );
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
x.open( sajax_request_type, uri, true );
|
||||
} catch ( e ) {
|
||||
if ( window.location.hostname == 'localhost' ) {
|
||||
alert( "Your browser blocks XMLHttpRequest to 'localhost', try using a real hostname for development/testing." );
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
if ( sajax_request_type == 'POST' ) {
|
||||
x.setRequestHeader( 'Method', 'POST ' + uri + ' HTTP/1.1' );
|
||||
x.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
|
||||
}
|
||||
x.setRequestHeader( 'Pragma', 'cache=yes' );
|
||||
x.setRequestHeader( 'Cache-Control', 'no-transform' );
|
||||
x.onreadystatechange = function() {
|
||||
if ( x.readyState != 4 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
sajax_debug( 'received (' + x.status + ' ' + x.statusText + ') ' + x.responseText );
|
||||
|
||||
//if ( x.status != 200 )
|
||||
// alert( 'Error: ' + x.status + ' ' + x.statusText + ': ' + x.responseText );
|
||||
//else
|
||||
|
||||
if ( typeof( target ) == 'function' ) {
|
||||
target( x );
|
||||
} else if ( typeof( target ) == 'object' ) {
|
||||
if ( target.tagName == 'INPUT' ) {
|
||||
if ( x.status == 200 ) {
|
||||
target.value= x.responseText;
|
||||
}
|
||||
//else alert( 'Error: ' + x.status + ' ' + x.statusText + ' (' + x.responseText + ')' );
|
||||
} else {
|
||||
if ( x.status == 200 ) {
|
||||
target.innerHTML = x.responseText;
|
||||
} else {
|
||||
target.innerHTML = '<div class="error">Error: ' + x.status +
|
||||
' ' + x.statusText + ' (' + x.responseText + ')</div>';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
alert( 'bad target for sajax_do_call: not a function or object: ' + target );
|
||||
}
|
||||
|
||||
return;
|
||||
};
|
||||
|
||||
sajax_debug( func_name + ' uri = ' + uri + ' / post = ' + post_data );
|
||||
x.send( post_data );
|
||||
sajax_debug( func_name + ' waiting..' );
|
||||
delete x;
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return boolean whether the browser supports XMLHttpRequest
|
||||
*/
|
||||
window.wfSupportsAjax = function() {
|
||||
var request = sajax_init_object();
|
||||
var supportsAjax = request ? true : false;
|
||||
delete request;
|
||||
return supportsAjax;
|
||||
};
|
|
@ -1,120 +0,0 @@
|
|||
/**
|
||||
* Animate watch/unwatch links to use asynchronous API requests to
|
||||
* watch pages, rather than clicking on links. Requires jQuery.
|
||||
* Uses jsMsg() from wikibits.js.
|
||||
*/
|
||||
|
||||
if ( typeof wgAjaxWatch === 'undefined' || !wgAjaxWatch ) {
|
||||
window.wgAjaxWatch = { };
|
||||
}
|
||||
|
||||
wgAjaxWatch.setLinkText = function( $link, action ) {
|
||||
if ( action == 'watch' || action == 'unwatch' ) {
|
||||
// save the accesskey from the title
|
||||
var keyCommand = $link.attr( 'title' ).match( /\[.*?\]$/ ) ? $link.attr( 'title' ).match( /\[.*?\]$/ )[0] : '';
|
||||
$link.attr( 'title', mediaWiki.msg( 'tooltip-ca-' + action ) + ' ' + keyCommand );
|
||||
}
|
||||
if ( $link.data( 'icon' ) ) {
|
||||
$link.attr( 'alt', mediaWiki.msg( action ) );
|
||||
if ( action == 'watching' || action == 'unwatching' ) {
|
||||
$link.addClass( 'loading' );
|
||||
} else {
|
||||
$link.removeClass( 'loading' );
|
||||
}
|
||||
} else {
|
||||
$link.html( mediaWiki.msg( action ) );
|
||||
}
|
||||
};
|
||||
|
||||
wgAjaxWatch.processResult = function( response ) {
|
||||
response = response.watch;
|
||||
var $link = $( this );
|
||||
// To ensure we set the same status for all watch links with the
|
||||
// same target we trigger a custom event on *all* watch links.
|
||||
if( response.watched !== undefined ) {
|
||||
wgAjaxWatch.$links.trigger( 'mw-ajaxwatch', [response.title, 'watch'] );
|
||||
} else if ( response.unwatched !== undefined ) {
|
||||
wgAjaxWatch.$links.trigger( 'mw-ajaxwatch', [response.title, 'unwatch'] );
|
||||
} else {
|
||||
// Either we got an error code or it just plain broke.
|
||||
window.location.href = $link.attr( 'href' );
|
||||
return;
|
||||
}
|
||||
|
||||
jsMsg( response.message, 'watch' );
|
||||
|
||||
// Bug 12395 - update the watch checkbox on edit pages when the
|
||||
// page is watched or unwatched via the tab.
|
||||
if( response.watched !== undefined ) {
|
||||
$( '#wpWatchthis' ).attr( 'checked', '1' );
|
||||
} else {
|
||||
$( '#wpWatchthis' ).removeAttr( 'checked' );
|
||||
}
|
||||
};
|
||||
|
||||
$( document ).ready( function() {
|
||||
var $links = $( '.mw-watchlink a, a.mw-watchlink' );
|
||||
// BC with older skins
|
||||
$links = $links
|
||||
.add( $( '#ca-watch a, #ca-unwatch a, a#mw-unwatch-link1' ) )
|
||||
.add( $( 'a#mw-unwatch-link2, a#mw-watch-link2, a#mw-watch-link1' ) );
|
||||
// allowing people to add inline animated links is a little scary
|
||||
$links = $links.filter( ':not( #bodyContent *, #content * )' );
|
||||
|
||||
$links.each( function() {
|
||||
var $link = $( this );
|
||||
$link
|
||||
.data( 'icon', $link.parents( 'li' ).hasClass( 'icon' ) )
|
||||
.data( 'action', $link.attr( 'href' ).match( /[\?&]action=unwatch/i ) ? 'unwatch' : 'watch' );
|
||||
var title = $link.attr( 'href' ).match( /[\?&]title=(.*?)&/i )[1];
|
||||
$link.data( 'target', decodeURIComponent( title ).replace( /_/g, ' ' ) );
|
||||
});
|
||||
|
||||
$links.click( function( event ) {
|
||||
var $link = $( this );
|
||||
|
||||
if( wgAjaxWatch.supported === false || !wgEnableWriteAPI || !wfSupportsAjax() ) {
|
||||
// Lazy initialization so we don't toss up
|
||||
// ActiveX warnings on initial page load
|
||||
// for IE 6 users with security settings.
|
||||
wgAjaxWatch.$links.unbind( 'click' );
|
||||
return true;
|
||||
}
|
||||
|
||||
wgAjaxWatch.setLinkText( $link, $link.data( 'action' ) + 'ing' );
|
||||
$.get( wgScriptPath
|
||||
+ '/api' + wgScriptExtension + '?action=watch&format=json&title='
|
||||
+ encodeURIComponent( $link.data( 'target' ) )
|
||||
+ ( $link.data( 'action' ) == 'unwatch' ? '&unwatch' : '' ),
|
||||
{},
|
||||
wgAjaxWatch.processResult,
|
||||
'json'
|
||||
);
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
// When a request returns, a custom event 'mw-ajaxwatch' is triggered
|
||||
// on *all* watch links, so they can be updated if necessary
|
||||
$links.bind( 'mw-ajaxwatch', function( event, target, action ) {
|
||||
var $link = $( this );
|
||||
var foo = $link.data( 'target' );
|
||||
if( $link.data( 'target' ) == target ) {
|
||||
var otheraction = action == 'watch'
|
||||
? 'unwatch'
|
||||
: 'watch';
|
||||
|
||||
$link.data( 'action', otheraction );
|
||||
wgAjaxWatch.setLinkText( $link, otheraction );
|
||||
$link.attr( 'href', $link.attr( 'href' ).replace( '/&action=' + action + '/', '&action=' + otheraction ) );
|
||||
if( $link.parents( 'li' ).attr( 'id' ) == 'ca-' + action ) {
|
||||
$link.parents( 'li' ).attr( 'id', 'ca-' + otheraction );
|
||||
// update the link text with the new message
|
||||
$link.text( mediaWiki.msg( otheraction ) );
|
||||
}
|
||||
};
|
||||
return false;
|
||||
});
|
||||
|
||||
wgAjaxWatch.$links = $links;
|
||||
});
|
|
@ -1,89 +0,0 @@
|
|||
// @TODO: find some better JS file for this
|
||||
// Note: borrows from IP.php
|
||||
window.isIPv4Address = function( address, allowBlock ) {
|
||||
var block = allowBlock ? '(?:\\/(?:3[0-2]|[12]?\\d))?' : '';
|
||||
var RE_IP_BYTE = '(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|0?[0-9]?[0-9])';
|
||||
var RE_IP_ADD = '(?:' + RE_IP_BYTE + '\\.){3}' + RE_IP_BYTE;
|
||||
return address.search( new RegExp( '^' + RE_IP_ADD + block + '$' ) ) != -1;
|
||||
};
|
||||
|
||||
// @TODO: find some better JS file for this
|
||||
// Note: borrows from IP.php
|
||||
window.isIPv6Address = function( address, allowBlock ) {
|
||||
var block = allowBlock ? '(?:\\/(?:12[0-8]|1[01][0-9]|[1-9]?\\d))?' : '';
|
||||
var RE_IPV6_ADD =
|
||||
'(?:' + // starts with "::" (including "::")
|
||||
':(?::|(?::' + '[0-9A-Fa-f]{1,4}' + '){1,7})' +
|
||||
'|' + // ends with "::" (except "::")
|
||||
'[0-9A-Fa-f]{1,4}' + '(?::' + '[0-9A-Fa-f]{1,4}' + '){0,6}::' +
|
||||
'|' + // contains no "::"
|
||||
'[0-9A-Fa-f]{1,4}' + '(?::' + '[0-9A-Fa-f]{1,4}' + '){7}' +
|
||||
')';
|
||||
if ( address.search( new RegExp( '^' + RE_IPV6_ADD + block + '$' ) ) != -1 ) {
|
||||
return true;
|
||||
}
|
||||
var RE_IPV6_ADD = // contains one "::" in the middle (single '::' check below)
|
||||
'[0-9A-Fa-f]{1,4}' + '(?:::?' + '[0-9A-Fa-f]{1,4}' + '){1,6}';
|
||||
return address.search( new RegExp( '^' + RE_IPV6_ADD + block + '$' ) ) != -1
|
||||
&& address.search( /::/ ) != -1 && address.search( /::.*::/ ) == -1;
|
||||
};
|
||||
|
||||
window.considerChangingExpiryFocus = function() {
|
||||
if ( !document.getElementById ) {
|
||||
return;
|
||||
}
|
||||
var drop = document.getElementById( 'wpBlockExpiry' );
|
||||
if ( !drop ) {
|
||||
return;
|
||||
}
|
||||
var field = document.getElementById( 'wpBlockOther' );
|
||||
if ( !field ) {
|
||||
return;
|
||||
}
|
||||
var opt = drop.value;
|
||||
if ( opt == 'other' ) {
|
||||
field.style.display = '';
|
||||
} else {
|
||||
field.style.display = 'none';
|
||||
}
|
||||
};
|
||||
|
||||
window.updateBlockOptions = function() {
|
||||
if ( !document.getElementById ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var target = document.getElementById( 'mw-bi-target' );
|
||||
if ( !target ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var addy = target.value.replace( /(^\s*|\s*$)/, '' ); // trim
|
||||
var isEmpty = (addy == "");
|
||||
|
||||
var isIp = isIPv4Address( addy, true ) || isIPv6Address( addy, true );
|
||||
var isIpRange = isIp && addy.match(/\/\d+$/);
|
||||
|
||||
var anonymousRow = document.getElementById( 'wpAnonOnlyRow' );
|
||||
if( anonymousRow ) {
|
||||
anonymousRow.style.display = ( !isIp && !isEmpty ) ? 'none' : '';
|
||||
}
|
||||
|
||||
var autoblockRow = document.getElementById( 'wpEnableAutoblockRow' );
|
||||
if( autoblockRow ) {
|
||||
autoblockRow.style.display = isIp && !isEmpty ? 'none' : '';
|
||||
}
|
||||
|
||||
var hideuserRow = document.getElementById( 'wpEnableHideUser' );
|
||||
if( hideuserRow ) {
|
||||
hideuserRow.style.display = isIp && !isEmpty ? 'none' : '';
|
||||
}
|
||||
|
||||
var watchuserRow = document.getElementById( 'wpEnableWatchUser' );
|
||||
if( watchuserRow ) {
|
||||
watchuserRow.style.display = isIpRange && !isEmpty ? 'none' : '';
|
||||
}
|
||||
};
|
||||
|
||||
addOnloadHook( updateBlockOptions );
|
||||
addOnloadHook( considerChangingExpiryFocus );
|
|
@ -1,16 +0,0 @@
|
|||
|
||||
function onNameChange() {
|
||||
if ( wgUserName != document.getElementById('wpName').value ) {
|
||||
document.getElementById('wpPassword').disabled = true;
|
||||
document.getElementById('wpComment').disabled = false;
|
||||
} else {
|
||||
document.getElementById('wpPassword').disabled = false;
|
||||
document.getElementById('wpComment').disabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
function onNameChangeHook() {
|
||||
document.getElementById( 'wpName' ).onblur = onNameChange;
|
||||
}
|
||||
|
||||
addOnloadHook( onNameChangeHook );
|
|
@ -1,210 +0,0 @@
|
|||
body {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
color: black;
|
||||
}
|
||||
|
||||
#specialform {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#content {
|
||||
top: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#mw-data-after-content {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
color: black;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
#topbar {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#powersearch {
|
||||
background: #DDEEFF;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
#quickbar {
|
||||
width: 140px;
|
||||
top: 18ex;
|
||||
padding: 2px;
|
||||
visibility: visible;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
#article, #article td, #article th, #article p {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
font-size: 10pt;
|
||||
color: black;
|
||||
}
|
||||
|
||||
#article p {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
margin-top: 1ex;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
p, pre, td, th, li, dd, dt {
|
||||
line-height: 12pt;
|
||||
}
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#footer {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
#footer form {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#sitetitle {
|
||||
font-family: Times, serif;
|
||||
color: white;
|
||||
font-weight: normal;
|
||||
font-size: 32pt;
|
||||
line-height: 32pt;
|
||||
}
|
||||
|
||||
td.top {
|
||||
background-color: #6688AA;
|
||||
color: white;
|
||||
margin-top: 4px;
|
||||
margin-bottom: 4px;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
text-transform: uppercase;
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
td.top a {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
background-color: #6688AA;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
td.bottom {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
font-size: 10pt;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#pagestats {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
color: black;
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
#sitesub {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
font-size: 9pt; font-weight: bold;
|
||||
color: black;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
#quickbar {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
line-height: 9.5pt;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
padding: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
#quickbar a {
|
||||
color: #446688;
|
||||
}
|
||||
|
||||
#quickbar h6 {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
line-height: 12pt;
|
||||
text-decoration: none;
|
||||
color: #666666;
|
||||
padding: 0;
|
||||
margin-bottom: 2px;
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
#quickbar form {
|
||||
padding: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #666666;
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
font-size: 180%;
|
||||
line-height: 21pt;
|
||||
}
|
||||
|
||||
h1 .editsection {
|
||||
font-size: 55.6%;
|
||||
}
|
||||
|
||||
h1.pagetitle {
|
||||
padding-bottom: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#article p.subtitle {
|
||||
color: #666666;
|
||||
font-size: 11pt;
|
||||
font-weight: bold;
|
||||
padding-top: 0;
|
||||
margin-top: 0;
|
||||
padding-bottom: 1ex;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #223366;
|
||||
}
|
||||
|
||||
a.external {
|
||||
color: #336644;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #8D0749;
|
||||
}
|
||||
|
||||
a.printable {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.stub, #quickbar a.stub {
|
||||
color: #772233;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.new, #quickbar a.new {
|
||||
color: #CC2200;
|
||||
}
|
||||
|
||||
h2, h3, h4, h5, h6 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 75%;
|
||||
}
|
||||
|
||||
input.mw-searchInput {
|
||||
width: 106px;
|
||||
}
|
|
@ -1,343 +0,0 @@
|
|||
/*
|
||||
** MediaWiki Print style sheet for CSS2-capable browsers.
|
||||
** Copyright Gabriel Wicke, http://www.aulinx.de/
|
||||
**
|
||||
** Derived from the plone (http://plone.org/) styles
|
||||
** Copyright Alexander Limi
|
||||
*/
|
||||
|
||||
/* Thanks to A List Apart (http://alistapart.com/) for useful extras */
|
||||
a.stub,
|
||||
a.new {
|
||||
color: #ba0000;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#toc {
|
||||
border: 1px solid #aaaaaa;
|
||||
background-color: #f9f9f9;
|
||||
padding: 5px;
|
||||
}
|
||||
.tocindent {
|
||||
margin-left: 2em;
|
||||
}
|
||||
.tocline {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
/* images */
|
||||
div.floatright {
|
||||
float: right;
|
||||
clear: right;
|
||||
position: relative;
|
||||
margin: 0.5em 0 0.8em 1.4em;
|
||||
}
|
||||
div.floatright p {
|
||||
font-style: italic;
|
||||
}
|
||||
div.floatleft {
|
||||
float: left;
|
||||
clear: left;
|
||||
position: relative;
|
||||
margin: 0.5em 1.4em 0.8em 0;
|
||||
}
|
||||
div.floatleft p {
|
||||
font-style: italic;
|
||||
}
|
||||
div.center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* thumbnails */
|
||||
div.thumb {
|
||||
border: none;
|
||||
width: auto;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.8em;
|
||||
background-color: transparent;
|
||||
}
|
||||
div.thumbinner {
|
||||
border:1px solid #cccccc;
|
||||
padding: 3px !important;
|
||||
background-color: White;
|
||||
font-size: 94%;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
}
|
||||
html .thumbimage {
|
||||
border: 1px solid #cccccc;
|
||||
}
|
||||
html .thumbcaption {
|
||||
border: none;
|
||||
text-align: left;
|
||||
line-height: 1.4em;
|
||||
padding: 3px !important;
|
||||
font-size: 94%;
|
||||
}
|
||||
|
||||
div.magnify {
|
||||
display: none;
|
||||
}
|
||||
div.tright {
|
||||
float: right;
|
||||
clear: right;
|
||||
margin: 0.5em 0 0.8em 1.4em;
|
||||
}
|
||||
div.tleft {
|
||||
float: left;
|
||||
clear: left;
|
||||
margin: 0.5em 1.4em 0.8em 0;
|
||||
}
|
||||
img.thumbborder {
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
/* table standards */
|
||||
table.rimage {
|
||||
float: right;
|
||||
width: 1pt;
|
||||
position: relative;
|
||||
margin-left: 1em;
|
||||
margin-bottom: 1em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
body {
|
||||
background: White;
|
||||
/*font-size: 11pt !important;*/
|
||||
color: Black;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.noprint,
|
||||
div#jump-to-nav,
|
||||
div.top,
|
||||
div#column-one,
|
||||
#colophon,
|
||||
.editsection,
|
||||
.toctoggle,
|
||||
.tochidden,
|
||||
div#f-poweredbyico,
|
||||
div#f-copyrightico,
|
||||
li#viewcount,
|
||||
li#about,
|
||||
li#disclaimer,
|
||||
li#privacy,
|
||||
#footer-places,
|
||||
#mw-hidden-catlinks {
|
||||
/* Hides all the elements irrelevant for printing */
|
||||
display: none;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: square;
|
||||
}
|
||||
|
||||
#content {
|
||||
background: none;
|
||||
border: none ! important;
|
||||
padding: 0 ! important;
|
||||
margin: 0 ! important;
|
||||
}
|
||||
#footer {
|
||||
background : white;
|
||||
color : black;
|
||||
border-top: 1px solid black;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p, .documentDescription {
|
||||
margin: 1em 0 ! important;
|
||||
line-height: 1.2em;
|
||||
}
|
||||
|
||||
.tocindent p {
|
||||
margin: 0 0 0 0 ! important;
|
||||
}
|
||||
|
||||
pre {
|
||||
border: 1pt dashed black;
|
||||
white-space: pre;
|
||||
font-size: 8pt;
|
||||
overflow: auto;
|
||||
padding: 1em 0;
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
table.listing,
|
||||
table.listing td {
|
||||
border: 1pt solid black;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
a {
|
||||
color: Black !important;
|
||||
background: none !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
a:link, a:visited {
|
||||
color: #520;
|
||||
background: transparent;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#content a.external.text:after, #content a.external.autonumber:after {
|
||||
/* Expand URLs for printing */
|
||||
content: " (" attr(href) ") ";
|
||||
}
|
||||
|
||||
#globalWrapper {
|
||||
width: 100% !important;
|
||||
min-width: 0 !important;
|
||||
}
|
||||
|
||||
#content {
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
#column-content {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
#column-content #content {
|
||||
padding: 1em;
|
||||
margin: 0 !important;
|
||||
}
|
||||
/* MSIE/Win doesn't understand 'inherit' */
|
||||
a, a.external, a.new, a.stub {
|
||||
color: black ! important;
|
||||
text-decoration: none ! important;
|
||||
}
|
||||
|
||||
/* Continue ... */
|
||||
a, a.external, a.new, a.stub {
|
||||
color: inherit ! important;
|
||||
text-decoration: inherit ! important;
|
||||
}
|
||||
|
||||
img {
|
||||
border: none;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* math */
|
||||
span.texhtml { font-family: serif; }
|
||||
|
||||
#siteNotice { display: none; }
|
||||
|
||||
/* Galleries (see shared.css for more info) */
|
||||
li.gallerybox {
|
||||
vertical-align: top;
|
||||
background-color: #f9f9f9;
|
||||
border: solid 2px white;
|
||||
display: -moz-inline-box;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
ul.gallery, li.gallerybox {
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
}
|
||||
|
||||
ul.gallery {
|
||||
margin: 2px;
|
||||
padding: 2px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
li.gallerycaption {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
display: block;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
li.gallerybox div.thumb {
|
||||
text-align: center;
|
||||
border: 1px solid #ccc;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
div.gallerytext {
|
||||
overflow: hidden;
|
||||
font-size: 94%;
|
||||
padding: 2px 4px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
/*
|
||||
** Diff rendering
|
||||
*/
|
||||
table.diff {
|
||||
background: white;
|
||||
}
|
||||
td.diff-otitle {
|
||||
background: #ffffff;
|
||||
}
|
||||
td.diff-ntitle {
|
||||
background: #ffffff;
|
||||
}
|
||||
td.diff-addedline {
|
||||
background: #ccffcc;
|
||||
font-size: smaller;
|
||||
border: solid 2px black;
|
||||
}
|
||||
td.diff-deletedline {
|
||||
background: #ffffaa;
|
||||
font-size: smaller;
|
||||
border: dotted 2px black;
|
||||
}
|
||||
td.diff-context {
|
||||
background: #eeeeee;
|
||||
font-size: smaller;
|
||||
}
|
||||
.diffchange {
|
||||
color: silver;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/*
|
||||
** Table rendering
|
||||
** As on shared.css but with white background.
|
||||
*/
|
||||
table.wikitable {
|
||||
margin: 1em 1em 1em 0;
|
||||
border: 1px #aaa solid;
|
||||
background: white;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.wikitable th, .wikitable td {
|
||||
border: 1px #aaa solid;
|
||||
padding: 0.2em;
|
||||
}
|
||||
.wikitable th {
|
||||
text-align: center;
|
||||
background: white;
|
||||
font-weight: bold;
|
||||
}
|
||||
.wikitable caption {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a.sortheader {
|
||||
margin: 0px 0.3em;
|
||||
}
|
||||
|
||||
/* Some pagination options */
|
||||
.wikitable, .thumb, img {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
h2, h3, h4, h5, h6, h7 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
p {
|
||||
widows: 3;
|
||||
orphans: 3;
|
||||
}
|
|
@ -1,59 +0,0 @@
|
|||
/*
|
||||
* This file contains CSS settings common to RTL wikis use the old
|
||||
* pre-Monobook skins Wikistandard, Nostalgia and CologneBlue
|
||||
* NOTE: This file is not used in Monobook!
|
||||
*/
|
||||
|
||||
/* js pref toc */
|
||||
#preftoc { float: right; }
|
||||
/* workaround for moz bug, displayed bullets on left side */
|
||||
#preftoc li { list-style: none; }
|
||||
#prefcontrol { float: right; }
|
||||
fieldset.prefsection,
|
||||
fieldset.operaprefsection {
|
||||
margin-left: 0;
|
||||
margin-right: 18em;
|
||||
}
|
||||
/* page history */
|
||||
#pagehistory .history-user {
|
||||
margin-right: 1.4em;
|
||||
margin-left: 0.4em;
|
||||
}
|
||||
.editsection {
|
||||
float: left;
|
||||
margin-right: 5px;
|
||||
}
|
||||
div.tright, div.floatright {
|
||||
clear: none;
|
||||
}
|
||||
div.tleft, div.floatleft {
|
||||
clear: left;
|
||||
}
|
||||
/* Convenience links to edit block, delete and protect reasons */
|
||||
p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
|
||||
p.mw-filedelete-editreasons, p.mw-delete-editreasons,
|
||||
p.mw-revdel-editreasons {
|
||||
float: left;
|
||||
}
|
||||
table.filehistory th {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists:
|
||||
* The following lines don't have a visible effect on non-Gecko browsers
|
||||
* They fix a problem ith Gecko browsers rendering lists to the right of
|
||||
* left-floated objects in an RTL layout.
|
||||
*/
|
||||
html > body div#article ul {
|
||||
display: table;
|
||||
}
|
||||
html > body div#bodyContent ul#filetoc {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* feed links */
|
||||
a.feedlink {
|
||||
background: none !important;
|
||||
padding-left: 0 !important;
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
/**
|
||||
* Copy of CC standard stylesheet, plus tweaks for iframe usage
|
||||
*/
|
||||
|
||||
body {
|
||||
margin:0px;
|
||||
background:#eee;
|
||||
font-family:verdana;
|
||||
color:#333;
|
||||
}
|
||||
|
||||
#main {
|
||||
border:1px solid #D0D0D0;
|
||||
background:#fff;
|
||||
margin: 0.5em;
|
||||
}
|
||||
|
||||
/* Looks like you have to specify the width of #menu
|
||||
or IE5 Mac stretches it all the way across the div, and
|
||||
Opera streches it half way. */
|
||||
|
||||
#main #menu {
|
||||
border-left:1px dotted #ccc;
|
||||
/* border-bottom:1px solid #000;*/
|
||||
float:right;
|
||||
width:230px;
|
||||
background:white;
|
||||
margin:0px 0px 10px 10px;
|
||||
}
|
||||
|
||||
td, h3, p,h1,pre {
|
||||
margin:0px 20px 20px 20px;
|
||||
font-size:11px;
|
||||
line-height:140%;
|
||||
}
|
||||
|
||||
.header {
|
||||
padding-left: 10px;
|
||||
padding-top:10px;
|
||||
}
|
||||
|
||||
.nav {
|
||||
padding-left:10px;
|
||||
padding-bottom:10px;
|
||||
font-size:11px;
|
||||
margin-bottom:16px;
|
||||
}
|
||||
|
||||
#menu p {
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
.dent {
|
||||
margin-left:64px;
|
||||
}
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
.env-check {
|
||||
font-size: 90%;
|
||||
margin: 1em 0 1em 2.5em;
|
||||
}
|
||||
|
||||
.config-section {
|
||||
margin-top: 2em;
|
||||
}
|
||||
.config-block {
|
||||
margin-top: 2em;
|
||||
display: block;
|
||||
|
||||
}
|
||||
.config-block-label {
|
||||
display: block;
|
||||
margin-bottom: .2em;
|
||||
}
|
||||
.config-block-label label, .config-label {
|
||||
font-weight: bold;
|
||||
padding-right: .5em;
|
||||
padding-top: .2em;
|
||||
}
|
||||
.config-block-elements {
|
||||
margin-left: 2em;
|
||||
}
|
||||
.config-block-elements li {
|
||||
list-style: none;
|
||||
}
|
||||
.config-input {
|
||||
clear: left;
|
||||
zoom: 100%; /* IE hack */
|
||||
}
|
||||
|
||||
.config-page-wrapper {
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.config-page-list {
|
||||
float: right;
|
||||
width: 12em;
|
||||
border: 1px solid #aaa;
|
||||
background: #fff;
|
||||
padding: 0.5em;
|
||||
/* 3em left margin to leave space between the list and the page-content */
|
||||
margin: 0.5em 0.5em 0.5em 3.5em;
|
||||
}
|
||||
|
||||
.config-page {
|
||||
padding: 0.5em 0.5em 0.5em 2em;
|
||||
margin: 0.5em 0.5em 0.5em 0.5em;
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
.config-submit {
|
||||
clear: left;
|
||||
text-align: center;
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
.config-submit input {
|
||||
margin-left: 0.5em;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
|
||||
.config-page-disabled {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
.config-error-box {
|
||||
border: 2px solid #f00;
|
||||
margin: 0.4em;
|
||||
clear: left;
|
||||
}
|
||||
|
||||
.config-warning-box {
|
||||
border: 2px solid #ff7f00;
|
||||
margin: 0.4em;
|
||||
clear: left;
|
||||
}
|
||||
|
||||
.config-info-left {
|
||||
margin: 7px;
|
||||
float: left;
|
||||
width: 35px;
|
||||
}
|
||||
|
||||
.config-info-right {
|
||||
margin: 0.5em 0.5em 0.5em 49px;
|
||||
}
|
||||
|
||||
.config-page-current {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.config-message {
|
||||
display: list-item;
|
||||
line-height: 1.5em;
|
||||
/* @embed */
|
||||
list-style-image: url(images/bullet.gif);
|
||||
list-style-type: square;
|
||||
}
|
||||
|
||||
.config-input-text {
|
||||
width: 20em;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
.config-input-check {
|
||||
margin-left: 10em;
|
||||
}
|
||||
|
||||
.error {
|
||||
color: red;
|
||||
background-color: #fff;
|
||||
font-weight: bold;
|
||||
left: 1em;
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
.config-settings-block {
|
||||
list-style-type: none;
|
||||
list-style-image: none;
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.btn-install {
|
||||
font-weight: bold;
|
||||
font-size: 110%;
|
||||
padding: .2em .3em;
|
||||
}
|
||||
|
||||
.success-message {
|
||||
font-weight: bold;
|
||||
font-size: 110%;
|
||||
color: green;
|
||||
}
|
||||
.success-box {
|
||||
font-size: 130%;
|
||||
}
|
||||
|
||||
.config-cc-wrapper {
|
||||
clear: left;
|
||||
/* If you change this height, also change it in WebInstaller_Options::submitCC() */
|
||||
height: 54em;
|
||||
}
|
||||
|
||||
.config-plainlink a {
|
||||
background: none !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
#config-memcachewrapper {
|
||||
display: none;
|
||||
}
|
||||
.config-download-link {
|
||||
font-size: 1.8em;
|
||||
margin-left: 2em;
|
||||
}
|
||||
|
||||
#config-update-log {
|
||||
width: 75%;
|
||||
}
|
102
common/config.js
|
@ -1,102 +0,0 @@
|
|||
(function( $ ) {
|
||||
$( document ).ready( function() {
|
||||
|
||||
|
||||
// Set up the help system
|
||||
$( '.mw-help-field-data' )
|
||||
.hide()
|
||||
.closest( '.mw-help-field-container' )
|
||||
.find( '.mw-help-field-hint' )
|
||||
.show()
|
||||
.click( function() {
|
||||
$(this)
|
||||
.closest( '.mw-help-field-container' )
|
||||
.find( '.mw-help-field-data' )
|
||||
.slideToggle( 'fast' );
|
||||
} );
|
||||
|
||||
// Show/hide code for DB-specific options
|
||||
// FIXME: Do we want slow, fast, or even non-animated (instantaneous) showing/hiding here?
|
||||
$( '.dbRadio' ).each( function() { $( '#' + $(this).attr( 'rel' ) ).hide(); } );
|
||||
$( '#' + $( '.dbRadio:checked' ).attr( 'rel' ) ).show();
|
||||
$( '.dbRadio' ).click( function() {
|
||||
var $checked = $( '.dbRadio:checked' );
|
||||
var $wrapper = $( '#' + $checked.attr( 'rel' ) );
|
||||
if ( !$wrapper.is( ':visible' ) ) {
|
||||
$( '.dbWrapper' ).hide( 'slow' );
|
||||
$wrapper.show( 'slow' );
|
||||
}
|
||||
} );
|
||||
|
||||
// Scroll to the bottom of upgrade log
|
||||
$( "#config-update-log" ).each( function() { this.scrollTop = this.scrollHeight; } );
|
||||
|
||||
// Show/hide Creative Commons thingy
|
||||
$( '.licenseRadio' ).click( function() {
|
||||
var $wrapper = $( '#config-cc-wrapper' );
|
||||
if ( $( '#config__LicenseCode_cc-choose' ).is( ':checked' ) ) {
|
||||
$wrapper.show( 'slow' );
|
||||
} else {
|
||||
$wrapper.hide( 'slow' );
|
||||
}
|
||||
} );
|
||||
|
||||
// Show/hide random stuff (email, upload)
|
||||
$( '.showHideRadio' ).click( function() {
|
||||
var $wrapper = $( '#' + $(this).attr( 'rel' ) );
|
||||
if ( $(this).is( ':checked' ) ) {
|
||||
$wrapper.show( 'slow' );
|
||||
} else {
|
||||
$wrapper.hide( 'slow' );
|
||||
}
|
||||
} );
|
||||
$( '.hideShowRadio' ).click( function() {
|
||||
var $wrapper = $( '#' + $(this).attr( 'rel' ) );
|
||||
if ( $(this).is( ':checked' ) ) {
|
||||
$wrapper.hide( 'slow' );
|
||||
} else {
|
||||
$wrapper.show( 'slow' );
|
||||
}
|
||||
} );
|
||||
|
||||
// Hide "other" textboxes by default
|
||||
// Should not be done in CSS for javascript disabled compatibility
|
||||
$( '.enabledByOther' ).closest( '.config-block' ).hide();
|
||||
|
||||
// Enable/disable "other" textboxes
|
||||
$( '.enableForOther' ).click( function() {
|
||||
var $textbox = $( '#' + $(this).attr( 'rel' ) );
|
||||
if ( $(this).val() == 'other' ) { // FIXME: Ugh, this is ugly
|
||||
$textbox.removeAttr( 'readonly' ).closest( '.config-block' ).slideDown( 'fast' );
|
||||
} else {
|
||||
$textbox.attr( 'readonly', 'readonly' ).closest( '.config-block' ).slideUp( 'fast' );
|
||||
}
|
||||
} );
|
||||
|
||||
// Synchronize radio button label for sitename with textbox
|
||||
$label = $( 'label[for=config__NamespaceType_site-name]' );
|
||||
labelText = $label.text();
|
||||
$label.text( labelText.replace( '$1', '' ) );
|
||||
$( '#config_wgSitename' ).bind( 'keyup change', syncText ).each( syncText );
|
||||
function syncText() {
|
||||
var value = $(this).val()
|
||||
.replace( /[\[\]\{\}|#<>%+? ]/g, '_' )
|
||||
.replace( /&/, '&' )
|
||||
.replace( /__+/g, '_' )
|
||||
.replace( /^_+/, '' )
|
||||
.replace( /_+$/, '' );
|
||||
value = value.substr( 0, 1 ).toUpperCase() + value.substr( 1 );
|
||||
$label.text( labelText.replace( '$1', value ) );
|
||||
}
|
||||
|
||||
// Show/Hide memcached servers when needed
|
||||
$("input[name$='config_wgMainCacheType']").change( function() {
|
||||
var $memc = $( "#config-memcachewrapper" );
|
||||
if( $( "input[name$='config_wgMainCacheType']:checked" ).val() == 'memcached' ) {
|
||||
$memc.show( 'slow' );
|
||||
} else {
|
||||
$memc.hide( 'slow' );
|
||||
}
|
||||
} );
|
||||
} );
|
||||
})(jQuery);
|
|
@ -1,75 +0,0 @@
|
|||
/*
|
||||
** Diff rendering
|
||||
*/
|
||||
table.diff, td.diff-otitle, td.diff-ntitle {
|
||||
background-color: white;
|
||||
}
|
||||
td.diff-otitle,
|
||||
td.diff-ntitle {
|
||||
text-align: center;
|
||||
}
|
||||
td.diff-marker {
|
||||
text-align: right;
|
||||
}
|
||||
td.diff-lineno {
|
||||
font-weight: bold;
|
||||
}
|
||||
td.diff-addedline {
|
||||
background: #cfc;
|
||||
font-size: smaller;
|
||||
}
|
||||
td.diff-deletedline {
|
||||
background: #ffa;
|
||||
font-size: smaller;
|
||||
}
|
||||
td.diff-context {
|
||||
background: #eee;
|
||||
font-size: smaller;
|
||||
}
|
||||
.diffchange {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
white-space: pre-wrap;
|
||||
white-space: -moz-pre-wrap;
|
||||
}
|
||||
|
||||
table.diff {
|
||||
border: none;
|
||||
width: 98%;
|
||||
border-spacing: 4px;
|
||||
|
||||
/* Fixed layout is required to ensure that cells containing long URLs
|
||||
don't widen in Safari, Internet Explorer, or iCab */
|
||||
table-layout: fixed;
|
||||
}
|
||||
table.diff td {
|
||||
padding: 0;
|
||||
}
|
||||
table.diff col.diff-marker {
|
||||
width: 2%;
|
||||
}
|
||||
table.diff col.diff-content {
|
||||
width: 48%;
|
||||
}
|
||||
table.diff td div {
|
||||
/* Force-wrap very long lines such as URLs or page-widening char strings.
|
||||
CSS 3 only (In Gecko 1.9.1 / Firefox 3.5):
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=99457
|
||||
https://developer.mozilla.org/web-tech/2008/08/20/word-wrap-break-word/
|
||||
https://developer.mozilla.org/En/CSS/Word-wrap */
|
||||
word-wrap: break-word;
|
||||
|
||||
/* As fallback, scrollbars will be added for very wide cells
|
||||
instead of text overflowing or widening */
|
||||
overflow: auto;
|
||||
|
||||
/* The above rule breaks on very old versions of Mozilla due
|
||||
to a bug which collapses the table cells to a single line.
|
||||
|
||||
In Mozilla 1.1 and below with JavaScript enabled, the rule
|
||||
will be overridden with this by diff.js; wide cell contents
|
||||
then spill horizontally without widening the rest of the
|
||||
table: */
|
||||
/* overflow: visible; */
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
/*
|
||||
Workaround for overflow bug in Mozilla 1.1 and earlier, where scrolling
|
||||
<div>s in <td> cells collapse their height to a single line.
|
||||
|
||||
Known to be fixed in 1.2.1 (Gecko 20021130), but the CSS hacks I've tried
|
||||
with overflow-x disable the scrolling all the way until Mozilla 1.8 / FF 1.5
|
||||
and break Opera as well.
|
||||
|
||||
So... we check for reaaaally old Gecko and hack in an alternate rule to let
|
||||
the wide cells spill instead of scrolling them. Not ideal as it won't work
|
||||
if JS is disabled, of course.
|
||||
*/
|
||||
|
||||
if (navigator && navigator.product == "Gecko" && navigator.productSub < "20021130") {
|
||||
var sheets = document.styleSheets;
|
||||
var lastSheet = sheets[sheets.length-1];
|
||||
lastSheet.insertRule(
|
||||
"table.diff td div { overflow: visible; }",
|
||||
lastSheet.cssRules.length);
|
||||
}
|
231
common/edit.js
|
@ -1,231 +0,0 @@
|
|||
window.currentFocused = undefined;
|
||||
|
||||
// this function adds a toolbar button to the mwEditButtons list
|
||||
window.addButton = function( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) {
|
||||
// Don't generate buttons for browsers which don't fully
|
||||
// support it.
|
||||
mwEditButtons.push({
|
||||
'imageId': imageId,
|
||||
'imageFile': imageFile,
|
||||
'speedTip': speedTip,
|
||||
'tagOpen': tagOpen,
|
||||
'tagClose': tagClose,
|
||||
'sampleText': sampleText
|
||||
});
|
||||
};
|
||||
|
||||
// this function adds one toolbar button from a mwEditButtons/mwCustomEditButtons item
|
||||
window.mwInsertEditButton = function( parent, item ) {
|
||||
var image = document.createElement( 'img' );
|
||||
image.width = 23;
|
||||
image.height = 22;
|
||||
image.className = 'mw-toolbar-editbutton';
|
||||
if ( item.imageId ) {
|
||||
image.id = item.imageId;
|
||||
}
|
||||
image.src = item.imageFile;
|
||||
image.border = 0;
|
||||
image.alt = item.speedTip;
|
||||
image.title = item.speedTip;
|
||||
image.style.cursor = 'pointer';
|
||||
image.onclick = function() {
|
||||
insertTags( item.tagOpen, item.tagClose, item.sampleText );
|
||||
// click tracking
|
||||
if ( ( typeof $ != 'undefined' ) && ( typeof $.trackAction != 'undefined' ) ) {
|
||||
$.trackAction( 'oldedit.' + item.speedTip.replace(/ /g, "-") );
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
parent.appendChild( image );
|
||||
return true;
|
||||
};
|
||||
|
||||
// this function generates the actual toolbar buttons with localized text
|
||||
// we use it to avoid creating the toolbar where javascript is not enabled
|
||||
window.mwSetupToolbar = function() {
|
||||
var toolbar = document.getElementById( 'toolbar' );
|
||||
if ( !toolbar ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Don't generate buttons for browsers which don't fully
|
||||
// support it.
|
||||
// but don't assume wpTextbox1 is always here
|
||||
var textboxes = document.getElementsByTagName( 'textarea' );
|
||||
if ( !textboxes.length ) {
|
||||
// No toolbar if we can't find any textarea
|
||||
return false;
|
||||
}
|
||||
// Only check for selection capability if the textarea is visible - errors will occur otherwise - just because
|
||||
// the textarea is not visible, doesn't mean we shouldn't build out the toolbar though - it might have been replaced
|
||||
// with some other kind of control
|
||||
if ( textboxes[0].style.display != 'none' ) {
|
||||
if ( !( document.selection && document.selection.createRange )
|
||||
&& textboxes[0].selectionStart === null ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
for ( var i = 0; i < mwEditButtons.length; i++ ) {
|
||||
mwInsertEditButton( toolbar, mwEditButtons[i] );
|
||||
}
|
||||
for ( var i = 0; i < mwCustomEditButtons.length; i++ ) {
|
||||
mwInsertEditButton( toolbar, mwCustomEditButtons[i] );
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
// apply tagOpen/tagClose to selection in textarea,
|
||||
// use sampleText instead of selection if there is none
|
||||
window.insertTags = function( tagOpen, tagClose, sampleText ) {
|
||||
if ( typeof $ != 'undefined' && typeof $.fn.textSelection != 'undefined' && currentFocused &&
|
||||
( currentFocused.nodeName.toLowerCase() == 'iframe' || currentFocused.id == 'wpTextbox1' ) ) {
|
||||
$( '#wpTextbox1' ).textSelection(
|
||||
'encapsulateSelection', { 'pre': tagOpen, 'peri': sampleText, 'post': tagClose }
|
||||
);
|
||||
return;
|
||||
}
|
||||
var txtarea;
|
||||
if ( document.editform ) {
|
||||
txtarea = currentFocused;
|
||||
} else {
|
||||
// some alternate form? take the first one we can find
|
||||
var areas = document.getElementsByTagName( 'textarea' );
|
||||
txtarea = areas[0];
|
||||
}
|
||||
var selText, isSample = false;
|
||||
|
||||
if ( document.selection && document.selection.createRange ) { // IE/Opera
|
||||
// save window scroll position
|
||||
if ( document.documentElement && document.documentElement.scrollTop ) {
|
||||
var winScroll = document.documentElement.scrollTop
|
||||
} else if ( document.body ) {
|
||||
var winScroll = document.body.scrollTop;
|
||||
}
|
||||
// get current selection
|
||||
txtarea.focus();
|
||||
var range = document.selection.createRange();
|
||||
selText = range.text;
|
||||
// insert tags
|
||||
checkSelectedText();
|
||||
range.text = tagOpen + selText + tagClose;
|
||||
// mark sample text as selected
|
||||
if ( isSample && range.moveStart ) {
|
||||
if ( window.opera ) {
|
||||
tagClose = tagClose.replace(/\n/g,'');
|
||||
}
|
||||
range.moveStart('character', - tagClose.length - selText.length);
|
||||
range.moveEnd('character', - tagClose.length);
|
||||
}
|
||||
range.select();
|
||||
// restore window scroll position
|
||||
if ( document.documentElement && document.documentElement.scrollTop ) {
|
||||
document.documentElement.scrollTop = winScroll;
|
||||
} else if ( document.body ) {
|
||||
document.body.scrollTop = winScroll;
|
||||
}
|
||||
|
||||
} else if ( txtarea.selectionStart || txtarea.selectionStart == '0' ) { // Mozilla
|
||||
// save textarea scroll position
|
||||
var textScroll = txtarea.scrollTop;
|
||||
// get current selection
|
||||
txtarea.focus();
|
||||
var startPos = txtarea.selectionStart;
|
||||
var endPos = txtarea.selectionEnd;
|
||||
selText = txtarea.value.substring( startPos, endPos );
|
||||
// insert tags
|
||||
checkSelectedText();
|
||||
txtarea.value = txtarea.value.substring(0, startPos)
|
||||
+ tagOpen + selText + tagClose
|
||||
+ txtarea.value.substring(endPos, txtarea.value.length);
|
||||
// set new selection
|
||||
if ( isSample ) {
|
||||
txtarea.selectionStart = startPos + tagOpen.length;
|
||||
txtarea.selectionEnd = startPos + tagOpen.length + selText.length;
|
||||
} else {
|
||||
txtarea.selectionStart = startPos + tagOpen.length + selText.length + tagClose.length;
|
||||
txtarea.selectionEnd = txtarea.selectionStart;
|
||||
}
|
||||
// restore textarea scroll position
|
||||
txtarea.scrollTop = textScroll;
|
||||
}
|
||||
|
||||
function checkSelectedText() {
|
||||
if ( !selText ) {
|
||||
selText = sampleText;
|
||||
isSample = true;
|
||||
} else if ( selText.charAt(selText.length - 1) == ' ' ) { // exclude ending space char
|
||||
selText = selText.substring(0, selText.length - 1);
|
||||
tagClose += ' ';
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Restore the edit box scroll state following a preview operation,
|
||||
* and set up a form submission handler to remember this state
|
||||
*/
|
||||
window.scrollEditBox = function() {
|
||||
var editBox = document.getElementById( 'wpTextbox1' );
|
||||
var scrollTop = document.getElementById( 'wpScrolltop' );
|
||||
var editForm = document.getElementById( 'editform' );
|
||||
if( editForm && editBox && scrollTop ) {
|
||||
if( scrollTop.value ) {
|
||||
editBox.scrollTop = scrollTop.value;
|
||||
}
|
||||
addHandler( editForm, 'submit', function() {
|
||||
scrollTop.value = editBox.scrollTop;
|
||||
} );
|
||||
}
|
||||
};
|
||||
hookEvent( 'load', scrollEditBox );
|
||||
hookEvent( 'load', mwSetupToolbar );
|
||||
hookEvent( 'load', function() {
|
||||
currentFocused = document.getElementById( 'wpTextbox1' );
|
||||
// http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html
|
||||
// focus does not bubble normally, but using a trick we can do event delegation
|
||||
// on the focus event on all text inputs to make the toolbox usable on all of them
|
||||
var editForm = document.getElementById( 'editform' );
|
||||
if ( !editForm ) {
|
||||
return;
|
||||
}
|
||||
function onfocus( e ) {
|
||||
var elm = e.target || e.srcElement;
|
||||
if ( !elm ) {
|
||||
return;
|
||||
}
|
||||
var tagName = elm.tagName.toLowerCase();
|
||||
var type = elm.type || '';
|
||||
if ( tagName !== 'textarea' && tagName !== 'input' ) {
|
||||
return;
|
||||
}
|
||||
if ( tagName === 'input' && type.toLowerCase() !== 'text' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
currentFocused = elm;
|
||||
}
|
||||
|
||||
if ( editForm.addEventListener ) {
|
||||
// Gecko, WebKit, Opera, etc... (all standards compliant browsers)
|
||||
editForm.addEventListener( 'focus', onfocus, true ); // This MUST be true to work
|
||||
} else if ( editForm.attachEvent ) {
|
||||
// IE needs a specific trick here since it doesn't support the standard
|
||||
editForm.attachEvent( 'onfocusin', function() { onfocus( event ); } );
|
||||
}
|
||||
|
||||
// HACK: make currentFocused work with the usability iframe
|
||||
// With proper focus detection support (HTML 5!) this'll be much cleaner
|
||||
if ( typeof $ != 'undefined' ) {
|
||||
var iframe = $( '.wikiEditor-ui-text iframe' );
|
||||
if ( iframe.length > 0 ) {
|
||||
$( iframe.get( 0 ).contentWindow.document )
|
||||
.add( iframe.get( 0 ).contentWindow.document.body ) // for IE
|
||||
.focus( function() { currentFocused = iframe.get( 0 ); } );
|
||||
}
|
||||
}
|
||||
|
||||
editForm
|
||||
} );
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
/*
|
||||
JavaScript file for enhanced recentchanges
|
||||
*/
|
||||
|
||||
/*
|
||||
* Add the CSS to hide parts that should be collapsed
|
||||
*
|
||||
* We do this with JS so everything will be expanded by default
|
||||
* if JS is disabled
|
||||
*/
|
||||
appendCSS('.mw-changeslist-hidden {'+
|
||||
' display:none;'+
|
||||
'}'+
|
||||
'div.mw-changeslist-expanded {'+
|
||||
' display:block;'+
|
||||
'}'+
|
||||
'span.mw-changeslist-expanded {'+
|
||||
' display:inline !important;'+
|
||||
' visibility:visible !important;'+
|
||||
'}'
|
||||
);
|
||||
|
||||
/*
|
||||
* Switch an RC line between hidden/shown
|
||||
* @param int idNumber : the id number of the RC group
|
||||
*/
|
||||
window.toggleVisibility = function(idNumber) {
|
||||
var openarrow = document.getElementById("mw-rc-openarrow-"+idNumber);
|
||||
var closearrow = document.getElementById("mw-rc-closearrow-"+idNumber);
|
||||
var subentries = document.getElementById("mw-rc-subentries-"+idNumber);
|
||||
if (openarrow.className == 'mw-changeslist-expanded') {
|
||||
openarrow.className = 'mw-changeslist-hidden';
|
||||
closearrow.className = 'mw-changeslist-expanded';
|
||||
subentries.className = 'mw-changeslist-expanded';
|
||||
} else {
|
||||
openarrow.className = 'mw-changeslist-expanded';
|
||||
closearrow.className = 'mw-changeslist-hidden';
|
||||
subentries.className = 'mw-changeslist-hidden';
|
||||
}
|
||||
};
|
|
@ -1,95 +0,0 @@
|
|||
/*
|
||||
Make RSS and Atom feeds at least semi-legible to folk who accidentally
|
||||
load them in a browser...
|
||||
|
||||
Compatibility:
|
||||
* Mozilla is fine.
|
||||
* Safari 1.2: the RSS <link> text isn't shown
|
||||
* Opera 7.5 uses the style sheet instead of its native RSS mode.
|
||||
* IE/Mac 5.2: none of the :before content works; doesn't get the charset right and displays garbage for non-ASCII.
|
||||
* IE/Win 6.0: No background color, borders, font size, font weight, or :before content.
|
||||
|
||||
*/
|
||||
|
||||
/* RSS: */ rss, channel, title, link, description, language, generator, lastBuildDate, item, pubDate, author, comments, creator,
|
||||
/* Atom: */ feed, id, modified, tagline, entry, issued, created, updated, summary, comment {
|
||||
display: block;
|
||||
}
|
||||
|
||||
rss, feed {
|
||||
background: white;
|
||||
color: black;
|
||||
margin: 1em;
|
||||
font-family: "Verdana", "Tahoma", "Arial", "Helvetica", sans-serif;
|
||||
line-height: 1.5em;
|
||||
font-size: 76%;
|
||||
}
|
||||
|
||||
rss:before {
|
||||
content: "This RSS feed is meant to be read in a syndicated news reader, and isn't ideal for a web browser.";
|
||||
}
|
||||
|
||||
feed:before {
|
||||
content: "This Atom feed is meant to be read in a syndicated news reader, and isn't ideal for a web browser.";
|
||||
}
|
||||
rss:before, feed:before {
|
||||
color: red;
|
||||
text-align: center;
|
||||
line-height: 2em;
|
||||
}
|
||||
|
||||
channel>title,
|
||||
item>title,
|
||||
feed>title,
|
||||
entry>title {
|
||||
font-weight: bold;
|
||||
border-bottom: solid 1px #aaa;
|
||||
margin-left: -0.5em;
|
||||
}
|
||||
channel>title, feed>title {
|
||||
font-size: larger;
|
||||
}
|
||||
item>title, entry>title {
|
||||
font-size: large;
|
||||
}
|
||||
item, entry {
|
||||
margin-top: 1em;
|
||||
margin-left: 2em;
|
||||
}
|
||||
|
||||
item>description, entry>summary {
|
||||
white-space: pre;
|
||||
overflow: auto;
|
||||
background: #f8f8ff;
|
||||
}
|
||||
|
||||
pubDate:before { content: "Date: " }
|
||||
link:before { content: "Link: " }
|
||||
author:before, creator:before { content: "Author: " }
|
||||
description:before { content: "Description: " }
|
||||
id:before { content: "Id: " }
|
||||
|
||||
generator:before { content: "Generator: " }
|
||||
language:before { content: "Language: " }
|
||||
lastBuildDate:before { content: "Updated: " }
|
||||
comments:before { content: "Comments page: " }
|
||||
|
||||
tagline:before { content: "Tagline: " }
|
||||
issued:before { content: "Issued: " }
|
||||
created:before { content: "Created: " }
|
||||
modified:before { content: "Modified: " }
|
||||
updated:before { content: "Updated: " }
|
||||
summary:before { content: "Summary: " }
|
||||
comment:before { content: "Comment: " }
|
||||
|
||||
pubDate:before, link:before, author:before, description:before,
|
||||
language:before, generator:before, lastBuildDate:before, comments:before,
|
||||
tagline:before, issued:before, created:before, modified:before,
|
||||
summary:before, comment:before, creator:before, id:before, updated:before {
|
||||
color: #224;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
feed link:after {
|
||||
content: attr(href);
|
||||
}
|
Двоичные данные
common/help.png
До Ширина: | Высота: | Размер: 786 B |
|
@ -1,77 +0,0 @@
|
|||
window.historyRadios = function(parent) {
|
||||
var inputs = parent.getElementsByTagName('input');
|
||||
var radios = [];
|
||||
for (var i = 0; i < inputs.length; i++) {
|
||||
if (inputs[i].name == "diff" || inputs[i].name == "oldid") {
|
||||
radios[radios.length] = inputs[i];
|
||||
}
|
||||
}
|
||||
return radios;
|
||||
};
|
||||
|
||||
// check selection and tweak visibility/class onclick
|
||||
window.diffcheck = function() {
|
||||
var dli = false; // the li where the diff radio is checked
|
||||
var oli = false; // the li where the oldid radio is checked
|
||||
var hf = document.getElementById('pagehistory');
|
||||
if (!hf) {
|
||||
return true;
|
||||
}
|
||||
var lis = hf.getElementsByTagName('li');
|
||||
for (var i=0;i<lis.length;i++) {
|
||||
var inputs = historyRadios(lis[i]);
|
||||
if (inputs[1] && inputs[0]) {
|
||||
if (inputs[1].checked || inputs[0].checked) { // this row has a checked radio button
|
||||
if (inputs[1].checked && inputs[0].checked && inputs[0].value == inputs[1].value) {
|
||||
return false;
|
||||
}
|
||||
if (oli) { // it's the second checked radio
|
||||
if (inputs[1].checked) {
|
||||
if ( (typeof oli.className) != 'undefined') {
|
||||
oli.classNameOriginal = oli.className.replace( 'selected', '' );
|
||||
} else {
|
||||
oli.classNameOriginal = '';
|
||||
}
|
||||
|
||||
oli.className = "selected "+oli.classNameOriginal;
|
||||
return false;
|
||||
}
|
||||
} else if (inputs[0].checked) {
|
||||
return false;
|
||||
}
|
||||
if (inputs[0].checked) {
|
||||
dli = lis[i];
|
||||
}
|
||||
if (!oli) {
|
||||
inputs[0].style.visibility = 'hidden';
|
||||
}
|
||||
if (dli) {
|
||||
inputs[1].style.visibility = 'hidden';
|
||||
}
|
||||
if ( (typeof lis[i].className) != 'undefined') {
|
||||
lis[i].classNameOriginal = lis[i].className.replace( 'selected', '' );
|
||||
} else {
|
||||
lis[i].classNameOriginal = '';
|
||||
}
|
||||
|
||||
lis[i].className = "selected "+lis[i].classNameOriginal;
|
||||
oli = lis[i];
|
||||
} else { // no radio is checked in this row
|
||||
if (!oli) {
|
||||
inputs[0].style.visibility = 'hidden';
|
||||
} else {
|
||||
inputs[0].style.visibility = 'visible';
|
||||
}
|
||||
if (dli) {
|
||||
inputs[1].style.visibility = 'hidden';
|
||||
} else {
|
||||
inputs[1].style.visibility = 'visible';
|
||||
}
|
||||
if ( typeof lis[i].classNameOriginal != 'undefined' ) {
|
||||
lis[i].className = lis[i].classNameOriginal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
|
@ -1,40 +0,0 @@
|
|||
// Find select-or-other fields.
|
||||
addOnloadHook( function() {
|
||||
var fields = getElementsByClassName( document, 'select', 'mw-htmlform-select-or-other' );
|
||||
|
||||
for( var i = 0; i < fields.length; i++ ) {
|
||||
var select = fields[i];
|
||||
|
||||
addHandler( select, 'change', htmlforms.selectOrOtherSelectChanged );
|
||||
|
||||
// Use a fake 'e' to update it.
|
||||
htmlforms.selectOrOtherSelectChanged( { 'target': select } );
|
||||
}
|
||||
} );
|
||||
|
||||
window.htmlforms = {
|
||||
'selectOrOtherSelectChanged' : function( e ) {
|
||||
var select;
|
||||
if ( !e ) {
|
||||
e = window.event;
|
||||
}
|
||||
if ( e.target ) {
|
||||
select = e.target;
|
||||
} else if ( e.srcElement ) {
|
||||
select = e.srcElement;
|
||||
}
|
||||
if ( select.nodeType == 3 ) { // defeat Safari bug
|
||||
select = select.parentNode;
|
||||
}
|
||||
|
||||
var id = select.id;
|
||||
var textbox = document.getElementById( id + '-other' );
|
||||
|
||||
if ( select.value == 'other' ) {
|
||||
textbox.disabled = false;
|
||||
} else {
|
||||
textbox.disabled = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Двоичные данные
common/images/Arr_.png
До Ширина: | Высота: | Размер: 246 B |
Двоичные данные
common/images/Arr_d.png
До Ширина: | Высота: | Размер: 205 B |
Двоичные данные
common/images/Arr_l.png
До Ширина: | Высота: | Размер: 257 B |
Двоичные данные
common/images/Arr_r.png
До Ширина: | Высота: | Размер: 206 B |
Двоичные данные
common/images/Arr_u.png
До Ширина: | Высота: | Размер: 423 B |
Двоичные данные
common/images/Checker-16x16.png
До Ширина: | Высота: | Размер: 81 B |
Двоичные данные
common/images/Zoom_sans.gif
До Ширина: | Высота: | Размер: 901 B |
Двоичные данные
common/images/add.png
До Ширина: | Высота: | Размер: 3.1 KiB |
Двоичные данные
common/images/ajax-loader.gif
До Ширина: | Высота: | Размер: 3.1 KiB |
Двоичные данные
common/images/ar/button_bold.png
До Ширина: | Высота: | Размер: 626 B |
Двоичные данные
common/images/ar/button_headline.png
До Ширина: | Высота: | Размер: 560 B |
Двоичные данные
common/images/ar/button_italic.png
До Ширина: | Высота: | Размер: 605 B |
Двоичные данные
common/images/ar/button_link.png
До Ширина: | Высота: | Размер: 643 B |
Двоичные данные
common/images/ar/button_nowiki.png
До Ширина: | Высота: | Размер: 963 B |
Двоичные данные
common/images/arrow_disabled_first_25.png
До Ширина: | Высота: | Размер: 369 B |
Двоичные данные
common/images/arrow_disabled_last_25.png
До Ширина: | Высота: | Размер: 374 B |
Двоичные данные
common/images/arrow_disabled_left_25.png
До Ширина: | Высота: | Размер: 352 B |
Двоичные данные
common/images/arrow_disabled_right_25.png
До Ширина: | Высота: | Размер: 358 B |
Двоичные данные
common/images/arrow_first_25.png
До Ширина: | Высота: | Размер: 405 B |
Двоичные данные
common/images/arrow_last_25.png
До Ширина: | Высота: | Размер: 395 B |
Двоичные данные
common/images/arrow_left_25.png
До Ширина: | Высота: | Размер: 383 B |
Двоичные данные
common/images/arrow_right_25.png
До Ширина: | Высота: | Размер: 394 B |
Двоичные данные
common/images/be-tarask/button_bold.png
До Ширина: | Высота: | Размер: 554 B |
Двоичные данные
common/images/be-tarask/button_italic.png
До Ширина: | Высота: | Размер: 580 B |
Двоичные данные
common/images/be-tarask/button_link.png
До Ширина: | Высота: | Размер: 459 B |
Двоичные данные
common/images/bullet.gif
До Ширина: | Высота: | Размер: 50 B |
Двоичные данные
common/images/button_bold.png
До Ширина: | Высота: | Размер: 271 B |
Двоичные данные
common/images/button_extlink.png
До Ширина: | Высота: | Размер: 456 B |
Двоичные данные
common/images/button_headline.png
До Ширина: | Высота: | Размер: 461 B |
Двоичные данные
common/images/button_hr.png
До Ширина: | Высота: | Размер: 247 B |
Двоичные данные
common/images/button_image.png
До Ширина: | Высота: | Размер: 504 B |
Двоичные данные
common/images/button_italic.png
До Ширина: | Высота: | Размер: 271 B |
Двоичные данные
common/images/button_link.png
До Ширина: | Высота: | Размер: 301 B |
Двоичные данные
common/images/button_math.png
До Ширина: | Высота: | Размер: 617 B |
Двоичные данные
common/images/button_media.png
До Ширина: | Высота: | Размер: 749 B |
Двоичные данные
common/images/button_nowiki.png
До Ширина: | Высота: | Размер: 342 B |
Двоичные данные
common/images/button_sig.png
До Ширина: | Высота: | Размер: 949 B |
Двоичные данные
common/images/button_template.png
До Ширина: | Высота: | Размер: 210 B |
Двоичные данные
common/images/cc-0.png
До Ширина: | Высота: | Размер: 1.1 KiB |
Двоичные данные
common/images/cc-by-nc-sa.png
До Ширина: | Высота: | Размер: 4.2 KiB |
Двоичные данные
common/images/cc-by-sa.png
До Ширина: | Высота: | Размер: 4.0 KiB |
Двоичные данные
common/images/closewindow.png
До Ширина: | Высота: | Размер: 148 B |
Двоичные данные
common/images/critical-32.png
До Ширина: | Высота: | Размер: 2.3 KiB |
|
@ -1,17 +0,0 @@
|
|||
button_bold.png
|
||||
---------------
|
||||
Source : http://commons.wikimedia.org/wiki/Image:Button_bold_ukr.png
|
||||
License: Public domain
|
||||
Author : Alexey Belomoev
|
||||
|
||||
button_italic.png
|
||||
------------------------
|
||||
Source : http://commons.wikimedia.org/wiki/Image:Button_italic_ukr.png
|
||||
License: Public domain
|
||||
Author : Alexey Belomoev
|
||||
|
||||
button_link.png
|
||||
-----------------
|
||||
Source : http://commons.wikimedia.org/wiki/Image:Button_internal_link_ukr.png
|
||||
License: GPL
|
||||
Author : Saproj, Erik Möller
|
Двоичные данные
common/images/cyrl/button_bold.png
До Ширина: | Высота: | Размер: 275 B |
Двоичные данные
common/images/cyrl/button_italic.png
До Ширина: | Высота: | Размер: 457 B |
Двоичные данные
common/images/cyrl/button_link.png
До Ширина: | Высота: | Размер: 347 B |
Двоичные данные
common/images/de/button_bold.png
До Ширина: | Высота: | Размер: 308 B |
Двоичные данные
common/images/de/button_italic.png
До Ширина: | Высота: | Размер: 313 B |
Двоичные данные
common/images/diffunderline.gif
До Ширина: | Высота: | Размер: 52 B |
Двоичные данные
common/images/download-32.png
До Ширина: | Высота: | Размер: 2.0 KiB |
Двоичные данные
common/images/fa/button_bold.png
До Ширина: | Высота: | Размер: 496 B |
Двоичные данные
common/images/fa/button_headline.png
До Ширина: | Высота: | Размер: 429 B |
Двоичные данные
common/images/fa/button_italic.png
До Ширина: | Высота: | Размер: 563 B |
Двоичные данные
common/images/fa/button_link.png
До Ширина: | Высота: | Размер: 522 B |
Двоичные данные
common/images/fa/button_nowiki.png
До Ширина: | Высота: | Размер: 963 B |
Двоичные данные
common/images/feed-icon.png
До Ширина: | Высота: | Размер: 557 B |
Двоичные данные
common/images/gnu-fdl.png
До Ширина: | Высота: | Размер: 1.6 KiB |