<?php
-
-include_once( "Feed.php" );
-
# See skin.doc
+require_once( 'Feed.php' ); // should not be called if the actual page isn't feed enabled
+require_once( 'Image.php' );
+
# These are the INTERNAL names, which get mapped
# directly to class names. For display purposes, the
# Language class has internationalized names
#
/* private */ $wgValidSkinNames = array(
- 'standard' => "Standard",
- 'nostalgia' => "Nostalgia",
- 'cologneblue' => "CologneBlue"
+ 'standard' => 'Standard',
+ 'nostalgia' => 'Nostalgia',
+ 'cologneblue' => 'CologneBlue'
);
-if( $wgUseSmarty ) {
- $wgValidSkinNames['smarty'] = "Smarty";
- $wgValidSkinNames['montparnasse'] = "Montparnasse";
-}
if( $wgUsePHPTal ) {
- #$wgValidSkinNames[] = "PHPTal";
- #$wgValidSkinNames['davinci'] = "DaVinci";
- #$wgValidSkinNames['mono'] = "Mono";
- $wgValidSkinNames['monobook'] = "MonoBook";
- #$wgValidSkinNames['monobookminimal'] = "MonoBookMinimal";
+ #$wgValidSkinNames[] = 'PHPTal';
+ #$wgValidSkinNames['davinci'] = 'DaVinci';
+ #$wgValidSkinNames['mono'] = 'Mono';
+ $wgValidSkinNames['monobook'] = 'MonoBook';
+ $wgValidSkinNames['myskin'] = 'MySkin';
+ #$wgValidSkinNames['monobookminimal'] = 'MonoBookMinimal';
}
-include_once( "RecentChange.php" );
-
-# For some odd PHP bug, this function can't be part of a class
-function getCategories ()
-{
- global $wgOut , $wgTitle , $wgUseCategoryMagic , $wgUser , $wgParser ;
- if ( !isset ( $wgUseCategoryMagic ) || !$wgUseCategoryMagic ) return "" ;
- if ( count ( $wgOut->mCategoryLinks ) == 0 ) return "" ;
- if ( !$wgOut->isArticle() ) return "" ;
- $sk = $wgUser->getSkin() ;
- $s = "" ;
- $s .= "\n<br />\n";
- $s .= $sk->makeKnownLink ( "Special:Categories" , "Categories" , "article=".$wgTitle->getDBkey() ) ;
- $t = implode ( " | " , $wgOut->mCategoryLinks ) ;
- if ( $t != "" ) $s .= " : " ;
- $s .= $t ;
- return $s ;
-}
+require_once( 'RecentChange.php' );
class RCCacheEntry extends RecentChange
{
function Skin()
{
- $this->linktrail = wfMsg("linktrail");
+ $this->linktrail = wfMsg('linktrail');
}
function getSkinNames()
function getStylesheet()
{
- return "wikistandard.css";
+ return 'wikistandard.css';
+ }
+ function getSkinName() {
+ return "standard";
}
function qbSetting()
global $wgOut, $wgUser;
if ( $wgOut->isQuickbarSuppressed() ) { return 0; }
- $q = $wgUser->getOption( "quickbar" );
- if ( "" == $q ) { $q = 0; }
+ $q = $wgUser->getOption( 'quickbar' );
+ if ( '' == $q ) { $q = 0; }
return $q;
}
function initPage( &$out )
{
- global $wgStyleSheetPath;
- $fname = "Skin::initPage";
+ $fname = 'Skin::initPage';
wfProfileIn( $fname );
- $out->addLink( "shortcut icon", "", "/favicon.ico" );
+ $out->addLink( array( 'rel' => 'shortcut icon', 'href' => '/favicon.ico' ) );
+ $this->addMetadataLinks($out);
+
wfProfileOut( $fname );
}
+ function addMetadataLinks( &$out ) {
+ global $wgTitle, $wgEnableDublinCoreRdf, $wgEnableCreativeCommonsRdf, $wgRdfMimeType, $action;
+ global $wgRightsPage, $wgRightsUrl;
+
+ if( $out->isArticleRelated() ) {
+ # note: buggy CC software only reads first "meta" link
+ if( $wgEnableCreativeCommonsRdf ) {
+ $out->addMetadataLink( array(
+ 'title' => 'Creative Commons',
+ 'type' => 'application/rdf+xml',
+ 'href' => $wgTitle->getLocalURL( 'action=creativecommons') ) );
+ }
+ if( $wgEnableDublinCoreRdf ) {
+ $out->addMetadataLink( array(
+ 'title' => 'Dublin Core',
+ 'type' => 'application/rdf+xml',
+ 'href' => $wgTitle->getLocalURL( 'action=dublincore' ) ) );
+ }
+ }
+ $copyright = '';
+ if( $wgRightsPage ) {
+ $copy = Title::newFromText( $wgRightsPage );
+ if( $copy ) {
+ $copyright = $copy->getLocalURL();
+ }
+ }
+ if( !$copyright && $wgRightsUrl ) {
+ $copyright = $wgRightsUrl;
+ }
+ if( $copyright ) {
+ $out->addLink( array(
+ 'rel' => 'copyright',
+ 'href' => $copyright ) );
+ }
+ }
+
function outputPage( &$out ) {
global $wgDebugComments;
- wfProfileIn( "Skin::outputPage" );
+ wfProfileIn( 'Skin::outputPage' );
$this->initPage( $out );
$out->out( $out->headElement() );
}
function getHeadScripts() {
- global $wgStyleSheetPath;
- $r = "<script type=\"text/javascript\" src=\"{$wgStyleSheetPath}/wikibits.js\"></script>\n";
+ global $wgStylePath, $wgUser, $wgLang;
+ $r = "<script type=\"text/javascript\" src=\"{$wgStylePath}/wikibits.js\"></script>\n";
+ if( $wgUser->getID() != 0 ) { # logged in
+ $userpage = $wgLang->getNsText( Namespace::getUser() ) . ":" . $wgUser->getName();
+ $userjs = htmlspecialchars($this->makeUrl($userpage.'/'.$this->getSkinName().'.js', 'action=raw&ctype=text/javascript'));
+ $r .= '<script type="text/javascript" src="'.$userjs."\"></script>\n";
+ }
return $r;
}
+ # get the user/site-specific stylesheet, SkinPHPTal called from RawPage.php (settings are cached that way)
+ function getUserStylesheet() {
+ global $wgOut, $wgStylePath, $wgLang, $wgUser, $wgRequest, $wgTitle;
+ $sheet = $this->getStylesheet();
+ $action = $wgRequest->getText('action');
+ $s = "@import \"$wgStylePath/$sheet\";\n";
+ if($wgLang->isRTL()) $s .= "@import \"$wgStylePath/common_rtl.css\";\n";
+ if( $wgUser->getID() != 0 ) { # logged in
+ if($wgTitle->isCssSubpage() and $action == 'submit' and $wgTitle->userCanEditCssJsSubpage()) {
+ $s .= $wgRequest->getText('wpTextbox1');
+ } else {
+ $userpage = $wgLang->getNsText( Namespace::getUser() ) . ":" . $wgUser->getName();
+ $s.= '@import "'.$this->makeUrl($userpage.'/'.$this->getSkinName().'.css', 'action=raw&ctype=text/css').'";'."\n";
+ }
+ }
+ $s .= $this->doGetUserStyles();
+ return $s."\n";
+ }
+ # placeholder, returns generated js in monobook
+ function getUserJs() {
+ return;
+ }
+
function getUserStyles()
{
- global $wgOut, $wgStyleSheetPath;
- $sheet = $this->getStylesheet();
+ global $wgOut, $wgStylePath, $wgLang;
$s = "<style type='text/css'>\n";
$s .= "/*/*/\n"; # <-- Hide the styles from Netscape 4 without hiding them from IE/Mac
- $s .= "@import url(\"$wgStyleSheetPath/$sheet\");\n";
- $s .= $this->doGetUserStyles();
+ $s .= $this->getUserStylesheet();
$s .= "/* */\n";
$s .= "</style>\n";
return $s;
{
global $wgUser;
- $s = "";
- if ( 1 == $wgUser->getOption( "underline" ) ) {
+ $s = '';
+ if ( 1 == $wgUser->getOption( 'underline' ) ) {
# Don't override browser settings
} else {
# CHECK MERGE @@@
# Force no underline
- $s .= "a.stub, a.new, a.internal, a.external { " .
+ $s .= 'a { ' .
"text-decoration: none; }\n";
}
- if ( 1 == $wgUser->getOption( "highlightbroken" ) ) {
+ if ( 1 == $wgUser->getOption( 'highlightbroken' ) ) {
$s .= "a.new, #quickbar a.new { color: #CC2200; }\n";
}
- if ( 1 == $wgUser->getOption( "justify" ) ) {
+ if ( 1 == $wgUser->getOption( 'justify' ) ) {
$s .= "#article { text-align: justify; }\n";
}
return $s;
extract( $wgRequest->getValues( 'oldid', 'redirect', 'diff' ) );
if ( 0 != $wgTitle->getNamespace() ) {
- $a = array( "bgcolor" => "#ffffec" );
+ $a = array( 'bgcolor' => '#ffffec' );
}
- else $a = array( "bgcolor" => "#FFFFFF" );
- if($wgOut->isArticle() && $wgUser->getOption("editondblclick") &&
+ else $a = array( 'bgcolor' => '#FFFFFF' );
+ if($wgOut->isArticle() && $wgUser->getOption('editondblclick') &&
(!$wgTitle->isProtected() || $wgUser->isSysop()) ) {
- $t = wfMsg( "editthispage" );
- $oid = $red = "";
- if ( $redirect ) {
+ $t = wfMsg( 'editthispage' );
+ $oid = $red = '';
+ if ( !empty($redirect) ) {
$red = "&redirect={$redirect}";
}
if ( !empty($oldid) && ! isset( $diff ) ) {
$oid = "&oldid={$oldid}";
}
$s = $wgTitle->getFullURL( "action=edit{$oid}{$red}" );
- $s = "document.location = \"" .$s ."\";";
- $a += array ("ondblclick" => $s);
+ $s = 'document.location = "' .$s .'";';
+ $a += array ('ondblclick' => $s);
}
$a['onload'] = $wgOut->getOnloadHandler();
return $a;
}
- function getExternalLinkAttributes( $link, $text )
+ function getExternalLinkAttributes( $link, $text, $class='' )
{
global $wgUser, $wgOut, $wgLang;
$link = urldecode( $link );
$link = $wgLang->checkTitleEncoding( $link );
- $link = str_replace( "_", " ", $link );
+ $link = str_replace( '_', ' ', $link );
$link = wfEscapeHTML( $link );
- $r = " class='external'";
+ $r = ($class != '') ? " class='$class'" : " class='external'";
- if ( 1 == $wgUser->getOption( "hover" ) ) {
+ if ( 1 == $wgUser->getOption( 'hover' ) ) {
$r .= " title=\"{$link}\"";
}
return $r;
global $wgUser, $wgOut;
$link = urldecode( $link );
- $link = str_replace( "_", " ", $link );
+ $link = str_replace( '_', ' ', $link );
$link = wfEscapeHTML( $link );
- if ( $broken == "stub" ) {
- $r = " class='stub'";
- } else if ( $broken == "yes" ) {
- $r = " class='new'";
+ if ( $broken == 'stub' ) {
+ $r = ' class="stub"';
+ } else if ( $broken == 'yes' ) {
+ $r = ' class="new"';
} else {
- $r = "";
+ $r = '';
}
- if ( 1 == $wgUser->getOption( "hover" ) ) {
+ if ( 1 == $wgUser->getOption( 'hover' ) ) {
$r .= " title=\"{$link}\"";
}
return $r;
{
global $wgUser, $wgOut;
- if ( $broken == "stub" ) {
- $r = " class='stub'";
- } else if ( $broken == "yes" ) {
- $r = " class='new'";
+ if ( $broken == 'stub' ) {
+ $r = ' class="stub"';
+ } else if ( $broken == 'yes' ) {
+ $r = ' class="new"';
} else {
- $r = "";
+ $r = '';
}
- if ( 1 == $wgUser->getOption( "hover" ) ) {
+ if ( 1 == $wgUser->getOption( 'hover' ) ) {
$r .= ' title ="' . $nt->getEscapedText() . '"';
}
return $r;
global $wgUser, $wgOut, $wgSiteNotice;
if( $wgSiteNotice ) {
- $note = "\n<div id='notice' style='font-weight: bold; color: red; text-align: center'>$wgSiteNotice</div>\n";
+ $note = "\n<div id='siteNotice'>$wgSiteNotice</div>\n";
} else {
- $note = "";
+ $note = '';
}
return $this->doBeforeContent() . $note;
}
function doBeforeContent()
{
global $wgUser, $wgOut, $wgTitle, $wgLang;
- $fname = "Skin::doBeforeContent";
+ $fname = 'Skin::doBeforeContent';
wfProfileIn( $fname );
- $s = "";
+ $s = '';
$qb = $this->qbSetting();
if( $langlinks = $this->otherLanguages() ) {
$rows = 2;
- $borderhack = "";
+ $borderhack = '';
} else {
$rows = 1;
$langlinks = false;
- $borderhack = "class='top'";
+ $borderhack = 'class="top"';
}
$s .= "\n<div id='content'>\n<div id='topbar'>\n" .
if($wgLang->isRTL()) $left = !$left;
if ( !$shove ) {
- $s .= "<td class='top' align=left valign=top rowspan='{$rows}'>\n" .
- $this->logoText() . "</td>";
+ $s .= "<td class='top' align='left' valign='top' rowspan='{$rows}'>\n" .
+ $this->logoText() . '</td>';
} elseif( $left ) {
$s .= $this->getQuickbarCompensator( $rows );
}
- $l = $wgLang->isRTL() ? "right" : "left";
+ $l = $wgLang->isRTL() ? 'right' : 'left';
$s .= "<td {$borderhack} align='$l' valign='top'>\n";
$s .= $this->topLinks() ;
$s .= $this->pageTitle();
$s .= $this->pageSubtitle() ;
- $s .= getCategories(); // For some odd reason, zhis can't be a function of the object
+ $s .= $this->getCategories();
wfProfileOut( $fname );
return $s;
}
+
+ function getCategoryLinks () {
+ global $wgOut, $wgTitle, $wgUser, $wgParser;
+ global $wgUseCategoryMagic, $wgUseCategoryBrowser, $wgLang;
+ if( !$wgUseCategoryMagic ) return '' ;
+ if( count( $wgOut->mCategoryLinks ) == 0 ) return '';
+ if( !$wgOut->isArticle() ) return '';
+
+ $t = implode ( ' | ' , $wgOut->mCategoryLinks ) ;
+ $s = $this->makeKnownLink( 'Special:Categories',
+ wfMsg( 'categories' ), 'article=' . urlencode( $wgTitle->getPrefixedDBkey() ) )
+ . ': ' . $t;
+
+ if($wgUseCategoryBrowser) {
+ $s .= '<br/><hr/>';
+ $catstack = array();
+ $s.= $wgTitle->getAllParentCategories($catstack);
+ }
+
+ return $s;
+ }
+
+ function getCategories() {
+ $catlinks=$this->getCategoryLinks();
+ if(!empty($catlinks)) {
+ return "<p class='catlinks'>{$catlinks}</p>";
+ }
+ }
function getQuickbarCompensator( $rows = 1 )
{
function doAfterContent()
{
global $wgUser, $wgOut, $wgLang;
- $fname = "Skin::doAfterContent";
+ $fname = 'Skin::doAfterContent';
wfProfileIn( $fname );
- wfProfileIn( "$fname-1" );
+ wfProfileIn( $fname.'-1' );
- $s = "\n</div><br clear='all' />\n";
+ $s = "\n</div><br style=\"clear:both\" />\n";
$s .= "\n<div id='footer'>";
- $s .= "<table border='0' cellspacing='0'><tr>";
+ $s .= '<table border="0" cellspacing="0"><tr>';
- wfProfileOut( "$fname-1" );
- wfProfileIn( "$fname-2" );
+ wfProfileOut( $fname.'-1' );
+ wfProfileIn( $fname.'-2' );
$qb = $this->qbSetting();
$shove = ($qb != 0);
if ( $shove && $left ) { # Left
$s .= $this->getQuickbarCompensator();
}
- wfProfileOut( "$fname-2" );
- wfProfileIn( "$fname-3" );
- $l = $wgLang->isRTL() ? "right" : "left";
+ wfProfileOut( $fname.'-2' );
+ wfProfileIn( $fname.'-3' );
+ $l = $wgLang->isRTL() ? 'right' : 'left';
$s .= "<td class='bottom' align='$l' valign='top'>";
$s .= $this->bottomLinks();
$s .= "\n<br />" . $this->mainPageLink()
- . " | " . $this->aboutLink()
- . " | " . $this->specialLink( "recentchanges" )
- . " | " . $this->searchForm()
- . "<br /><span id='pagestats'>" . $this->pageStats() . "</span>";
+ . ' | ' . $this->aboutLink()
+ . ' | ' . $this->specialLink( 'recentchanges' )
+ . ' | ' . $this->searchForm()
+ . '<br /><span id="pagestats">' . $this->pageStats() . '</span>';
$s .= "</td>";
if ( $shove && !$left ) { # Right
}
$s .= "</tr></table>\n</div>\n</div>\n";
- wfProfileOut( "$fname-3" );
- wfProfileIn( "$fname-4" );
+ wfProfileOut( $fname.'-3' );
+ wfProfileIn( $fname.'-4' );
if ( 0 != $qb ) { $s .= $this->quickBar(); }
- wfProfileOut( "$fname-4" );
+ wfProfileOut( $fname.'-4' );
wfProfileOut( $fname );
return $s;
}
$action = $wgRequest->getText( 'action' );
$s = $this->printableLink();
- if ( wfMsg ( "disclaimers" ) != "-" ) $s .= " | " . $this->makeKnownLink( wfMsg( "disclaimerpage" ), wfMsg( "disclaimers" ) ) ;
+ if ( wfMsg ( 'disclaimers' ) != '-' ) $s .= ' | ' . $this->makeKnownLink( wfMsg( 'disclaimerpage' ), wfMsg( 'disclaimers' ) ) ;
if ( $wgOut->isArticleRelated() ) {
if ( $wgTitle->getNamespace() == Namespace::getImage() ) {
$name = $wgTitle->getDBkey();
- $link = wfEscapeHTML( wfImageUrl( $name ) );
+ $link = wfEscapeHTML( Image::wfImageUrl( $name ) );
$style = $this->getInternalLinkAttributes( $link, $name );
$s .= " | <a href=\"{$link}\"{$style}>{$name}</a>";
}
if ( isset ( $wgUseApproval ) && $wgUseApproval )
{
$t = $wgTitle->getDBkey();
- $name = "Approve this article" ;
+ $name = 'Approve this article' ;
$link = "http://test.wikipedia.org/w/magnus/wiki.phtml?title={$t}&action=submit&doit=1" ;
#wfEscapeHTML( wfImageUrl( $name ) );
$style = $this->getExternalLinkAttributes( $link, $name );
$s .= " | <a href=\"{$link}\"{$style}>{$name}</a>" ;
}
}
- if ( "history" == $action || isset( $diff ) || isset( $oldid ) ) {
- $s .= " | " . $this->makeKnownLink( $wgTitle->getPrefixedText(),
- wfMsg( "currentrev" ) );
+ if ( 'history' == $action || isset( $diff ) || isset( $oldid ) ) {
+ $s .= ' | ' . $this->makeKnownLink( $wgTitle->getPrefixedText(),
+ wfMsg( 'currentrev' ) );
}
if ( $wgUser->getNewtalk() ) {
$n =$wgUser->getName();
$tl = $this->makeKnownLink( $wgLang->getNsText(
Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}",
- wfMsg("newmessageslink") );
- $s.=" | <strong>". wfMsg( "newmessages", $tl ) . "</strong>";
+ wfMsg('newmessageslink') );
+ $s.= ' | <strong>'. wfMsg( 'newmessages', $tl ) . '</strong>';
}
}
- if( $wgUser->isSysop() &&
- (($wgTitle->getArticleId() == 0) || ($action == "history")) &&
- ($n = $wgTitle->isDeleted() ) ) {
- $s .= " | " . wfMsg( "thisisdeleted",
- $this->makeKnownLink(
- $wgLang->SpecialPage( "Undelete/" . $wgTitle->getPrefixedDBkey() ),
- wfMsg( "restorelink", $n ) ) );
+
+ $undelete = $this->getUndeleteLink();
+ if( !empty( $undelete ) ) {
+ $s .= ' | '.$undelete;
}
return $s;
}
+ function getUndeleteLink() {
+ global $wgUser, $wgTitle, $wgLang, $action;
+ if( $wgUser->isSysop() &&
+ (($wgTitle->getArticleId() == 0) || ($action == "history")) &&
+ ($n = $wgTitle->isDeleted() ) ) {
+ return wfMsg( 'thisisdeleted',
+ $this->makeKnownLink(
+ $wgLang->SpecialPage( 'Undelete/' . $wgTitle->getPrefixedDBkey() ),
+ wfMsg( 'restorelink', $n ) ) );
+ }
+ return '';
+ }
+
function printableLink()
{
global $wgOut, $wgFeedClasses, $wgRequest;
$baseurl = $_SERVER['REQUEST_URI'];
- if( strpos( "?", $baseurl ) == false ) {
- $baseurl .= "?";
+ if( strpos( '?', $baseurl ) == false ) {
+ $baseurl .= '?';
} else {
- $baseurl .= "&";
+ $baseurl .= '&';
}
$baseurl = htmlspecialchars( $baseurl );
- $printurl = $wgRequest->escapeAppendQuery( "printable=yes" );
+ $printurl = $wgRequest->escapeAppendQuery( 'printable=yes' );
- $s = "<a href=\"$printurl\">" . wfMsg( "printableversion" ) . "</a>";
+ $s = "<a href=\"$printurl\">" . wfMsg( 'printableversion' ) . '</a>';
if( $wgOut->isSyndicated() ) {
foreach( $wgFeedClasses as $format => $class ) {
$feedurl = $wgRequest->escapeAppendQuery( "feed=$format" );
{
global $wgOut, $wgTitle, $wgUser;
- $s = "<h1 class='pagetitle'>" . $wgOut->getPageTitle() . "</h1>";
- if($wgUser->getOption("editsectiononrightclick") && $wgTitle->userCanEdit()) { $s=$this->editSectionScript(0,$s);}
+ $s = '<h1 class="pagetitle">' . htmlspecialchars( $wgOut->getPageTitle() ) . '</h1>';
+ if($wgUser->getOption( 'editsectiononrightclick' ) && $wgTitle->userCanEdit()) { $s=$this->editSectionScript(0,$s);}
return $s;
}
function pageSubtitle()
{
- global $wgOut,$wgTitle,$wgNamespacesWithSubpages;
+ global $wgOut;
$sub = $wgOut->getSubtitle();
- if ( "" == $sub ) {
+ if ( '' == $sub ) {
global $wgExtraSubtitle;
- $sub = wfMsg( "fromwikipedia" ) . $wgExtraSubtitle;
+ $sub = wfMsg( 'fromwikipedia' ) . $wgExtraSubtitle;
}
- if($wgOut->isArticle() && $wgNamespacesWithSubpages[$wgTitle->getNamespace()]) {
+ $subpages = $this->subPageSubtitle();
+ $sub .= !empty($subpages)?"</p><p class='subpages'>$subpages":'';
+ $s = "<p class='subtitle'>{$sub}</p>\n";
+ return $s;
+ }
+
+ function subPageSubtitle()
+ {
+ global $wgOut,$wgTitle,$wgNamespacesWithSubpages;
+ $subpages = '';
+ if($wgOut->isArticle() && !empty($wgNamespacesWithSubpages[$wgTitle->getNamespace()])) {
$ptext=$wgTitle->getPrefixedText();
- if(preg_match("/\//",$ptext)) {
- $sub.="</p><p class='subpages'>";
- $links=explode("/",$ptext);
- $c=0;
- $growinglink="";
+ if(preg_match('/\//',$ptext)) {
+ $links = explode('/',$ptext);
+ $c = 0;
+ $growinglink = '';
foreach($links as $link) {
$c++;
if ($c<count($links)) {
$growinglink .= $link;
$getlink = $this->makeLink( $growinglink, $link );
- if(preg_match("/class='new'/i",$getlink)) { break; } # this is a hack, but it saves time
+ if(preg_match('/class="new"/i',$getlink)) { break; } # this is a hack, but it saves time
if ($c>1) {
- $sub .= " | ";
+ $subpages .= ' | ';
} else {
- $sub .="< ";
+ $subpages .= '< ';
}
- $sub .= $getlink;
- $growinglink.="/";
+ $subpages .= $getlink;
+ $growinglink .= '/';
}
-
}
}
}
- $s = "<p class='subtitle'>{$sub}</p>\n";
- return $s;
+ return $subpages;
}
function nameAndLogin()
{
global $wgUser, $wgTitle, $wgLang, $wgShowIPinHeader, $wgIP;
- $li = $wgLang->specialPage( "Userlogin" );
- $lo = $wgLang->specialPage( "Userlogout" );
+ $li = $wgLang->specialPage( 'Userlogin' );
+ $lo = $wgLang->specialPage( 'Userlogout' );
- $s = "";
+ $s = '';
if ( 0 == $wgUser->getID() ) {
- if( $wgShowIPinHeader && isset( $_COOKIE[ini_get("session.name")] ) ) {
+ if( $wgShowIPinHeader && isset( $_COOKIE[ini_get('session.name')] ) ) {
$n = $wgIP;
$tl = $this->makeKnownLink( $wgLang->getNsText(
Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}",
$wgLang->getNsText( Namespace::getTalk( 0 ) ) );
- $s .= $n . " (".$tl.")";
+ $s .= $n . ' ('.$tl.')';
} else {
- $s .= wfMsg("notloggedin");
+ $s .= wfMsg('notloggedin');
}
$rt = $wgTitle->getPrefixedURL();
if ( 0 == strcasecmp( urlencode( $lo ), $rt ) ) {
- $q = "";
+ $q = '';
} else { $q = "returnto={$rt}"; }
$s .= "\n<br />" . $this->makeKnownLink( $li,
- wfMsg( "login" ), $q );
+ wfMsg( 'login' ), $q );
} else {
$n = $wgUser->getName();
$rt = $wgTitle->getPrefixedURL();
$s .= $this->makeKnownLink( $wgLang->getNsText(
Namespace::getUser() ) . ":{$n}", $n ) . "{$tl}<br />" .
- $this->makeKnownLink( $lo, wfMsg( "logout" ),
- "returnto={$rt}" ) . " | " .
- $this->specialLink( "preferences" );
+ $this->makeKnownLink( $lo, wfMsg( 'logout' ),
+ "returnto={$rt}" ) . ' | ' .
+ $this->specialLink( 'preferences' );
}
- $s .= " | " . $this->makeKnownLink( wfMsg( "helppage" ),
- wfMsg( "help" ) );
+ $s .= ' | ' . $this->makeKnownLink( wfMsg( 'helppage' ),
+ wfMsg( 'help' ) );
return $s;
}
-
+
+ function getSearchLink() {
+ $searchPage =& Title::makeTitle( NS_SPECIAL, 'Search' );
+ return $searchPage->getLocalURL();
+ }
+
+ function escapeSearchLink() {
+ return htmlspecialchars( $this->getSearchLink() );
+ }
+
function searchForm()
{
global $wgRequest;
-
- $search = $wgRequest->getText( 'search' );;
-
- $s = "<form name='search' class='inline' method='post' action=\""
- . wfLocalUrl( "" ) . "\">\n"
- . "<input type='text' name=\"search\" size='19' value=\""
+ $search = $wgRequest->getText( 'search' );
+
+ $s = '<form name="search" class="inline" method="post" action="'
+ . $this->escapeSearchLink() . "\">\n"
+ . '<input type="text" name="search" size="19" value="'
. htmlspecialchars(substr($search,0,256)) . "\" />\n"
- . "<input type='submit' name=\"go\" value=\"" . wfMsg ("go") . "\" /> "
- . "<input type='submit' name=\"fulltext\" value=\"" . wfMsg ("search") . "\" />\n</form>";
+ . '<input type="submit" name="go" value="' . wfMsg ('go') . '" /> '
+ . '<input type="submit" name="fulltext" value="' . wfMsg ('search') . "\" />\n</form>";
return $s;
}
$sep = " |\n";
$s = $this->mainPageLink() . $sep
- . $this->specialLink( "recentchanges" );
+ . $this->specialLink( 'recentchanges' );
if ( $wgOut->isArticleRelated() ) {
$s .= $sep . $this->editThisPage()
global $wgOut, $wgUser, $wgTitle;
$sep = " |\n";
- $s = "";
+ $s = '';
if ( $wgOut->isArticleRelated() ) {
- $s .= "<strong>" . $this->editThisPage() . "</strong>";
+ $s .= '<strong>' . $this->editThisPage() . '</strong>';
if ( 0 != $wgUser->getID() ) {
$s .= $sep . $this->watchThisPage();
}
{
global $wgOut, $wgLang, $wgArticle, $wgRequest;
global $wgDisableCounters;
-
+
extract( $wgRequest->getValues( 'oldid', 'diff' ) );
- if ( ! $wgOut->isArticle() ) { return ""; }
- if ( isset( $oldid ) || isset( $diff ) ) { return ""; }
- if ( 0 == $wgArticle->getID() ) { return ""; }
+ if ( ! $wgOut->isArticle() ) { return ''; }
+ if ( isset( $oldid ) || isset( $diff ) ) { return ''; }
+ if ( 0 == $wgArticle->getID() ) { return ''; }
- $s = "";
+ $s = '';
if ( !$wgDisableCounters ) {
$count = $wgLang->formatNum( $wgArticle->getCount() );
if ( $count ) {
- $s = wfMsg( "viewcount", $count );
+ $s = wfMsg( 'viewcount', $count );
}
}
- $s .= $this->lastModified();
- $s .= " " . wfMsg( "gnunote" );
- return $s;
+
+ $s .= ' ' . $this->getCredits();
+
+ return $s . ' ' . $this->getCopyright();
+ }
+
+ function getCredits() {
+ global $wgMaxCredits;
+
+ $s = '';
+
+ if (!isset($wgMaxCredits) || $wgMaxCredits == 0) {
+ $s = $this->lastModified();
+ } else {
+ $s = $this->getAuthorCredits();
+ if ($wgMaxCredits > 1) {
+ $s .= ' ' . $this->getContributorCredits();
+ }
+ }
+
+ return $s;
+ }
+
+ function getAuthorCredits() {
+ global $wgLang, $wgArticle;
+
+ $last_author = $wgArticle->getUser();
+
+ if ($last_author == 0) {
+ $author_credit = wfMsg('anonymous');
+ } else {
+ $real_name = User::whoIsReal($last_author);
+ if (!empty($real_name)) {
+ $author_credit = $real_name;
+ } else {
+ $author_credit = wfMsg('siteuser', User::whoIs($last_author));
+ }
+ }
+
+ $timestamp = $wgArticle->getTimestamp();
+ if ( $timestamp ) {
+ $d = $wgLang->timeanddate( $wgArticle->getTimestamp(), true );
+ } else {
+ $d = '';
+ }
+ return wfMsg('lastmodifiedby', $d, $author_credit);
+ }
+
+ function getContributorCredits() {
+
+ global $wgArticle, $wgMaxCredits, $wgLang;
+
+ # don't count last editor
+
+ $contributors = $wgArticle->getContributors($wgMaxCredits - 1);
+
+ $real_names = array();
+ $user_names = array();
+
+ # Sift for real versus user names
+
+ foreach ($contributors as $user_id => $user_parts) {
+ if ($user_id != 0) {
+ if (!empty($user_parts[1])) {
+ $real_names[$user_id] = $user_parts[1];
+ } else {
+ $user_names[$user_id] = $user_parts[0];
+ }
+ }
+ }
+
+ $real = $wgLang->listToText(array_values($real_names));
+ $user = $wgLang->listToText(array_values($user_names));
+
+ if (!empty($user)) {
+ $user = wfMsg('siteusers', $user);
+ }
+
+ if ($contributors[0] && $contributors[0][0] > 0) {
+ $anon = wfMsg('anonymous');
+ } else {
+ $anon = '';
+ }
+
+ $creds = $wgLang->listToText(array($real, $user, $anon));
+
+ return wfMsg('othercontribs', $creds);
+ }
+
+ function getCopyright() {
+ global $wgRightsPage, $wgRightsUrl, $wgRightsText;
+ $out = '';
+ if( $wgRightsPage ) {
+ $link = $this->makeKnownLink( $wgRightsPage, $wgRightsText );
+ } elseif( $wgRightsUrl ) {
+ $link = $this->makeExternalLink( $wgRightsUrl, $wgRightsText );
+ } else {
+ # Give up now
+ return $out;
+ }
+ $out .= wfMsg( 'copyright', $link );
+ return $out;
+ }
+
+ function getCopyrightIcon() {
+ global $wgRightsPage, $wgRightsUrl, $wgRightsText, $wgRightsIcon;
+ $out = '';
+ if( $wgRightsIcon ) {
+ $icon = htmlspecialchars( $wgRightsIcon );
+ if( $wgRightsUrl ) {
+ $url = htmlspecialchars( $wgRightsUrl );
+ $out .= '<a href="'.$url.'">';
+ }
+ $text = htmlspecialchars( $wgRightsText );
+ $out .= "<img src=\"$icon\" alt='$text' />";
+ if( $wgRightsUrl ) {
+ $out .= '</a>';
+ }
+ }
+ return $out;
+ }
+
+ function getPoweredBy() {
+ global $wgStylePath;
+ $url = htmlspecialchars( "$wgStylePath/images/poweredby_mediawiki_88x31.png" );
+ $img = '<a href="http://www.mediawiki.org/"><img src="'.$url.'" alt="MediaWiki" /></a>';
+ return $img;
}
function lastModified()
$timestamp = $wgArticle->getTimestamp();
if ( $timestamp ) {
$d = $wgLang->timeanddate( $wgArticle->getTimestamp(), true );
- $s = " " . wfMsg( "lastmodified", $d );
+ $s = ' ' . wfMsg( 'lastmodified', $d );
} else {
- $s = "";
+ $s = '';
}
return $s;
}
- function logoText( $align = "" )
+ function logoText( $align = '' )
{
- if ( "" != $align ) { $a = " align='{$align}'"; }
- else { $a = ""; }
+ if ( '' != $align ) { $a = ' align="'.$align.'"'; }
+ else { $a = ''; }
- $mp = wfMsg( "mainpage" );
+ $mp = wfMsg( 'mainpage' );
$titleObj = Title::newFromText( $mp );
- $s = "<a href=\"" . $titleObj->escapeLocalURL()
- . "\"><img{$a} src=\""
- . $this->getLogo() . "\" alt=\"" . "[{$mp}]\" /></a>";
+ $s = '<a href="' . $titleObj->escapeLocalURL()
+ . '"><img'.$a.' src="'
+ . $this->getLogo() . '" alt="' . "[{$mp}]\" /></a>";
return $s;
}
global $wgOut, $wgTitle, $wgUser, $wgRequest, $wgLang;
global $wgDisableUploads, $wgRemoteUploads;
- $fname = "Skin::quickBar";
+ $fname = 'Skin::quickBar';
wfProfileIn( $fname );
$action = $wgRequest->getText( 'action' );
$sep = "\n<br />";
$s .= $this->mainPageLink()
- . $sep . $this->specialLink( "recentchanges" )
- . $sep . $this->specialLink( "randompage" );
+ . $sep . $this->specialLink( 'recentchanges' )
+ . $sep . $this->specialLink( 'randompage' );
if ($wgUser->getID()) {
- $s.= $sep . $this->specialLink( "watchlist" ) ;
- $s .= $sep .$this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
- wfMsg( "mycontris" ), "target=" . wfUrlencode($wgUser->getName() ) );
+ $s.= $sep . $this->specialLink( 'watchlist' ) ;
+ $s .= $sep .$this->makeKnownLink( $wgLang->specialPage( 'Contributions' ),
+ wfMsg( 'mycontris' ), 'target=' . wfUrlencode($wgUser->getName() ) );
}
// only show watchlist link if logged in
- if ( wfMsg ( "currentevents" ) != "-" ) $s .= $sep . $this->makeKnownLink( wfMsg( "currentevents" ), "" ) ;
+ if ( wfMsg ( 'currentevents' ) != '-' ) $s .= $sep . $this->makeKnownLink( wfMsg( 'currentevents' ), '' ) ;
$s .= "\n<br /><hr class='sep' />";
$articleExists = $wgTitle->getArticleId();
- if ( $wgOut->isArticle() || $action =="edit" || $action =="history" || $wpPreview) {
+ if ( $wgOut->isArticle() || $action =='edit' || $action =='history' || $wpPreview) {
if($wgOut->isArticle()) {
- $s .= "<strong>" . $this->editThisPage() . "</strong>";
+ $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 0:
- $text = wfMsg("articlepage");
+ $text = wfMsg('articlepage');
break;
case 1:
- $text = wfMsg("viewtalkpage");
+ $text = wfMsg('viewtalkpage');
break;
case 2:
- $text = wfMsg("userpage");
+ $text = wfMsg('userpage');
break;
case 3:
- $text = wfMsg("viewtalkpage");
+ $text = wfMsg('viewtalkpage');
break;
case 4:
- $text = wfMsg("wikipediapage");
+ $text = wfMsg('wikipediapage');
break;
case 5:
- $text = wfMsg("viewtalkpage");
+ $text = wfMsg('viewtalkpage');
break;
case 6:
- $text = wfMsg("imagepage");
+ $text = wfMsg('imagepage');
break;
case 7:
- $text = wfMsg("viewtalkpage");
+ $text = wfMsg('viewtalkpage');
break;
default:
- $text= wfMsg("articlepage");
+ $text= wfMsg('articlepage');
}
$link = $wgTitle->getText();
if ($nstext = $wgLang->getNsText($tns) ) { # add namespace if necessary
- $link = $nstext . ":" . $link ;
+ $link = $nstext . ':' . $link ;
}
- $s .= $this->makeLink( $link, $text );
+ $s .= $this->makeLink( $link, $text );
} elseif( $wgTitle->getNamespace() != Namespace::getSpecial() ) {
# 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>";
+ $s .= '<strong>' . wfMsg('newpage') . '</strong>';
}
}
- if( $tns%2 && $action!="edit" && !$wpPreview) {
- $s.="<br />".$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg("postcomment"),"action=edit§ion=new");
+ if( $tns%2 && $action!='edit' && !$wpPreview) {
+ $s.= '<br />'.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit§ion=new');
}
/*
unwatched. Therefore we do not show the "Watch this page" link in edit mode
*/
if ( 0 != $wgUser->getID() && $articleExists) {
- if($action!="edit" && $action != "submit" )
+ if($action!='edit' && $action != 'submit' )
{
$s .= $sep . $this->watchThisPage();
}
$sep . $this->protectThisPage();
}
$s .= $sep . $this->talkLink();
- if ($articleExists && $action !="history") {
+ if ($articleExists && $action !='history') {
$s .= $sep . $this->historyLink();
}
$s.=$sep . $this->whatLinksHere();
}
if ( 0 != $wgUser->getID() && ( !$wgDisableUploads || $wgRemoteUploads ) ) {
- $s .= $this->specialLink( "upload" ) . $sep;
+ $s .= $this->specialLink( 'upload' ) . $sep;
}
- $s .= $this->specialLink( "specialpages" )
+ $s .= $this->specialLink( 'specialpages' )
. $sep . $this->bugReportsLink();
global $wgSiteSupportPage;
if( $wgSiteSupportPage ) {
$s .= "\n<br /><a href=\"" . htmlspecialchars( $wgSiteSupportPage ) .
- "\" class=\"internal\">" . wfMsg( "sitesupport" ) . "</a>";
+ '" class="internal">' . wfMsg( 'sitesupport' ) . '</a>';
}
$s .= "\n<br /></div>\n";
function specialPagesList()
{
global $wgUser, $wgOut, $wgLang, $wgServer, $wgRedirectScript;
+ require_once('SpecialPage.php');
$a = array();
-
- $validSP = $wgLang->getValidSpecialPages();
-
- foreach ( $validSP as $name => $desc ) {
- if ( "" == $desc ) { continue; }
- $a[$name] = $desc;
+ $pages = SpecialPage::getPages();
+
+ foreach ( $pages[''] as $name => $page ) {
+ $a[$name] = $page->getDescription();
}
if ( $wgUser->isSysop() )
{
- $sysopSP = $wgLang->getSysopSpecialPages();
-
- foreach ( $sysopSP as $name => $desc ) {
- if ( "" == $desc ) { continue; }
- $a[$name] = $desc ;
+ foreach ( $pages['sysop'] as $name => $page ) {
+ $a[$name] = $page->getDescription();
}
}
if ( $wgUser->isDeveloper() )
{
- $devSP = $wgLang->getDeveloperSpecialPages();
-
- foreach ( $devSP as $name => $desc ) {
- if ( "" == $desc ) { continue; }
- $a[$name] = $desc ;
+ foreach ( $pages['developer'] as $name => $page ) {
+ $a[$name] = $page->getDescription() ;
}
}
- $go = wfMsg( "go" );
- $sp = wfMsg( "specialpages" );
- $spp = $wgLang->specialPage( "Specialpages" );
+ $go = wfMsg( 'go' );
+ $sp = wfMsg( 'specialpages' );
+ $spp = $wgLang->specialPage( 'Specialpages' );
- $s = "<form id=\"specialpages\" method=\"get\" class=\"inline\" " .
- "action=\"{$wgServer}{$wgRedirectScript}\">\n";
+ $s = '<form id="specialpages" method="get" class="inline" ' .
+ 'action="' . htmlspecialchars( "{$wgServer}{$wgRedirectScript}" ) . "\">\n";
$s .= "<select name=\"wpDropdown\">\n";
$s .= "<option value=\"{$spp}\">{$sp}</option>\n";
$s .= "<option value=\"{$p}\">{$desc}</option>\n";
}
$s .= "</select>\n";
- $s .= "<input type=submit value=\"{$go}\" name=redirect>\n";
+ $s .= "<input type='submit' value=\"{$go}\" name='redirect' />\n";
$s .= "</form>\n";
return $s;
}
function mainPageLink()
{
- $mp = wfMsg( "mainpage" );
+ $mp = wfMsg( 'mainpage' );
$s = $this->makeKnownLink( $mp, $mp );
return $s;
}
function copyrightLink()
{
- $s = $this->makeKnownLink( wfMsg( "copyrightpage" ),
- wfMsg( "copyrightpagename" ) );
+ $s = $this->makeKnownLink( wfMsg( 'copyrightpage' ),
+ wfMsg( 'copyrightpagename' ) );
return $s;
}
function aboutLink()
{
- $s = $this->makeKnownLink( wfMsg( "aboutpage" ),
- wfMsg( "aboutwikipedia" ) );
+ $s = $this->makeKnownLink( wfMsg( 'aboutpage' ),
+ wfMsg( 'aboutwikipedia' ) );
return $s;
}
function disclaimerLink()
{
- $s = $this->makeKnownLink( wfMsg( "disclaimerpage" ),
- wfMsg( "disclaimers" ) );
+ $s = $this->makeKnownLink( wfMsg( 'disclaimerpage' ),
+ wfMsg( 'disclaimers' ) );
return $s;
}
$redirect = $wgRequest->getVal( 'redirect' );
if ( ! $wgOut->isArticleRelated() ) {
- $s = wfMsg( "protectedpage" );
+ $s = wfMsg( 'protectedpage' );
} else {
$n = $wgTitle->getPrefixedText();
if ( $wgTitle->userCanEdit() ) {
- $t = wfMsg( "editthispage" );
+ $t = wfMsg( 'editthispage' );
} else {
#$t = wfMsg( "protectedpage" );
- $t = wfMsg( "viewsource" );
+ $t = wfMsg( 'viewsource' );
}
- $oid = $red = "";
+ $oid = $red = '';
if ( !is_null( $redirect ) ) { $red = "&redirect={$redirect}"; }
if ( $oldid && ! isset( $diff ) ) {
$diff = $wgRequest->getVal( 'diff' );
if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isSysop() ) {
$n = $wgTitle->getPrefixedText();
- $t = wfMsg( "deletethispage" );
+ $t = wfMsg( 'deletethispage' );
- $s = $this->makeKnownLink( $n, $t, "action=delete" );
+ $s = $this->makeKnownLink( $n, $t, 'action=delete' );
} else {
- $s = "";
+ $s = '';
}
return $s;
}
$n = $wgTitle->getPrefixedText();
if ( $wgTitle->isProtected() ) {
- $t = wfMsg( "unprotectthispage" );
- $q = "action=unprotect";
+ $t = wfMsg( 'unprotectthispage' );
+ $q = 'action=unprotect';
} else {
- $t = wfMsg( "protectthispage" );
- $q = "action=protect";
+ $t = wfMsg( 'protectthispage' );
+ $q = 'action=protect';
}
$s = $this->makeKnownLink( $n, $t, $q );
} else {
- $s = "";
+ $s = '';
}
return $s;
}
$n = $wgTitle->getPrefixedText();
if ( $wgTitle->userIsWatching() ) {
- $t = wfMsg( "unwatchthispage" );
- $q = "action=unwatch";
+ $t = wfMsg( 'unwatchthispage' );
+ $q = 'action=unwatch';
} else {
- $t = wfMsg( "watchthispage" );
- $q = "action=watch";
+ $t = wfMsg( 'watchthispage' );
+ $q = 'action=watch';
}
$s = $this->makeKnownLink( $n, $t, $q );
} else {
- $s = wfMsg( "notanarticle" );
+ $s = wfMsg( 'notanarticle' );
}
return $s;
}
global $wgTitle, $wgLang;
if ( $wgTitle->userCanEdit() ) {
- $s = $this->makeKnownLink( $wgLang->specialPage( "Movepage" ),
- wfMsg( "movethispage" ), "target=" . $wgTitle->getPrefixedURL() );
+ $s = $this->makeKnownLink( $wgLang->specialPage( 'Movepage' ),
+ wfMsg( 'movethispage' ), 'target=' . $wgTitle->getPrefixedURL() );
} // no message if page is protected - would be redundant
return $s;
}
global $wgTitle;
$s = $this->makeKnownLink( $wgTitle->getPrefixedText(),
- wfMsg( "history" ), "action=history" );
+ wfMsg( 'history' ), 'action=history' );
return $s;
}
{
global $wgTitle, $wgLang;
- $s = $this->makeKnownLink( $wgLang->specialPage( "Whatlinkshere" ),
- wfMsg( "whatlinkshere" ), "target=" . $wgTitle->getPrefixedURL() );
+ $s = $this->makeKnownLink( $wgLang->specialPage( 'Whatlinkshere' ),
+ wfMsg( 'whatlinkshere' ), 'target=' . $wgTitle->getPrefixedURL() );
return $s;
}
{
global $wgTitle, $wgLang;
- $s = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
- wfMsg( "contributions" ), "target=" . $wgTitle->getPartialURL() );
+ $s = $this->makeKnownLink( $wgLang->specialPage( 'Contributions' ),
+ wfMsg( 'contributions' ), 'target=' . $wgTitle->getPartialURL() );
return $s;
}
{
global $wgTitle, $wgLang;
- $s = $this->makeKnownLink( $wgLang->specialPage( "Emailuser" ),
- wfMsg( "emailuser" ), "target=" . $wgTitle->getPartialURL() );
+ $s = $this->makeKnownLink( $wgLang->specialPage( 'Emailuser' ),
+ wfMsg( 'emailuser' ), 'target=' . $wgTitle->getPartialURL() );
return $s;
}
global $wgOut, $wgTitle, $wgLang;
if ( ! $wgOut->isArticleRelated() ) {
- $s = "(" . wfMsg( "notanarticle" ) . ")";
+ $s = '(' . wfMsg( 'notanarticle' ) . ')';
} else {
$s = $this->makeKnownLink( $wgLang->specialPage(
- "Recentchangeslinked" ), wfMsg( "recentchangeslinked" ),
- "target=" . $wgTitle->getPrefixedURL() );
+ 'Recentchangeslinked' ), wfMsg( 'recentchangeslinked' ),
+ 'target=' . $wgTitle->getPrefixedURL() );
}
return $s;
}
$a = $wgOut->getLanguageLinks();
if ( 0 == count( $a ) ) {
- if ( !$wgUseNewInterlanguage ) return "";
+ if ( !$wgUseNewInterlanguage ) return '';
$ns = $wgLang->getNsIndex ( $wgTitle->getNamespace () ) ;
- if ( $ns != 0 AND $ns != 1 ) return "" ;
- $pn = "Intl" ;
- $x = "mode=addlink&xt=".$wgTitle->getDBkey() ;
+ if ( $ns != 0 AND $ns != 1 ) return '' ;
+ $pn = 'Intl' ;
+ $x = 'mode=addlink&xt='.$wgTitle->getDBkey() ;
return $this->makeKnownLink( $wgLang->specialPage( $pn ),
- wfMsg( "intl" ) , $x );
+ wfMsg( 'intl' ) , $x );
}
if ( !$wgUseNewInterlanguage ) {
- $s = wfMsg( "otherlanguages" ) . ": ";
+ $s = wfMsg( 'otherlanguages' ) . ': ';
} else {
global $wgLanguageCode ;
- $x = "mode=zoom&xt=".$wgTitle->getDBkey() ;
- $x .= "&xl=".$wgLanguageCode ;
- $s = $this->makeKnownLink( $wgLang->specialPage( "Intl" ),
- wfMsg( "otherlanguages" ) , $x ) . ": " ;
+ $x = 'mode=zoom&xt='.$wgTitle->getDBkey() ;
+ $x .= '&xl='.$wgLanguageCode ;
+ $s = $this->makeKnownLink( $wgLang->specialPage( 'Intl' ),
+ wfMsg( 'otherlanguages' ) , $x ) . ': ' ;
}
- $s = wfMsg( "otherlanguages" ) . ": ";
+ $s = wfMsg( 'otherlanguages' ) . ': ';
$first = true;
- if($wgLang->isRTL()) $s .= "<span dir='LTR'>";
+ if($wgLang->isRTL()) $s .= '<span dir="LTR">';
foreach( $a as $l ) {
- if ( ! $first ) { $s .= " | "; }
+ if ( ! $first ) { $s .= ' | '; }
$first = false;
$nt = Title::newFromText( $l );
$url = $nt->getFullURL();
$text = $wgLang->getLanguageName( $nt->getInterwiki() );
- if ( "" == $text ) { $text = $l; }
+ if ( '' == $text ) { $text = $l; }
$style = $this->getExternalLinkAttributes( $l, $text );
$s .= "<a href=\"{$url}\"{$style}>{$text}</a>";
}
- if($wgLang->isRTL()) $s .= "</span>";
+ if($wgLang->isRTL()) $s .= '</span>';
return $s;
}
function bugReportsLink()
{
- $s = $this->makeKnownLink( wfMsg( "bugreportspage" ),
- wfMsg( "bugreports" ) );
+ $s = $this->makeKnownLink( wfMsg( 'bugreportspage' ),
+ wfMsg( 'bugreports' ) );
return $s;
}
function dateLink()
{
global $wgLinkCache;
- $t1 = Title::newFromText( gmdate( "F j" ) );
- $t2 = Title::newFromText( gmdate( "Y" ) );
+ $t1 = Title::newFromText( gmdate( 'F j' ) );
+ $t2 = Title::newFromText( gmdate( 'Y' ) );
$wgLinkCache->suspend();
$id = $t1->getArticleID();
} else {
$s = $this->makeKnownLink( $t1->getText() );
}
- $s .= ", ";
+ $s .= ', ';
$wgLinkCache->suspend();
$id = $t2->getArticleID();
global $wgLang, $wgTitle, $wgLinkCache;
$tns = $wgTitle->getNamespace();
- if ( -1 == $tns ) { return ""; }
+ if ( -1 == $tns ) { return ''; }
$pn = $wgTitle->getText();
- $tp = wfMsg( "talkpage" );
+ $tp = wfMsg( 'talkpage' );
if ( Namespace::isTalk( $tns ) ) {
$lns = Namespace::getSubject( $tns );
switch($tns) {
case 1:
- $text = wfMsg("articlepage");
+ $text = wfMsg('articlepage');
break;
case 3:
- $text = wfMsg("userpage");
+ $text = wfMsg('userpage');
break;
case 5:
- $text = wfMsg("wikipediapage");
+ $text = wfMsg('wikipediapage');
break;
case 7:
- $text = wfMsg("imagepage");
+ $text = wfMsg('imagepage');
break;
default:
- $text= wfMsg("articlepage");
+ $text= wfMsg('articlepage');
}
} else {
$text=$tp;
}
$n = $wgLang->getNsText( $lns );
- if ( "" == $n ) { $link = $pn; }
- else { $link = "{$n}:{$pn}"; }
+ if ( '' == $n ) { $link = $pn; }
+ else { $link = $n.':'.$pn; }
$wgLinkCache->suspend();
$s = $this->makeLink( $link, $text );
global $wgLang, $wgTitle, $wgLinkCache;
$tns = $wgTitle->getNamespace();
- if ( -1 == $tns ) { return ""; }
+ if ( -1 == $tns ) { return ''; }
$lns = ( Namespace::isTalk( $tns ) ) ? $tns : Namespace::getTalk( $tns );
$n = $wgLang->getNsText( $lns );
$pn = $wgTitle->getText();
- $link = "{$n}:{$pn}";
+ $link = $n.':'.$pn;
$wgLinkCache->suspend();
- $s = $this->makeKnownLink($link, wfMsg("postcomment"), "action=edit§ion=new");
+ $s = $this->makeKnownLink($link, wfMsg('postcomment'), 'action=edit§ion=new');
$wgLinkCache->resume();
return $s;
# Note: This function MUST call getArticleID() on the link,
# otherwise the cache won't get updated properly. See LINKCACHE.DOC.
#
- function makeLink( $title, $text = "", $query = "", $trail = "" ) {
- wfProfileIn( "Skin::makeLink" );
+ function makeLink( $title, $text = '', $query = '', $trail = '' ) {
+ wfProfileIn( 'Skin::makeLink' );
$nt = Title::newFromText( $title );
- if ($nt) {
+ if ($nt) {
$result = $this->makeLinkObj( Title::newFromText( $title ), $text, $query, $trail );
} else {
- wfDebug( "Invalid title passed to Skin::makeLink(): \"$title\"\n" );
+ wfDebug( 'Invalid title passed to Skin::makeLink(): "'.$title."\"\n" );
$result = $text == "" ? $title : $text;
- }
-
- wfProfileOut( "Skin::makeLink" );
+ }
+
+ wfProfileOut( 'Skin::makeLink' );
return $result;
}
- function makeKnownLink( $title, $text = "", $query = "", $trail = "" ) {
+ function makeKnownLink( $title, $text = '', $query = '', $trail = '', $prefix = '',$aprops = '') {
$nt = Title::newFromText( $title );
- if ($nt) {
- return $this->makeKnownLinkObj( Title::newFromText( $title ), $text, $query, $trail );
+ if ($nt) {
+ return $this->makeKnownLinkObj( Title::newFromText( $title ), $text, $query, $trail, $prefix , $aprops );
} else {
- wfDebug( "Invalid title passed to Skin::makeKnownLink(): \"$title\"\n" );
- return $text == "" ? $title : $text;
+ wfDebug( 'Invalid title passed to Skin::makeKnownLink(): "'.$title."\"\n" );
+ return $text == '' ? $title : $text;
}
}
- function makeBrokenLink( $title, $text = "", $query = "", $trail = "" ) {
+ function makeBrokenLink( $title, $text = '', $query = '', $trail = '' ) {
$nt = Title::newFromText( $title );
- if ($nt) {
+ if ($nt) {
return $this->makeBrokenLinkObj( Title::newFromText( $title ), $text, $query, $trail );
} else {
- wfDebug( "Invalid title passed to Skin::makeBrokenLink(): \"$title\"\n" );
- return $text == "" ? $title : $text;
+ wfDebug( 'Invalid title passed to Skin::makeBrokenLink(): "'.$title."\"\n" );
+ return $text == '' ? $title : $text;
}
}
- function makeStubLink( $title, $text = "", $query = "", $trail = "" ) {
+ function makeStubLink( $title, $text = '', $query = '', $trail = '' ) {
$nt = Title::newFromText( $title );
if ($nt) {
return $this->makeStubLinkObj( Title::newFromText( $title ), $text, $query, $trail );
} else {
- wfDebug( "Invalid title passed to Skin::makeStubLink(): \"$title\"\n" );
- return $text == "" ? $title : $text;
+ wfDebug( 'Invalid title passed to Skin::makeStubLink(): "'.$title."\"\n" );
+ return $text == '' ? $title : $text;
}
}
# Pass a title object, not a title string
- function makeLinkObj( &$nt, $text= "", $query = "", $trail = "", $prefix = "" )
+ function makeLinkObj( &$nt, $text= '', $query = '', $trail = '', $prefix = '' )
{
global $wgOut, $wgUser;
if ( $nt->isExternal() ) {
$u = $nt->getFullURL();
- if ( "" == $text ) { $text = $nt->getPrefixedText(); }
- $style = $this->getExternalLinkAttributes( $link, $text );
+ $link = $nt->getPrefixedURL();
+ if ( '' == $text ) { $text = $nt->getPrefixedText(); }
+ $style = $this->getExternalLinkAttributes( $link, $text, 'extiw' );
- $inside = "";
- if ( "" != $trail ) {
- if ( preg_match( "/^([a-z]+)(.*)$$/sD", $trail, $m ) ) {
+ $inside = '';
+ if ( '' != $trail ) {
+ if ( preg_match( '/^([a-z]+)(.*)$$/sD', $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
}
if ( 0 == $aid ) {
$retVal = $this->makeBrokenLinkObj( $nt, $text, $query, $trail, $prefix );
} else {
- $threshold = $wgUser->getOption("stubthreshold") ;
+ $threshold = $wgUser->getOption('stubthreshold') ;
if ( $threshold > 0 ) {
$res = wfQuery ( "SELECT LENGTH(cur_text) AS x, cur_namespace, cur_is_redirect FROM cur WHERE cur_id='{$aid}'", DB_READ ) ;
}
} else {
$size = 1 ;
- }
+ }
if ( $size < $threshold ) {
$retVal = $this->makeStubLinkObj( $nt, $text, $query, $trail, $prefix );
} else {
}
# Pass a title object, not a title string
- function makeKnownLinkObj( &$nt, $text = "", $query = "", $trail = "", $prefix = "" )
+ function makeKnownLinkObj( &$nt, $text = '', $query = '', $trail = '', $prefix = '' , $aprops = '')
{
- global $wgOut, $wgTitle;
+ global $wgOut, $wgTitle, $wgInputEncoding;
- $fname = "Skin::makeKnownLinkObj";
+ $fname = 'Skin::makeKnownLinkObj';
wfProfileIn( $fname );
$link = $nt->getPrefixedURL();
- if ( "" == $link ) {
- $u = "";
- if ( "" == $text ) { $text = $nt->getFragment(); }
+ if ( '' == $link ) {
+ $u = '';
+ if ( '' == $text ) {
+ $text = htmlspecialchars( $nt->getFragment() );
+ }
} else {
$u = $nt->escapeLocalURL( $query );
}
- if ( "" != $nt->getFragment() ) {
- $u .= "#" . wfEscapeHTML( $nt->getFragment() );
+ if ( '' != $nt->getFragment() ) {
+ $anchor = urlencode( do_html_entity_decode( str_replace(' ', '_', $nt->getFragment()), ENT_COMPAT, $wgInputEncoding ) );
+ $replacearray = array(
+ '%3A' => ':',
+ '%' => '.'
+ );
+ $u .= '#' . str_replace(array_keys($replacearray),array_values($replacearray),$anchor);
+ }
+ if ( '' == $text ) {
+ $text = htmlspecialchars( $nt->getPrefixedText() );
}
- if ( "" == $text ) { $text = $nt->getPrefixedText(); }
$style = $this->getInternalLinkAttributesObj( $nt, $text );
- $inside = "";
- if ( "" != $trail ) {
+ $inside = '';
+ if ( '' != $trail ) {
if ( preg_match( $this->linktrail, $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
}
}
- $r = "<a href=\"{$u}\"{$style}>{$prefix}{$text}{$inside}</a>{$trail}";
+ $r = "<a href=\"{$u}\"{$style}{$aprops}>{$prefix}{$text}{$inside}</a>{$trail}";
wfProfileOut( $fname );
return $r;
}
-
+
# Pass a title object, not a title string
- function makeBrokenLinkObj( &$nt, $text = "", $query = "", $trail = "", $prefix = "" )
+ function makeBrokenLinkObj( &$nt, $text = '', $query = '', $trail = '', $prefix = '' )
{
global $wgOut, $wgUser;
-
- $fname = "Skin::makeBrokenLinkObj";
+
+ $fname = 'Skin::makeBrokenLinkObj';
wfProfileIn( $fname );
- if ( "" == $query ) {
- $q = "action=edit";
+ if ( '' == $query ) {
+ $q = 'action=edit';
} else {
- $q = "action=edit&{$query}";
+ $q = 'action=edit&'.$query;
}
$u = $nt->escapeLocalURL( $q );
- if ( "" == $text ) { $text = $nt->getPrefixedText(); }
+ if ( '' == $text ) {
+ $text = htmlspecialchars( $nt->getPrefixedText() );
+ }
$style = $this->getInternalLinkAttributesObj( $nt, $text, "yes" );
- $inside = "";
- if ( "" != $trail ) {
+ $inside = '';
+ if ( '' != $trail ) {
if ( preg_match( $this->linktrail, $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
}
}
- if ( $wgUser->getOption( "highlightbroken" ) ) {
+ if ( $wgUser->getOption( 'highlightbroken' ) ) {
$s = "<a href=\"{$u}\"{$style}>{$prefix}{$text}{$inside}</a>{$trail}";
} else {
$s = "{$prefix}{$text}{$inside}<a href=\"{$u}\"{$style}>?</a>{$trail}";
}
# Pass a title object, not a title string
- function makeStubLinkObj( &$nt, $text = "", $query = "", $trail = "", $prefix = "" )
+ function makeStubLinkObj( &$nt, $text = '', $query = '', $trail = '', $prefix = '' )
{
global $wgOut, $wgUser;
$u = $nt->escapeLocalURL( $query );
- if ( "" == $text ) { $text = $nt->getPrefixedText(); }
- $style = $this->getInternalLinkAttributesObj( $nt, $text, "stub" );
+ if ( '' == $text ) {
+ $text = htmlspecialchars( $nt->getPrefixedText() );
+ }
+ $style = $this->getInternalLinkAttributesObj( $nt, $text, 'stub' );
- $inside = "";
- if ( "" != $trail ) {
+ $inside = '';
+ if ( '' != $trail ) {
if ( preg_match( $this->linktrail, $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
}
}
- if ( $wgUser->getOption( "highlightbroken" ) ) {
+ if ( $wgUser->getOption( 'highlightbroken' ) ) {
$s = "<a href=\"{$u}\"{$style}>{$prefix}{$text}{$inside}</a>{$trail}";
} else {
$s = "{$prefix}{$text}{$inside}<a href=\"{$u}\"{$style}>!</a>{$trail}";
}
return $s;
}
+
+ function makeSelfLinkObj( &$nt, $text = '', $query = '', $trail = '', $prefix = '' )
+ {
+ $u = $nt->escapeLocalURL( $query );
+ if ( '' == $text ) {
+ $text = htmlspecialchars( $nt->getPrefixedText() );
+ }
+ $inside = '';
+ if ( '' != $trail ) {
+ if ( preg_match( $this->linktrail, $trail, $m ) ) {
+ $inside = $m[1];
+ $trail = $m[2];
+ }
+ }
+ return "<strong>{$prefix}{$text}{$inside}</strong>{$trail}";
+ }
+
+ /* these are used extensively in SkinPHPTal, but also some other places */
+ /*static*/ function makeSpecialUrl( $name, $urlaction='' ) {
+ $title = Title::makeTitle( NS_SPECIAL, $name );
+ $this->checkTitle($title, $name);
+ return $title->getLocalURL( $urlaction );
+ }
+ /*static*/ function makeTalkUrl ( $name, $urlaction='' ) {
+ $title = Title::newFromText( $name );
+ $title = $title->getTalkPage();
+ $this->checkTitle($title, $name);
+ return $title->getLocalURL( $urlaction );
+ }
+ /*static*/ function makeArticleUrl ( $name, $urlaction='' ) {
+ $title = Title::newFromText( $name );
+ $title= $title->getSubjectPage();
+ $this->checkTitle($title, $name);
+ return $title->getLocalURL( $urlaction );
+ }
+ /*static*/ function makeI18nUrl ( $name, $urlaction='' ) {
+ $title = Title::newFromText( wfMsg($name) );
+ $this->checkTitle($title, $name);
+ return $title->getLocalURL( $urlaction );
+ }
+ /*static*/ function makeUrl ( $name, $urlaction='' ) {
+ $title = Title::newFromText( $name );
+ $this->checkTitle($title, $name);
+ return $title->getLocalURL( $urlaction );
+ }
+ # this can be passed the NS number as defined in Language.php
+ /*static*/ function makeNSUrl( $name, $urlaction='', $namespace=0 ) {
+ $title = Title::makeTitle( $namespace, $name );
+ $this->checkTitle($title, $name);
+ return $title->getLocalURL( $urlaction );
+ }
+
+ /* these return an array with the 'href' and boolean 'exists' */
+ /*static*/ function makeUrlDetails ( $name, $urlaction='' ) {
+ $title = Title::newFromText( $name );
+ $this->checkTitle($title, $name);
+ return array(
+ 'href' => $title->getLocalURL( $urlaction ),
+ 'exists' => $title->getArticleID() != 0?true:false
+ );
+ }
+ /*static*/ function makeTalkUrlDetails ( $name, $urlaction='' ) {
+ $title = Title::newFromText( $name );
+ $title = $title->getTalkPage();
+ $this->checkTitle($title, $name);
+ return array(
+ 'href' => $title->getLocalURL( $urlaction ),
+ 'exists' => $title->getArticleID() != 0?true:false
+ );
+ }
+ /*static*/ function makeArticleUrlDetails ( $name, $urlaction='' ) {
+ $title = Title::newFromText( $name );
+ $title= $title->getSubjectPage();
+ $this->checkTitle($title, $name);
+ return array(
+ 'href' => $title->getLocalURL( $urlaction ),
+ 'exists' => $title->getArticleID() != 0?true:false
+ );
+ }
+ /*static*/ function makeI18nUrlDetails ( $name, $urlaction='' ) {
+ $title = Title::newFromText( wfMsg($name) );
+ $this->checkTitle($title, $name);
+ return array(
+ 'href' => $title->getLocalURL( $urlaction ),
+ 'exists' => $title->getArticleID() != 0?true:false
+ );
+ }
+
+ # make sure we have some title to operate on
+ /*static*/ function checkTitle ( &$title, &$name ) {
+ if(!is_object($title)) {
+ $title = Title::newFromText( $name );
+ if(!is_object($title)) {
+ $title = Title::newFromText( '<error: link target missing>' );
+ }
+ }
+ }
function fnamePart( $url )
{
- $basename = strrchr( $url, "/" );
+ $basename = strrchr( $url, '/' );
if ( false === $basename ) { $basename = $url; }
else { $basename = substr( $basename, 1 ); }
return wfEscapeHTML( $basename );
}
- function makeImage( $url, $alt = "" )
+ function makeImage( $url, $alt = '' )
{
global $wgOut;
- if ( "" == $alt ) { $alt = $this->fnamePart( $url ); }
- $s = "<img src=\"{$url}\" alt=\"{$alt}\" />";
+ if ( '' == $alt ) { $alt = $this->fnamePart( $url ); }
+ $s = '<img src="'.$url.'" alt="'.$alt.'" />';
return $s;
}
- function makeImageLink( $name, $url, $alt = "" ) {
+ function makeImageLink( $name, $url, $alt = '' ) {
$nt = Title::makeTitle( Namespace::getImage(), $name );
return $this->makeImageLinkObj( $nt, $alt );
}
- function makeImageLinkObj( $nt, $alt = "" ) {
+ function makeImageLinkObj( $nt, $alt = '' ) {
global $wgLang, $wgUseImageResize;
- $name = $nt->getDBKey();
- $url = wfImageUrl( $name );
- $align = "";
- $prefix = $postfix = "";
+ $img = Image::newFromTitle( $nt );
+ $url = $img->getURL();
+
+ $align = '';
+ $prefix = $postfix = '';
if ( $wgUseImageResize ) {
# Check if the alt text is of the form "options|alt text"
# * right same, but right aligned
# * none same, but not aligned
# * ___px scale to ___ pixels width, no aligning. e.g. use in taxobox
+ # * center center the image
+ # * framed Keep original image size, no magnify-button.
- $part = explode( "|", $alt);
+ $part = explode( '|', $alt);
$mwThumb =& MagicWord::get( MAG_IMG_THUMBNAIL );
$mwLeft =& MagicWord::get( MAG_IMG_LEFT );
$mwNone =& MagicWord::get( MAG_IMG_NONE );
$mwWidth =& MagicWord::get( MAG_IMG_WIDTH );
$mwCenter =& MagicWord::get( MAG_IMG_CENTER );
+ $mwFramed =& MagicWord::get( MAG_IMG_FRAMED );
$alt = $part[count($part)-1];
- $thumb=false;
+ $height = $framed = $thumb = false;
foreach( $part as $key => $val ) {
if ( ! is_null( $mwThumb->matchVariableStartToEnd($val) ) ) {
$thumb=true;
} elseif ( ! is_null( $mwRight->matchVariableStartToEnd($val) ) ) {
# remember to set an alignment, don't render immediately
- $align = "right";
+ $align = 'right';
} elseif ( ! is_null( $mwLeft->matchVariableStartToEnd($val) ) ) {
# remember to set an alignment, don't render immediately
- $align = "left";
+ $align = 'left';
} elseif ( ! is_null( $mwCenter->matchVariableStartToEnd($val) ) ) {
# remember to set an alignment, don't render immediately
- $align = "center";
+ $align = 'center';
} elseif ( ! is_null( $mwNone->matchVariableStartToEnd($val) ) ) {
# remember to set an alignment, don't render immediately
- $align = "none";
+ $align = 'none';
} elseif ( ! is_null( $match = $mwWidth->matchVariableStartToEnd($val) ) ) {
# $match is the image width in pixels
- $width = intval($match);
+ if ( preg_match( '/^([0-9]*)x([0-9]*)$/', $match, $m ) ) {
+ $width = intval( $m[1] );
+ $height = intval( $m[2] );
+ } else {
+ $width = intval($match);
+ }
+ } elseif ( ! is_null( $mwFramed->matchVariableStartToEnd($val) ) ) {
+ $framed=true;
}
}
- if ( "center" == $align )
+ if ( 'center' == $align )
{
$prefix = '<span style="text-align: center">';
$postfix = '</span>';
- $align = "none";
+ $align = 'none';
}
- if ( $thumb ) {
+ if ( $thumb || $framed ) {
# Create a thumbnail. Alignment depends on language
# writing direction, # right aligned for left-to-right-
#
# If thumbnail width has not been provided, it is set
# here to 180 pixels
- if ( $align == "" ) {
- $align = $wgLang->isRTL() ? "left" : "right";
+ if ( $align == '' ) {
+ $align = $wgLang->isRTL() ? 'left' : 'right';
}
if ( ! isset($width) ) {
$width = 180;
}
- return $prefix.$this->makeThumbLinkObj( $nt, $alt, $align, $width ).$postfix;
+ return $prefix.$this->makeThumbLinkObj( $img, $alt, $align, $width, $height, $framed ).$postfix;
} elseif ( isset($width) ) {
# Create a resized image, without the additional thumbnail
# features
- $url = $this->createThumb( $name, $width );
+
+ if ( ( ! $height === false )
+ && ( $img->getHeight() * $width / $img->getWidth() > $height ) ) {
+ print "height=$height<br>\nimg->getHeight() = ".$img->getHeight()."<br>\n";
+ print 'rescaling by factor '. $height / $img->getHeight() . "<br>\n";
+ $width = $img->getWidth() * $height / $img->getHeight();
+ }
+ $url = $img->createThumb( $width );
}
} # endif $wgUseImageResize
if ( empty( $alt ) ) {
- $alt = preg_replace( '/\.(.+?)^/', '', $name );
+ $alt = preg_replace( '/\.(.+?)^/', '', $img->getName() );
}
$alt = htmlspecialchars( $alt );
$u = $nt->escapeLocalURL();
- if ( $url == "" )
+ if ( $url == '' )
{
- $s = str_replace( "$1", $name, wfMsg("missingimage") );
+ $s = str_replace( "$1", $img->getName(), wfMsg('missingimage') );
+ $s .= "<br>{$alt}<br>{$url}<br>\n";
} else {
- $s = "\n <a href=\"{$u}\" class='image' title=\"{$alt}\">\n" .
- " <img src=\"{$url}\" alt=\"{$alt}\" />\n </a>";
+ $s = '<a href="'.$u.'" class="image" title="'.$alt.'">' .
+ '<img src="'.$url.'" alt="'.$alt.'" /></a>';
}
- if ( "" != $align ) {
- $s = "<div class=\"float{$align}\"><span>{$s}\n</span></div>";
+ if ( '' != $align ) {
+ $s = "<div class=\"float{$align}\"><span>{$s}</span></div>";
}
- return $prefix.$s.$postfix;
+ return str_replace("\n", ' ',$prefix.$s.$postfix);
}
- function createThumb( $name, $width ) {
- global $wgUploadDirectory;
- global $wgImageMagickConvertCommand;
- global $wgUseImageMagick;
- global $wgUseSquid, $wgInternalServer;
- $imgPath = wfImagePath( $name );
- $thumbName = $width."px-".$icon.$name;
- $thumbPath = wfImageThumbDir( $thumbName )."/".$thumbName;
- $thumbUrl = wfImageThumbUrl( $thumbName );
-
- if ( ! file_exists( $imgPath ) )
- {
- # If there is no image, there will be no thumbnail
- return "";
- }
-
- if ( (! file_exists( $thumbPath ) )
- || ( filemtime($thumbPath) < filemtime($imgPath) ) ) {
- # Squid purging
- if ( $wgUseSquid ) {
- $urlArr = Array(
- $wgInternalServer.$thumbUrl
- );
- wfPurgeSquidServers($urlArr);
- }
-
- if ( $wgUseImageMagick ) {
- # use ImageMagick
- $cmd = $wgImageMagickConvertCommand .
- " -quality 85 -geometry {$width} ".
- escapeshellarg($imgPath) . " " .
- escapeshellarg($thumbPath);
- $conv = shell_exec( $cmd );
- } else {
- # Use PHP's builtin GD library functions.
- #
- # First find out what kind of file this is, and select the correct
- # input routine for this.
- list($src_width, $src_height, $src_type, $src_attr) = getimagesize( $imgPath );
- switch( $src_type ) {
- case 1: # GIF
- $src_image = imagecreatefromgif( $imgPath );
- break;
- case 2: # JPG
- $src_image = imagecreatefromjpeg( $imgPath );
- break;
- case 3: # PNG
- $src_image = imagecreatefrompng( $imgPath );
- break;
- case 15: # WBMP for WML
- $src_image = imagecreatefromwbmp( $imgPath );
- break;
- case 16: # XBM
- $src_image = imagecreatefromxbm( $imgPath );
- break;
- default:
- return "Image type not supported";
- break;
- }
- $height = floor( $src_height * ( $width/$src_width ) );
- $dst_image = imagecreatetruecolor( $width, $height );
- imagecopyresampled( $dst_image, $src_image,
- 0,0,0,0,
- $width, $height, $src_width, $src_height );
- switch( $src_type ) {
- case 1: # GIF
- case 3: # PNG
- case 15: # WBMP
- case 16: # XBM
- #$thumbUrl .= ".png";
- #$thumbPath .= ".png";
- imagepng( $dst_image, $thumbPath );
- break;
- case 2: # JPEG
- #$thumbUrl .= ".jpg";
- #$thumbPath .= ".jpg";
- imageinterlace( $dst_image );
- imagejpeg( $dst_image, $thumbPath, 95 );
- break;
- default:
- break;
- }
- imagedestroy( $dst_image );
- imagedestroy( $src_image );
-
-
- }
- #
- # Check for zero-sized thumbnails. Those can be generated when
- # no disk space is available or some other error occurs
- #
- $thumbstat = stat( $thumbPath );
- $imgstat = stat( $imgPath );
- if( $thumbstat["size"] == 0 )
- {
- unlink( $thumbPath );
- }
- }
- return $thumbUrl;
- }
-
- function makeThumbLinkObj( $nt, $label = "", $align = "right", $boxwidth = 180 ) {
- global $wgUploadPath, $wgLang;
- $name = $nt->getDBKey();
- $image = Title::makeTitle( Namespace::getImage(), $name );
- $url = wfImageUrl( $name );
- $path = wfImagePath( $name );
+ function makeThumbLinkObj( $img, $label = '', $align = 'right', $boxwidth = 180, $boxheight=false, $framed=false ) {
+ global $wgStylePath, $wgLang;
+ # $image = Title::makeTitle( Namespace::getImage(), $name );
+ $url = $img->getURL();
#$label = htmlspecialchars( $label );
- $alt = preg_replace( "/<[^>]*>/", "", $label);
+ $alt = preg_replace( '/<[^>]*>/', '', $label);
$alt = htmlspecialchars( $alt );
- if ( file_exists( $path ) )
+ if ( $img->exists() )
{
- list($width, $height, $type, $attr) = getimagesize( $path );
+ $width = $img->getWidth();
+ $height = $img->getHeight();
} else {
$width = $height = 200;
}
- $boxheight = intval( $height/($width/$boxwidth) );
- if ( $boxwidth > $width ) {
+ if ( $framed )
+ {
+ // Use image dimensions, don't scale
$boxwidth = $width;
+ $oboxwidth = $boxwidth + 2;
$boxheight = $height;
+ $thumbUrl = $url;
+ } else {
+ $h = intval( $height/($width/$boxwidth) );
+ $oboxwidth = $boxwidth + 2;
+ if ( ( ! $boxheight === false ) && ( $h > $boxheight ) )
+ {
+ $boxwidth *= $boxheight/$h;
+ } else {
+ $boxheight = $h;
+ }
+ $thumbUrl = $img->createThumb( $boxwidth );
}
-
- $thumbUrl = $this->createThumb( $name, $boxwidth );
- $u = $nt->escapeLocalURL();
+ $u = $img->getEscapeLocalURL();
- $more = htmlspecialchars( wfMsg( "thumbnail-more" ) );
- $magnifyalign = $wgLang->isRTL() ? "left" : "right";
- $textalign = $wgLang->isRTL() ? " style=\"text-align:right\"" : "";
+ $more = htmlspecialchars( wfMsg( 'thumbnail-more' ) );
+ $magnifyalign = $wgLang->isRTL() ? 'left' : 'right';
+ $textalign = $wgLang->isRTL() ? ' style="text-align:right"' : '';
- $s = "<div class=\"thumbnail-{$align}\" style=\"width:{$boxwidth}px;\"><div>";
- if ( $thumbUrl == "" ) {
- $s .= str_replace( "$1", $name, wfMsg("missingimage") );
+ $s = "<div class=\"thumb t{$align}\"><div style=\"width:{$oboxwidth}px;\">";
+ if ( $thumbUrl == '' ) {
+ $s .= str_replace( "$1", $img->getName(), wfMsg('missingimage') );
+ $zoomicon = '';
} else {
- $s .= "\n".' <a href="'.$u.'" class="internal" title="'.$alt.'">'."\n".
- ' <img src="'.$thumbUrl.'" alt="'.$alt.'" ' .
- ' width="'.$boxwidth.'" height="'.$boxheight.'" /></a>' ."\n".
- ' <a href="'.$u.'" class="internal" title="'.$more.'"> ' ."\n".
- ' <img src="'.$wgUploadPath.'/magnify-clip.png" ' .
- 'width="26" height="24" align="'.$magnifyalign.'" alt="'.$more.'" /> </a>'."\n";
- }
- $s .= ' <p'.$textalign.'>'.$label."</p>\n</div></div>";
- return $s;
+ $s .= '<a href="'.$u.'" class="internal" title="'.$alt.'">'.
+ '<img src="'.$thumbUrl.'" alt="'.$alt.'" ' .
+ 'width="'.$boxwidth.'" height="'.$boxheight.'" /></a>';
+ if ( $framed ) {
+ $zoomicon="";
+ } else {
+ $zoomicon = '<div class="magnify" style="float:'.$magnifyalign.'">'.
+ '<a href="'.$u.'" class="internal" title="'.$more.'">'.
+ '<img src="'.$wgStylePath.'/images/magnify-clip.png" ' .
+ 'width="15" height="11" alt="'.$more.'" /></a></div>';
+ }
+ }
+ $s .= ' <div class="thumbcaption" '.$textalign.'>'.$zoomicon.$label."</div></div></div>";
+ return str_replace("\n", ' ', $s);
}
function makeMediaLink( $name, $url, $alt = "" ) {
function makeMediaLinkObj( $nt, $alt = "" )
{
- $name = $nt->getDBKey();
- $url = wfImageUrl( $name );
- if ( empty( $alt ) ) {
- $alt = preg_replace( '/\.(.+?)^/', '', $name );
+ if ( ! isset( $nt ) )
+ {
+ ### HOTFIX. Instead of breaking, return empry string.
+ $s = $alt;
+ } else {
+ $name = $nt->getDBKey();
+ $url = Image::wfImageUrl( $name );
+ if ( empty( $alt ) ) {
+ $alt = preg_replace( '/\.(.+?)^/', '', $name );
+ }
+
+ $u = htmlspecialchars( $url );
+ $s = "<a href=\"{$u}\" class='internal' title=\"{$alt}\">{$alt}</a>";
}
-
- $u = htmlspecialchars( $url );
- $s = "<a href=\"{$u}\" class='internal' title=\"{$alt}\">{$alt}</a>";
return $s;
}
{
global $wgLang;
- if ( "" == $key ) { $key = strtolower( $name ); }
+ if ( '' == $key ) { $key = strtolower( $name ); }
$pn = $wgLang->ucfirst( $name );
return $this->makeKnownLink( $wgLang->specialPage( $pn ),
wfMsg( $key ) );
}
+
+ function makeExternalLink( $url, $text, $escape = true ) {
+ $style = $this->getExternalLinkAttributes( $url, $text );
+ $url = htmlspecialchars( $url );
+ if( $escape ) {
+ $text = htmlspecialchars( $text );
+ }
+ return '<a href="'.$url.'"'.$style.'>'.$text.'</a>';
+ }
# Called by history lists and recent changes
#
$this->rc_cache = array() ;
$this->rcMoveIndex = 0;
$this->rcCacheIndex = 0 ;
- $this->lastdate = "";
- return "";
+ $this->lastdate = '';
+ $this->rclistOpen = false;
+ return '';
}
function beginImageHistoryList()
{
- $s = "\n<h2>" . wfMsg( "imghistory" ) . "</h2>\n" .
- "<p>" . wfMsg( "imghistlegend" ) . "\n<ul class='special'>";
+ $s = "\n<h2>" . wfMsg( 'imghistory' ) . "</h2>\n" .
+ "<p>" . wfMsg( 'imghistlegend' ) . "</p>\n".'<ul class="special">';
return $s;
}
function endRecentChangesList()
{
$s = $this->recentChangesBlock() ;
- $s .= "</ul>\n";
+ if( $this->rclistOpen ) {
+ $s .= "</ul>\n";
+ }
return $s;
}
# Enhanced RC ungrouped line
function recentChangesBlockLine ( $rcObj )
{
- global $wgUploadPath, $wgLang ;
+ global $wgStylePath, $wgLang ;
# Get rc_xxxx variables
extract( $rcObj->mAttribs ) ;
- $curIdEq = "curid=$rc_cur_id";
+ $curIdEq = 'curid='.$rc_cur_id;
# Spacer image
- $r = "" ;
+ $r = '' ;
- $r .= "<img src='{$wgUploadPath}/Arr_.png' width='12' height='12' border='0' />" ; $r .= "<tt>" ;
+ $r .= '<img src="'.$wgStylePath.'/images/Arr_.png" width="12" height="12" border="0" />' ;
+ $r .= '<tt>' ;
if ( $rc_type == RC_MOVE ) {
- $r .= " ";
+ $r .= ' ';
} else {
# M & N (minor & new)
- $M = wfMsg( "minoreditletter" );
- $N = wfMsg( "newpageletter" );
+ $M = wfMsg( 'minoreditletter' );
+ $N = wfMsg( 'newpageletter' );
if ( $rc_type == RC_NEW ) {
$r .= $N ;
} else {
- $r .= " " ;
+ $r .= ' ' ;
}
if ( $rc_minor ) {
$r .= $M ;
} else {
- $r .= " " ;
+ $r .= ' ' ;
}
}
# Timestamp
- $r .= " ".$rcObj->timestamp." " ;
- $r .= "</tt>" ;
+ $r .= ' '.$rcObj->timestamp.' ' ;
+ $r .= '</tt>' ;
# Article link
$link = $rcObj->link ;
- if ( $rcObj->watched ) $link = "<strong>{$link}</strong>" ;
+ if ( $rcObj->watched ) $link = '<strong>'.$link.'</strong>' ;
$r .= $link ;
# Cur
- $r .= " (" ;
+ $r .= ' (' ;
$r .= $rcObj->curlink ;
- $r .= "; " ;
+ $r .= '; ' ;
# Hist
- $r .= $this->makeKnownLinkObj( $rcObj->getTitle(), wfMsg( "hist" ), "{$curIdEq}&action=history" );
+ $r .= $this->makeKnownLinkObj( $rcObj->getTitle(), wfMsg( 'hist' ), $curIdEq.'&action=history' );
# User/talk
- $r .= ") . . ".$rcObj->userlink ;
+ $r .= ') . . '.$rcObj->userlink ;
$r .= $rcObj->usertalklink ;
# Comment
- if ( $rc_comment != "" && $rc_type != RC_MOVE ) {
+ if ( $rc_comment != '' && $rc_type != RC_MOVE ) {
$rc_comment=$this->formatComment($rc_comment);
- $r .= $wgLang->emphasize( " (".$rc_comment.")" );
+ $r .= $wgLang->emphasize( ' ('.$rc_comment.')' );
}
$r .= "<br />\n" ;
# Enhanced RC group
function recentChangesBlockGroup ( $block )
{
- global $wgUploadPath, $wgLang ;
+ global $wgStylePath, $wgLang ;
- $r = "" ;
- $M = wfMsg( "minoreditletter" );
- $N = wfMsg( "newpageletter" );
+ $r = '' ;
+ $M = wfMsg( 'minoreditletter' );
+ $N = wfMsg( 'newpageletter' );
# Collate list of users
$isnew = false ;
if ( !isset ( $userlinks[$u] ) ) $userlinks[$u] = 0 ;
$userlinks[$u]++ ;
}
-
+
# Sort the list and convert to text
krsort ( $userlinks ) ;
asort ( $userlinks ) ;
if ( $count > 1 ) $text .= " ({$count}×)" ;
array_push ( $users , $text ) ;
}
- $users = " <font size='-1'>[".implode("; ",$users)."]</font>" ;
+ $users = ' <font size="-1">['.implode('; ',$users).']</font>' ;
# Arrow
- $rci = "RCI{$this->rcCacheIndex}" ;
- $rcl = "RCL{$this->rcCacheIndex}" ;
- $rcm = "RCM{$this->rcCacheIndex}" ;
- $toggleLink = "javascript:toggleVisibility(\"{$rci}\",\"{$rcm}\",\"{$rcl}\")" ;
- $arrowdir = $wgLang->isRTL() ? "l" : "r";
- $tl = "<span id='{$rcm}'><a href='$toggleLink'><img src='{$wgUploadPath}/Arr_{$arrowdir}.png' width='12' height='12' /></a></span>" ;
- $tl .= "<span id='{$rcl}' style='display:none'><a href='$toggleLink'><img src='{$wgUploadPath}/Arr_d.png' width='12' height='12' /></a></span>" ;
+ $rci = 'RCI'.$this->rcCacheIndex ;
+ $rcl = 'RCL'.$this->rcCacheIndex ;
+ $rcm = 'RCM'.$this->rcCacheIndex ;
+ $toggleLink = "javascript:toggleVisibility('$rci','$rcm','$rcl')" ;
+ $arrowdir = $wgLang->isRTL() ? 'l' : 'r';
+ $tl = '<span id="'.$rcm.'"><a href="'.$toggleLink.'"><img src="'.$wgStylePath.'/images/Arr_'.$arrowdir.'.png" width="12" height="12" /></a></span>' ;
+ $tl .= '<span id="'.$rcl.'" style="display:none"><a href="'.$toggleLink.'"><img src="'.$wgStylePath.'/images/Arr_d.png" width="12" height="12" /></a></span>' ;
$r .= $tl ;
# Main line
# M/N
- $r .= "<tt>" ;
+ $r .= '<tt>' ;
if ( $isnew ) $r .= $N ;
- else $r .= " " ;
- $r .= " " ; # Minor
+ else $r .= ' ' ;
+ $r .= ' ' ; # Minor
# Timestamp
- $r .= " ".$block[0]->timestamp." " ;
- $r .= "</tt>" ;
+ $r .= ' '.$block[0]->timestamp.' ' ;
+ $r .= '</tt>' ;
# Article link
$link = $block[0]->link ;
- if ( $block[0]->watched ) $link = "<strong>{$link}</strong>" ;
+ if ( $block[0]->watched ) $link = '<strong>'.$link.'</strong>' ;
$r .= $link ;
- $curIdEq = "curid=" . $block[0]->mAttribs['rc_cur_id'];
+ $curIdEq = 'curid=' . $block[0]->mAttribs['rc_cur_id'];
if ( $block[0]->mAttribs['rc_type'] != RC_LOG ) {
# Changes
- $r .= " (".count($block)." " ;
- if ( $isnew ) $r .= wfMsg("changes");
- else $r .= $this->makeKnownLinkObj( $block[0]->getTitle() , wfMsg("changes") ,
- "{$curIdEq}&diff=0&oldid=".$oldid ) ;
- $r .= "; " ;
+ $r .= ' ('.count($block).' ' ;
+ if ( $isnew ) $r .= wfMsg('changes');
+ else $r .= $this->makeKnownLinkObj( $block[0]->getTitle() , wfMsg('changes') ,
+ $curIdEq.'&diff=0&oldid='.$oldid ) ;
+ $r .= '; ' ;
# History
- $r .= $this->makeKnownLinkObj( $block[0]->getTitle(), wfMsg( "history" ), "{$curIdEq}&action=history" );
- $r .= ")" ;
+ $r .= $this->makeKnownLinkObj( $block[0]->getTitle(), wfMsg( 'history' ), $curIdEq.'&action=history' );
+ $r .= ')' ;
}
$r .= $users ;
$r .= "<br />\n" ;
# Sub-entries
- $r .= "<div id='{$rci}' style='display:none'>" ;
+ $r .= '<div id="'.$rci.'" style="display:none">' ;
foreach ( $block AS $rcObj ) {
# Get rc_xxxx variables
extract( $rcObj->mAttribs );
- $r .= "<img src='{$wgUploadPath}/Arr_.png' width=12 height=12 />";
- $r .= "<tt> " ;
+ $r .= '<img src="'.$wgStylePath.'/images/Arr_.png" width="12" height="12" />';
+ $r .= '<tt> ' ;
if ( $rc_new ) $r .= $N ;
- else $r .= " " ;
+ else $r .= ' ' ;
if ( $rc_minor ) $r .= $M ;
- else $r .= " " ;
- $r .= "</tt>" ;
+ else $r .= ' ' ;
+ $r .= '</tt>' ;
- $o = "" ;
+ $o = '' ;
if ( $rc_last_oldid != 0 ) {
- $o = "oldid=".$rc_last_oldid ;
+ $o = 'oldid='.$rc_last_oldid ;
}
if ( $rc_type == RC_LOG ) {
$link = $rcObj->timestamp ;
} else {
$link = $this->makeKnownLinkObj( $rcObj->getTitle(), $rcObj->timestamp , "{$curIdEq}&$o" ) ;
}
- $link = "<tt>{$link}</tt>" ;
+ $link = '<tt>'.$link.'</tt>' ;
$r .= $link ;
- $r .= " (" ;
+ $r .= ' (' ;
$r .= $rcObj->curlink ;
- $r .= "; " ;
+ $r .= '; ' ;
$r .= $rcObj->lastlink ;
- $r .= ") . . ".$rcObj->userlink ;
+ $r .= ') . . '.$rcObj->userlink ;
$r .= $rcObj->usertalklink ;
- if ( $rc_comment != "" ) {
+ if ( $rc_comment != '' ) {
$rc_comment=$this->formatComment($rc_comment);
- $r .= $wgLang->emphasize( " (".$rc_comment.")" ) ;
+ $r .= $wgLang->emphasize( ' ('.$rc_comment.')' ) ;
}
$r .= "<br />\n" ;
}
# RC lines, arranges them, and outputs the HTML
function recentChangesBlock ()
{
- global $wgUploadPath ;
- if ( count ( $this->rc_cache ) == 0 ) return "" ;
- $blockOut = "";
+ global $wgStylePath ;
+ if ( count ( $this->rc_cache ) == 0 ) return '' ;
+ $blockOut = '';
foreach ( $this->rc_cache AS $secureName => $block ) {
if ( count ( $block ) < 2 ) {
$blockOut .= $this->recentChangesBlockLine ( array_shift ( $block ) ) ;
}
}
- return "<div>{$blockOut}</div>" ;
+ return '<div>'.$blockOut.'</div>' ;
}
# Called in a loop over all displayed RC entries
function recentChangesLine( &$rc, $watched = false )
{
global $wgUser ;
- $usenew = $wgUser->getOption( "usenewrc" );
+ $usenew = $wgUser->getOption( 'usenewrc' );
if ( $usenew )
$line = $this->recentChangesLineNew ( $rc, $watched ) ;
else
# Extract DB fields into local scope
extract( $rc->mAttribs );
- $curIdEq = "curid=" . $rc_cur_id;
+ $curIdEq = 'curid=' . $rc_cur_id;
# Make date header if necessary
$date = $wgLang->date( $rc_timestamp, true);
- $s = "";
+ $s = '';
if ( $date != $this->lastdate ) {
- if ( "" != $this->lastdate ) { $s .= "</ul>\n"; }
+ if ( '' != $this->lastdate ) { $s .= "</ul>\n"; }
$s .= "<h4>{$date}</h4>\n<ul class='special'>";
$this->lastdate = $date;
+ $this->rclistOpen = true;
}
- $s .= "<li> ";
+ $s .= '<li> ';
if ( $rc_type == RC_MOVE ) {
# Diff
- $s .= "(" . wfMsg( "diff" ) . ") (";
+ $s .= '(' . wfMsg( 'diff' ) . ') (';
# Hist
- $s .= $this->makeKnownLinkObj( $rc->getMovedToTitle(), wfMsg( "hist" ), "action=history" ) .
- ") . . ";
+ $s .= $this->makeKnownLinkObj( $rc->getMovedToTitle(), wfMsg( 'hist' ), 'action=history' ) .
+ ') . . ';
# "[[x]] moved to [[y]]"
- $s .= wfMsg( "1movedto2", $this->makeKnownLinkObj( $rc->getTitle(), "", "redirect=no" ),
- $this->makeKnownLinkObj( $rc->getMovedToTitle(), "" ) );
+ $s .= wfMsg( '1movedto2', $this->makeKnownLinkObj( $rc->getTitle(), '', 'redirect=no' ),
+ $this->makeKnownLinkObj( $rc->getMovedToTitle(), '' ) );
} else {
# Diff link
if ( $rc_type == RC_NEW || $rc_type == RC_LOG ) {
- $diffLink = wfMsg( "diff" );
+ $diffLink = wfMsg( 'diff' );
} else {
- $diffLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "diff" ),
- "{$curIdEq}&diff={$rc_this_oldid}&oldid={$rc_last_oldid}" );
+ $diffLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( 'diff' ),
+ $curIdEq.'&diff='.$rc_this_oldid.'&oldid='.$rc_last_oldid ,'' ,'' , ' tabindex="'.$rc->counter.'"');
}
- $s .= "($diffLink) (";
+ $s .= '('.$diffLink.') (';
# History link
- $s .= $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "hist" ), "{$curIdEq}&action=history" );
- $s .= ") . . ";
+ $s .= $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( 'hist' ), $curIdEq.'&action=history' );
+ $s .= ') . . ';
# M and N (minor and new)
- $M = wfMsg( "minoreditletter" );
- $N = wfMsg( "newpageletter" );
- if ( $rc_minor ) { $s .= " <strong>{$M}</strong>"; }
- if ( $rc_type == RC_NEW ) { $s .= "<strong>{$N}</strong>"; }
+ $M = wfMsg( 'minoreditletter' );
+ $N = wfMsg( 'newpageletter' );
+ if ( $rc_minor ) { $s .= ' <strong>'.$M.'</strong>'; }
+ if ( $rc_type == RC_NEW ) { $s .= '<strong>'.$N.'</strong>'; }
# Article link
- $articleLink = $this->makeKnownLinkObj( $rc->getTitle(), "" );
+ $articleLink = $this->makeKnownLinkObj( $rc->getTitle(), '' );
if ( $watched ) {
- $articleLink = "<strong>{$articleLink}</strong>";
+ $articleLink = '<strong>'.$articleLink.'</strong>';
}
- $s .= " $articleLink";
+ $s .= ' '.$articleLink;
}
# Timestamp
- $s .= "; " . $wgLang->time( $rc_timestamp, true, $wgRCSeconds ) . " . . ";
+ $s .= '; ' . $wgLang->time( $rc_timestamp, true, $wgRCSeconds ) . ' . . ';
# User link (or contributions for unregistered users)
if ( 0 == $rc_user ) {
- $userLink = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
- $rc_user_text, "target=" . $rc_user_text );
+ $userLink = $this->makeKnownLink( $wgLang->specialPage( 'Contributions' ),
+ $rc_user_text, 'target=' . $rc_user_text );
} else {
- $userLink = $this->makeLink( $wgLang->getNsText( NS_USER ) . ":{$rc_user_text}", $rc_user_text );
+ $userLink = $this->makeLink( $wgLang->getNsText( NS_USER ) . ':'.$rc_user_text, $rc_user_text );
}
$s .= $userLink;
$talkname=$wgLang->getNsText(NS_TALK); # use the shorter name
global $wgDisableAnonTalk;
if( 0 == $rc_user && $wgDisableAnonTalk ) {
- $userTalkLink = "";
+ $userTalkLink = '';
} else {
$utns=$wgLang->getNsText(NS_USER_TALK);
- $userTalkLink= $this->makeLink($utns . ":{$rc_user_text}", $talkname );
+ $userTalkLink= $this->makeLink($utns . ':'.$rc_user_text, $talkname );
}
# Block link
- $blockLink="";
+ $blockLink='';
if ( ( 0 == $rc_user ) && $wgUser->isSysop() ) {
$blockLink = $this->makeKnownLink( $wgLang->specialPage(
- "Blockip" ), wfMsg( "blocklink" ), "ip={$rc_user_text}" );
+ 'Blockip' ), wfMsg( 'blocklink' ), 'ip='.$rc_user_text );
}
if($blockLink) {
- if($userTalkLink) $userTalkLink .= " | ";
+ if($userTalkLink) $userTalkLink .= ' | ';
$userTalkLink .= $blockLink;
}
- if($userTalkLink) $s.=" ({$userTalkLink})";
+ if($userTalkLink) $s.=' ('.$userTalkLink.')';
# Add comment
- if ( "" != $rc_comment && "*" != $rc_comment && $rc_type != RC_MOVE ) {
+ if ( '' != $rc_comment && '*' != $rc_comment && $rc_type != RC_MOVE ) {
$rc_comment=$this->formatComment($rc_comment);
- $s .= $wgLang->emphasize(" (" . $rc_comment . ")");
+ $s .= $wgLang->emphasize(' (' . $rc_comment . ')');
}
$s .= "</li>\n";
# Extract fields from DB into the function scope (rc_xxxx variables)
extract( $rc->mAttribs );
- $curIdEq = "curid=" . $rc_cur_id;
+ $curIdEq = 'curid=' . $rc_cur_id;
# If it's a new day, add the headline and flush the cache
$date = $wgLang->date( $rc_timestamp, true);
- $ret = "" ;
+ $ret = '' ;
if ( $date != $this->lastdate ) {
# Process current cache
$ret = $this->recentChangesBlock () ;
# Make article link
if ( $rc_type == RC_MOVE ) {
- $clink = $this->makeKnownLinkObj( $rc->getTitle(), "", "redirect=no" );
- $clink .= " " . wfMsg("movedto") . " ";
- $clink .= $this->makeKnownLinkObj( $rc->getMovedToTitle(), "" );
+ $clink = $this->makeKnownLinkObj( $rc->getTitle(), '', 'redirect=no' );
+ $clink .= ' ' . wfMsg('movedto') . ' ';
+ $clink .= $this->makeKnownLinkObj( $rc->getMovedToTitle(), '' );
} else {
- $clink = $this->makeKnownLinkObj( $rc->getTitle(), "" ) ;
+ $clink = $this->makeKnownLinkObj( $rc->getTitle(), '' ) ;
}
$time = $wgLang->time( $rc_timestamp, true, $wgRCSeconds );
# Make "cur" link
if ( ( $rc_type == RC_NEW && $rc_this_oldid == 0 ) || $rc_type == RC_LOG || $rc_type == RC_MOVE) {
- $curLink = wfMsg( "cur" );
+ $curLink = wfMsg( 'cur' );
} else {
- $curLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "cur" ),
- "{$curIdEq}&diff=0&oldid={$rc_this_oldid}" );
+ $curLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( 'cur' ),
+ $curIdEq.'&diff=0&oldid='.$rc_this_oldid ,'' ,'' , ' tabindex="'.$baseRC->counter.'"' );
}
# Make "last" link
$titleObj = $rc->getTitle();
if ( $rc_last_oldid == 0 || $rc_type == RC_LOG || $rc_type == RC_MOVE ) {
- $lastLink = wfMsg( "last" );
+ $lastLink = wfMsg( 'last' );
} else {
- $lastLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "last" ),
- "{$curIdEq}&diff={$rc_this_oldid}&oldid={$rc_last_oldid}" );
+ $lastLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( 'last' ),
+ $curIdEq.'&diff='.$rc_this_oldid.'&oldid='.$rc_last_oldid );
}
# Make user link (or user contributions for unregistered users)
if ( 0 == $rc_user ) {
- $userLink = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
- $rc_user_text, "target=" . $rc_user_text );
+ $userLink = $this->makeKnownLink( $wgLang->specialPage( 'Contributions' ),
+ $rc_user_text, 'target=' . $rc_user_text );
} else {
$userLink = $this->makeLink( $wgLang->getNsText(
- Namespace::getUser() ) . ":{$rc_user_text}", $rc_user_text );
+ Namespace::getUser() ) . ':'.$rc_user_text, $rc_user_text );
}
$rc->userlink = $userLink ;
# Make user talk link
$utns=$wgLang->getNsText(NS_USER_TALK);
$talkname=$wgLang->getNsText(NS_TALK); # use the shorter name
- $userTalkLink= $this->makeLink($utns . ":{$rc_user_text}", $talkname );
+ $userTalkLink= $this->makeLink($utns . ':'.$rc_user_text, $talkname );
global $wgDisableAnonTalk;
if ( ( 0 == $rc_user ) && $wgUser->isSysop() ) {
$blockLink = $this->makeKnownLink( $wgLang->specialPage(
- "Blockip" ), wfMsg( "blocklink" ), "ip={$rc_user_text}" );
+ 'Blockip' ), wfMsg( 'blocklink' ), 'ip='.$rc_user_text );
if( $wgDisableAnonTalk )
- $rc->usertalklink = " ({$blockLink})";
+ $rc->usertalklink = ' ('.$blockLink.')';
else
- $rc->usertalklink = " ({$userTalkLink} | {$blockLink})";
+ $rc->usertalklink = ' ('.$userTalkLink.' | '.$blockLink.')';
} else {
if( $wgDisableAnonTalk && ($rc_user == 0) )
- $rc->usertalklink = "";
+ $rc->usertalklink = '';
else
- $rc->usertalklink = " ({$userTalkLink})";
+ $rc->usertalklink = ' ('.$userTalkLink.')';
}
# Put accumulated information into the cache, for later display
$secureName = $title->getPrefixedDBkey();
if ( $rc_type == RC_MOVE ) {
# Use an @ character to prevent collision with page names
- $this->rc_cache["@@" . ($this->rcMoveIndex++)] = array($rc);
+ $this->rc_cache['@@' . ($this->rcMoveIndex++)] = array($rc);
} else {
if ( !isset ( $this->rc_cache[$secureName] ) ) $this->rc_cache[$secureName] = array() ;
array_push ( $this->rc_cache[$secureName] , $rc ) ;
/* This function is called by all recent changes variants, by the page history,
and by the user contributions list. It is responsible for formatting edit
comments. It escapes any HTML in the comment, but adds some CSS to format
- auto-generated comments (from section editing).
+ auto-generated comments (from section editing) and formats [[wikilinks]].
+ Main author: Erik Möller (moeller@scireview.de)
*/
function formatComment($comment)
{
+ global $wgLang;
$comment=wfEscapeHTML($comment);
-
- # format text between /* .. */ with autocomment CSS class
- $comment=preg_replace("/\/\*\s*(.*?)\s*\*\//i",
- "<span class=\"autocomment\">$1</span>",$comment);
+
+ # The pattern for autogen comments is / * foo * /, which makes for
+ # some nasty regex.
+ # We look for all comments, match any text before and after the comment,
+ # add a separator where needed and format the comment itself with CSS
+ while (preg_match('/(.*)\/\*\s*(.*?)\s*\*\/(.*)/', $comment,$match)) {
+ $pre=$match[1];
+ $auto=$match[2];
+ $post=$match[3];
+ $sep='-';
+ if($pre) { $auto = $sep.' '.$auto; }
+ if($post) { $auto .= ' '.$sep; }
+ $auto='<span class="autocomment">'.$auto.'</span>';
+ $comment=$pre.$auto.$post;
+ }
+
+ # format regular and media links - all other wiki formatting
+ # is ignored
+ while(preg_match('/\[\[(.*?)(\|(.*?))*\]\]/',$comment,$match)) {
+
+ $medians = $wgLang->getNsText(Namespace::getMedia()).':';
+ $func='makeLink';
+ if(preg_match('/^'.$medians.'/i',$match[1])) {
+ $func='makeMediaLink';
+ }
+ # Handle link renaming [[foo|text]] will show link as "text"
+ if(isset($match[3]) ) {
+ $comment=
+ preg_replace('/\[\[(.*?)\]\]/',
+ $this->$func($match[1],$match[3]),$comment,1);
+ } else {
+ $comment=
+ preg_replace('/\[\[(.*?)\]\]/',
+ $this->$func($match[1],$match[1]),$comment,1);
+ }
+ }
+
return $comment;
+
}
- function imageHistoryLine( $iscur, $ts, $img, $u, $ut, $size, $c )
+ function imageHistoryLine( $iscur, $timestamp, $img, $user, $usertext, $size, $description )
{
global $wgUser, $wgLang, $wgTitle;
- $dt = $wgLang->timeanddate( $ts, true );
- $del = wfMsg( "deleteimg" );
- $cur = wfMsg( "cur" );
+ $datetime = $wgLang->timeanddate( $timestamp, true );
+ $del = wfMsg( 'deleteimg' );
+ $cur = wfMsg( 'cur' );
if ( $iscur ) {
- $url = wfImageUrl( $img );
+ $url = Image::wfImageUrl( $img );
$rlink = $cur;
if ( $wgUser->isSysop() ) {
- $link = $wgTitle->escapeLocalURL( "image=" . $wgTitle->getPartialURL() .
- "&action=delete" );
+ $link = $wgTitle->escapeLocalURL( 'image=' . $wgTitle->getPartialURL() .
+ '&action=delete' );
$style = $this->getInternalLinkAttributes( $link, $del );
- $dlink = "<a href=\"{$link}\"{$style}>{$del}</a>";
+ $dlink = '<a href="'.$link.'"'.$style.'>'.$del.'</a>';
} else {
$dlink = $del;
}
$url = wfEscapeHTML( wfImageArchiveUrl( $img ) );
if( $wgUser->getID() != 0 ) {
$rlink = $this->makeKnownLink( $wgTitle->getPrefixedText(),
- wfMsg( "revertimg" ), "action=revert&oldimage=" .
- urlencode( $img ) );
+ wfMsg( 'revertimg' ), 'action=revert&oldimage=' .
+ urlencode( $img ) );
$dlink = $this->makeKnownLink( $wgTitle->getPrefixedText(),
- $del, "action=delete&oldimage=" . urlencode( $img ) );
+ $del, 'action=delete&oldimage=' . urlencode( $img ) );
} else {
# Having live active links for non-logged in users
# means that bots and spiders crawling our site can
# inadvertently change content. Baaaad idea.
- $rlink = wfMsg( "revertimg" );
+ $rlink = wfMsg( 'revertimg' );
$dlink = $del;
}
}
- if ( 0 == $u ) { $ul = $ut; }
- else { $ul = $this->makeLink( $wgLang->getNsText(
- Namespace::getUser() ) . ":{$ut}", $ut ); }
-
- $nb = wfMsg( "nbytes", $size );
- $style = $this->getInternalLinkAttributes( $url, $dt );
+ if ( 0 == $user ) {
+ $userlink = $usertext;
+ } else {
+ $userlink = $this->makeLink( $wgLang->getNsText( Namespace::getUser() ) .
+ ':'.$usertext, $usertext );
+ }
+ $nbytes = wfMsg( 'nbytes', $size );
+ $style = $this->getInternalLinkAttributes( $url, $datetime );
- $s = "<li> ({$dlink}) ({$rlink}) <a href=\"{$url}\"{$style}>{$dt}</a>"
- . " . . {$ul} ({$nb})";
+ $s = "<li> ({$dlink}) ({$rlink}) <a href=\"{$url}\"{$style}>{$datetime}</a>"
+ . " . . {$userlink} ({$nbytes})";
- if ( "" != $c && "*" != $c ) {
- $s .= $wgLang->emphasize(" (" . wfEscapeHTML( $c ) . ")");
+ if ( '' != $description && '*' != $description ) {
+ $sk=$wgUser->getSkin();
+ $s .= $wgLang->emphasize(' (' . $sk->formatComment($description) . ')');
}
$s .= "</li>\n";
return $s;
}
function tocIndent($level) {
- return str_repeat( "<div class='tocindent'>\n", $level>0 ? $level : 0 );
+ return str_repeat( '<div class="tocindent">'."\n", $level>0 ? $level : 0 );
}
function tocUnindent($level) {
# parameter level defines if we are on an indentation level
function tocLine( $anchor, $tocline, $level ) {
- $link = "<a href=\"#$anchor\">$tocline</a><br />";
+ $link = '<a href="#'.$anchor.'">'.$tocline.'</a><br />';
if($level) {
- return "$link\n";
+ return $link."\n";
} else {
- return "<div class='tocline'>$link</div>\n";
+ return '<div class="tocline">'.$link."</div>\n";
}
}
function tocTable($toc) {
# note to CSS fanatics: putting this in a div does not work -- div won't auto-expand
# try min-width & co when somebody gets a chance
- $hideline = " <script type='text/javascript'>showTocToggle(\"" . addslashes( wfMsg("showtoc") ) . "\",\"" . addslashes( wfMsg("hidetoc") ) . "\")</script>";
+ $hideline = ' <script type="text/javascript">showTocToggle("' . addslashes( wfMsg('showtoc') ) . '","' . addslashes( wfMsg('hidetoc') ) . '")</script>';
return
- "<table border=\"0\" id=\"toc\"><tr><td align=\"center\">\n".
- "<b>".wfMsg("toc")."</b>" .
+ '<table border="0" id="toc"><tr id="toctitle"><td align="center">'."\n".
+ '<b>'.wfMsg('toc').'</b>' .
$hideline .
- "</td></tr><tr id='tocinside'><td>\n".
+ '</td></tr><tr id="tocinside"><td>'."\n".
$toc."</td></tr></table>\n";
}
# These two do not check for permissions: check $wgTitle->userCanEdit before calling them
function editSectionScript( $section, $head ) {
global $wgTitle, $wgRequest;
- if( $wgRequest->getInt( "oldid" ) && ( $wgRequest->getVal( "diff" ) != "0" ) ) {
+ if( $wgRequest->getInt( 'oldid' ) && ( $wgRequest->getVal( 'diff' ) != '0' ) ) {
return $head;
}
- $url = $wgTitle->escapeLocalURL( "action=edit§ion=$section" );
- return "<span oncontextmenu='document.location=\"$url\";return false;'>{$head}</span>";
+ $url = $wgTitle->escapeLocalURL( 'action=edit§ion='.$section );
+ return '<span oncontextmenu=\'document.location="'.$url.'";return false;\'>'.$head.'</span>';
}
function editSectionLink( $section ) {
global $wgRequest;
global $wgTitle, $wgUser, $wgLang;
- if( $wgRequest->getInt( "oldid" ) && ( $wgRequest->getVal( "diff" ) != "0" ) ) {
+ if( $wgRequest->getInt( 'oldid' ) && ( $wgRequest->getVal( 'diff' ) != '0' ) ) {
# Section edit links would be out of sync on an old page.
# But, if we're diffing to the current page, they'll be
# correct.
- return "";
+ return '';
}
- $editurl = "§ion={$section}";
- $url = $this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg("editsection"),"action=edit".$editurl);
+ $editurl = '§ion='.$section;
+ $url = $this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('editsection'),'action=edit'.$editurl);
if( $wgLang->isRTL() ) {
- $farside = "left";
- $nearside = "right";
+ $farside = 'left';
+ $nearside = 'right';
} else {
- $farside = "right";
- $nearside = "left";
+ $farside = 'right';
+ $nearside = 'left';
}
return "<div class=\"editsection\" style=\"float:$farside;margin-$nearside:5px;\">[".$url."]</div>";
// toolbar for common editing functions. It can be disabled in the user preferences.
// The necsesary JavaScript code can be found in style/wikibits.js.
function getEditToolbar() {
- global $wgUploadPath, $wgLang, $wgMimeType;
+ global $wgStylePath, $wgLang, $wgMimeType;
// toolarray an array of arrays which each include the filename of
// the button image (without path), the opening tag, the closing tag,
// and optionally a sample text that is inserted between the two when no
// selection is highlighted.
// The tip text is shown when the user moves the mouse over the button.
+
+ // Already here are accesskeys (key), which are not used yet until someone
+ // can figure out a way to make them work in IE. However, we should make
+ // sure these keys are not defined on the edit page.
$toolarray=array(
- array( "image"=>"button_bold.png",
- "open"=>"\'\'\'",
- "close"=>"\'\'\'",
- "sample"=>wfMsg("bold_sample"),
- "tip"=>wfMsg("bold_tip")),
+ array( 'image'=>'button_bold.png',
+ 'open'=>"\'\'\'",
+ 'close'=>"\'\'\'",
+ 'sample'=>wfMsg('bold_sample'),
+ 'tip'=>wfMsg('bold_tip'),
+ 'key'=>'B'
+ ),
array( "image"=>"button_italic.png",
"open"=>"\'\'",
"close"=>"\'\'",
"sample"=>wfMsg("italic_sample"),
- "tip"=>wfMsg("italic_tip")),
+ "tip"=>wfMsg("italic_tip"),
+ "key"=>"I"
+ ),
array( "image"=>"button_link.png",
"open"=>"[[",
"close"=>"]]",
"sample"=>wfMsg("link_sample"),
- "tip"=>wfMsg("link_tip")),
+ "tip"=>wfMsg("link_tip"),
+ "key"=>"L"
+ ),
array( "image"=>"button_extlink.png",
"open"=>"[",
"close"=>"]",
"sample"=>wfMsg("extlink_sample"),
- "tip"=>wfMsg("extlink_tip")),
+ "tip"=>wfMsg("extlink_tip"),
+ "key"=>"X"
+ ),
array( "image"=>"button_headline.png",
"open"=>"\\n== ",
"close"=>" ==\\n",
"sample"=>wfMsg("headline_sample"),
- "tip"=>wfMsg("headline_tip")),
+ "tip"=>wfMsg("headline_tip"),
+ "key"=>"H"
+ ),
array( "image"=>"button_image.png",
"open"=>"[[".$wgLang->getNsText(NS_IMAGE).":",
"close"=>"]]",
"sample"=>wfMsg("image_sample"),
- "tip"=>wfMsg("image_tip")),
+ "tip"=>wfMsg("image_tip"),
+ "key"=>"D"
+ ),
array( "image"=>"button_media.png",
"open"=>"[[".$wgLang->getNsText(NS_MEDIA).":",
"close"=>"]]",
"sample"=>wfMsg("media_sample"),
- "tip"=>wfMsg("media_tip")),
+ "tip"=>wfMsg("media_tip"),
+ "key"=>"M"
+ ),
array( "image"=>"button_math.png",
"open"=>"\\<math\\>",
"close"=>"\\</math\\>",
"sample"=>wfMsg("math_sample"),
- "tip"=>wfMsg("math_tip")),
+ "tip"=>wfMsg("math_tip"),
+ "key"=>"C"
+ ),
array( "image"=>"button_nowiki.png",
"open"=>"\\<nowiki\\>",
"close"=>"\\</nowiki\\>",
"sample"=>wfMsg("nowiki_sample"),
- "tip"=>wfMsg("nowiki_tip")),
+ "tip"=>wfMsg("nowiki_tip"),
+ "key"=>"N"
+ ),
array( "image"=>"button_sig.png",
"open"=>"--~~~~",
"close"=>"",
"sample"=>"",
- "tip"=>wfMsg("sig_tip")),
+ "tip"=>wfMsg("sig_tip"),
+ "key"=>"Y"
+ ),
array( "image"=>"button_hr.png",
"open"=>"\\n----\\n",
"close"=>"",
"sample"=>"",
- "tip"=>wfMsg("hr_tip"))
+ "tip"=>wfMsg("hr_tip"),
+ "key"=>"R"
+ )
);
- $toolbar ="<script type='text/javascript'>\n";
-
- $xml = ($wgMimeType == "text/xml");
- if( $xml ) {
- $toolbar .= "<![CDATA[";
- }
+ $toolbar ="<script type='text/javascript'>\n/*<![CDATA[*/\n";
$toolbar.="document.writeln(\"<div id='toolbar'>\");\n";
foreach($toolarray as $tool) {
- $image=$wgUploadPath."/".$tool["image"];
- $open=$tool["open"];
- $close=$tool["close"];
- $sample = addslashes( $tool["sample"] );
+ $image=$wgStylePath.'/images/'.$tool['image'];
+ $open=$tool['open'];
+ $close=$tool['close'];
+ $sample = addslashes( $tool['sample'] );
// Note that we use the tip both for the ALT tag and the TITLE tag of the image.
// Older browsers show a "speedtip" type message only for ALT.
// Ideally these should be different, realistically they
// probably don't need to be.
- $tip = addslashes( $tool["tip"] );
+ $tip = addslashes( $tool['tip'] );
+
+ #$key = $tool["key"];
+
$toolbar.="addButton('$image','$tip','$open','$close','$sample');\n";
}
$toolbar.="addInfobox('" . addslashes( wfMsg( "infobox" ) ) . "','" . addslashes(wfMsg("infobox_alert")) . "');\n";
$toolbar.="document.writeln(\"</div>\");\n";
- if( $xml ) {
- $toolbar .= "]]>";
- }
- $toolbar.="</script>";
+ $toolbar.="/*]]>*/\n</script>";
return $toolbar;
}
-}
-include_once( "SkinStandard.php" );
-include_once( "SkinNostalgia.php" );
-include_once( "SkinCologneBlue.php" );
-
-if( $wgUseSmarty ) {
- include_once( "SkinSmarty.php" );
}
-if( $wgUsePHPTal ) {
- include_once( "SkinPHPTal.php" );
-}
-
-
?>