Merge pull request #1 from hexmode/master

My work on the skin
This commit is contained in:
superawesome 2012-04-20 16:29:12 -07:00
Родитель 0f33c75324 f78e422514
Коммит 0f14b9700e
339 изменённых файлов: 398 добавлений и 20959 удалений

Просмотреть файл

@ -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' );

Просмотреть файл

@ -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' );
}
}

Просмотреть файл

@ -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' );

Просмотреть файл

@ -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) { ?>&nbsp;
<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>&nbsp;
<?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');

Просмотреть файл

@ -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) { ?>&nbsp;
<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>&nbsp;
<?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' );

Просмотреть файл

@ -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;
}

Просмотреть файл

@ -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' );

Просмотреть файл

@ -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;
}
}

Просмотреть файл

@ -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');

Просмотреть файл

@ -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&section=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;}*/

Просмотреть файл

@ -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 $@

Просмотреть файл

@ -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
common/allsyntax.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -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%;
}

Просмотреть файл

@ -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( /&/, '&amp;' )
.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);
}

Просмотреть файл

@ -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

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше