-<?
+<?php
+
+include_once( "Feed.php" );
+include_once( "Image.php" );
+
# See skin.doc
# These are the INTERNAL names, which get mapped
# Language class has internationalized names
#
/* private */ $wgValidSkinNames = array(
- "Standard", "Nostalgia", "CologneBlue" #, "Smarty", "Montparnasse"
+ 'standard' => "Standard",
+ 'nostalgia' => "Nostalgia",
+ 'cologneblue' => "CologneBlue"
);
+if( $wgUsePHPTal ) {
+ #$wgValidSkinNames[] = "PHPTal";
+ #$wgValidSkinNames['davinci'] = "DaVinci";
+ #$wgValidSkinNames['mono'] = "Mono";
+ $wgValidSkinNames['monobook'] = "MonoBook";
+ #$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 ;
+ 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 .= " : " ;
+ if ( $t != "" ) $s .= ": " ;
$s .= $t ;
- return $s ;
+ return "<p class='catlinks'>$s</p>";
}
+class RCCacheEntry extends RecentChange
+{
+ var $secureName, $link;
+ var $curlink , $lastlink , $usertalklink , $versionlink ;
+ var $userlink, $timestamp, $watched;
-class RecentChangesClass {
- var $secureName , $displayName , $link , $namespace ;
- var $oldid , $diffid , $timestamp , $curlink , $lastlink , $usertalklink , $versionlink ;
- var $usercomment , $userlink ;
- var $isminor , $isnew , $watched , $islog ;
- } ;
+ function newFromParent( $rc )
+ {
+ $rc2 = new RCCacheEntry;
+ $rc2->mAttribs = $rc->mAttribs;
+ $rc2->mExtra = $rc->mExtra;
+ return $rc2;
+ }
+} ;
class Skin {
/* private */ var $lastdate, $lastline;
-
+ var $linktrail ; # linktrail regexp
var $rc_cache ; # Cache for Enhanced Recent Changes
- var $rccc ; # Recent Changes Cache Counter for visibility toggle
-
+ var $rcCacheIndex ; # Recent Changes Cache Counter for visibility toggle
+ var $rcMoveIndex;
function Skin()
{
+ $this->linktrail = wfMsg("linktrail");
}
function getSkinNames()
{
global $wgOut, $wgUser;
- if ( $wgOut->isQuickbarSupressed() ) { return 0; }
+ if ( $wgOut->isQuickbarSuppressed() ) { return 0; }
$q = $wgUser->getOption( "quickbar" );
if ( "" == $q ) { $q = 0; }
return $q;
}
- function initPage()
+ function initPage( &$out )
{
- global $wgOut, $wgStyleSheetPath;
$fname = "Skin::initPage";
wfProfileIn( $fname );
-
- $wgOut->addLink( "shortcut icon", "", "/favicon.ico" );
- if ( $wgOut->isPrintable() ) { $ss = "wikiprintable.css"; }
- else { $ss = $this->getStylesheet(); }
- $wgOut->addLink( "stylesheet", "", "{$wgStyleSheetPath}/{$ss}" );
+
+ $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" );
- $this->initPage();
+ $this->initPage( $out );
$out->out( $out->headElement() );
$out->out( "\n<body" );
}
$out->out( $this->beforeContent() );
- $out->out( $out->mBodytext );
+ $out->out( $out->mBodytext . "\n" );
$out->out( $this->afterContent() );
function getUserStyles()
{
- $s = "<style type='text/css'><!--\n";
+ global $wgOut, $wgStyleSheetPath;
+ $sheet = $this->getStylesheet();
+ $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 .= "//--></style>\n";
+ $s .= "/* */\n";
+ $s .= "</style>\n";
return $s;
}
} 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" ) ) {
function getBodyOptions()
{
- global $wgUser, $wgTitle, $wgNamespaceBackgrounds, $wgOut, $oldid, $redirect, $diff,$action;
+ global $wgUser, $wgTitle, $wgNamespaceBackgrounds, $wgOut, $wgRequest;
+
+ extract( $wgRequest->getValues( 'oldid', 'redirect', 'diff' ) );
if ( 0 != $wgTitle->getNamespace() ) {
$a = array( "bgcolor" => "#ffffec" );
}
else $a = array( "bgcolor" => "#FFFFFF" );
- if($wgOut->isArticle() && $wgUser->getOption("editondblclick")
- &&
- (!$wgTitle->isProtected() || $wgUser->isSysop())
-
- ) {
- $n = $wgTitle->getPrefixedURL();
+ if($wgOut->isArticle() && $wgUser->getOption("editondblclick") &&
+ (!$wgTitle->isProtected() || $wgUser->isSysop()) ) {
$t = wfMsg( "editthispage" );
$oid = $red = "";
- if ( $redirect ) { $red = "&redirect={$redirect}"; }
- if ( $oldid && ! isset( $diff ) ) {
+ if ( !empty($redirect) ) {
+ $red = "&redirect={$redirect}";
+ }
+ if ( !empty($oldid) && ! isset( $diff ) ) {
$oid = "&oldid={$oldid}";
}
- $s = wfLocalUrlE($n,"action=edit{$oid}{$red}");
+ $s = $wgTitle->getFullURL( "action=edit{$oid}{$red}" );
$s = "document.location = \"" .$s ."\";";
$a += array ("ondblclick" => $s);
$link = str_replace( "_", " ", $link );
$link = wfEscapeHTML( $link );
- if ( $wgOut->isPrintable() ) { $r = " class='printable'"; }
- else { $r = " class='external'"; }
+ $r = " class='external'";
if ( 1 == $wgUser->getOption( "hover" ) ) {
$r .= " title=\"{$link}\"";
$link = str_replace( "_", " ", $link );
$link = wfEscapeHTML( $link );
- if ( $wgOut->isPrintable() ) {
- $r = " class='printable'";
- } else if ( $broken == "stub" ) {
+ if ( $broken == "stub" ) {
$r = " class='stub'";
} else if ( $broken == "yes" ) {
$r = " class='new'";
} else {
- $r = " class='internal'";
+ $r = "";
}
if ( 1 == $wgUser->getOption( "hover" ) ) {
{
global $wgUser, $wgOut;
- if ( $wgOut->isPrintable() ) {
- $r = " class='printable'";
- } else if ( $broken == "stub" ) {
+ if ( $broken == "stub" ) {
$r = " class='stub'";
} else if ( $broken == "yes" ) {
$r = " class='new'";
} else {
- $r = " class='internal'";
+ $r = "";
}
if ( 1 == $wgUser->getOption( "hover" ) ) {
{
global $wgUser, $wgOut, $wgSiteNotice;
- if ( $wgOut->isPrintable() ) {
- $s = $this->pageTitle() . $this->pageSubtitle() . "\n";
- $s .= "\n<div class='bodytext'>";
- return $s;
- }
if( $wgSiteNotice ) {
$note = "\n<div id='notice' style='font-weight: bold; color: red; text-align: center'>$wgSiteNotice</div>\n";
} else {
$borderhack = "class='top'";
}
- $s .= "\n<div id='content'>\n<div id='topbar'>" .
- "<table width='98%' border=0 cellspacing=0><tr>";
+ $s .= "\n<div id='content'>\n<div id='topbar'>\n" .
+ "<table border='0' cellspacing='0' width='98%'>\n<tr>\n";
$shove = ($qb != 0);
$left = ($qb == 1 || $qb == 3);
if($wgLang->isRTL()) $left = !$left;
if ( !$shove ) {
- $s .= "<td class='top' align=left valign=top rowspan='{$rows}'>" .
+ $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";
- $s .= "<td {$borderhack} align='$l' valign='top'>";
+ $s .= "<td {$borderhack} align='$l' valign='top'>\n";
$s .= $this->topLinks() ;
- $s .= "<p class='subtitle'>" . $this->pageTitleLinks();
+ $s .= "<p class='subtitle'>" . $this->pageTitleLinks() . "</p>\n";
$r = $wgLang->isRTL() ? "left" : "right";
- $s .= "</td>\n<td {$borderhack} valign='top' align='$r' nowrap>";
+ $s .= "</td>\n<td {$borderhack} valign='top' align='$r' nowrap='nowrap'>";
$s .= $this->nameAndLogin();
- $s .= "\n<br>" . $this->searchForm() . "</td>";
+ $s .= "\n<br />" . $this->searchForm() . "</td>";
if ( $langlinks ) {
- $s .= "</tr>\n<tr><td class='top' colspan=\"2\">$langlinks</td>";
+ $s .= "</tr>\n<tr>\n<td class='top' colspan=\"2\">$langlinks</td>\n";
}
if ( $shove && !$left ) { # Right
$s .= $this->getQuickbarCompensator( $rows );
}
- $s .= "</tr></table>\n</div>\n";
- $s .= "\n<div id='article'>";
+ $s .= "</tr>\n</table>\n</div>\n";
+ $s .= "\n<div id='article'>\n";
$s .= $this->pageTitle();
$s .= $this->pageSubtitle() ;
$s .= getCategories(); // For some odd reason, zhis can't be a function of the object
- $s .= "\n<p>";
wfProfileOut( $fname );
return $s;
}
function afterContent()
{
global $wgUser, $wgOut, $wgServer;
- global $wgTitle;
+ global $wgTitle, $wgLang;
- if ( $wgOut->isPrintable() ) {
- $s = "\n</div>\n";
-
- $u = htmlspecialchars( $wgServer . $wgTitle->getFullURL() );
- $u = "<a href=\"$u\">$u</a>";
- $rf = wfMsg( "retrievedfrom", $u );
-
- if ( $wgOut->isArticle() ) {
- $lm = "<br>" . $this->lastModified();
- } else { $lm = ""; }
-
- $cr = wfMsg( "gnunote" );
- $s .= "<p><em>{$rf}{$lm} {$cr}</em>\n";
- return $s;
- }
- return $this->doAfterContent();
+ $printfooter = "<div class=\"printfooter\">\n" . $this->printFooter() . "</div>\n";
+ return $printfooter . $this->doAfterContent();
}
-
+
+ function printFooter() {
+ global $wgTitle;
+ $url = htmlspecialchars( $wgTitle->getFullURL() );
+ return "<p>" . wfMsg( "retrievedfrom", "<a href=\"$url\">$url</a>" ) .
+ "</p>\n\n<p>" . $this->pageStats() . "</p>\n";
+ }
+
function doAfterContent()
{
global $wgUser, $wgOut, $wgLang;
wfProfileIn( $fname );
wfProfileIn( "$fname-1" );
- $s = "\n</div><br clear=all>\n";
+ $s = "\n</div><br clear='all' />\n";
$s .= "\n<div id='footer'>";
- $s .= "<table width='98%' border=0 cellspacing=0><tr>";
+ $s .= "<table border='0' cellspacing='0'><tr>";
wfProfileOut( "$fname-1" );
wfProfileIn( "$fname-2" );
$s .= "<td class='bottom' align='$l' valign='top'>";
$s .= $this->bottomLinks();
- $s .= "\n<br>" . $this->mainPageLink()
+ $s .= "\n<br />" . $this->mainPageLink()
. " | " . $this->aboutLink()
. " | " . $this->specialLink( "recentchanges" )
. " | " . $this->searchForm()
- . "<br>" . $this->pageStats();
+ . "<br /><span id='pagestats'>" . $this->pageStats() . "</span>";
$s .= "</td>";
if ( $shove && !$left ) { # Right
function pageTitleLinks()
{
- global $wgOut, $wgTitle, $oldid, $action, $diff, $wgUser, $wgLang, $wgUseApproval ;
+ global $wgOut, $wgTitle, $wgUser, $wgLang, $wgUseApproval, $wgRequest;
+
+ extract( $wgRequest->getValues( 'oldid', 'diff' ) );
+ $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->isArticle() ) {
+ 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>";
}
#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() ) {
- # do not show "You have new messages" text when we are viewing our
- # own talk page
-
- if(!(strcmp($wgTitle->getText(),$wgUser->getName()) == 0 &&
- $wgTitle->getNamespace()==Namespace::getTalk(Namespace::getUser()))) {
- $n =$wgUser->getName();
- $tl = $this->makeKnownLink( $wgLang->getNsText(
- Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}",
- 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 ) ) );
+ if ( $wgUser->getNewtalk() ) {
+ # do not show "You have new messages" text when we are viewing our
+ # own talk page
+
+ if(!(strcmp($wgTitle->getText(),$wgUser->getName()) == 0 &&
+ $wgTitle->getNamespace()==Namespace::getTalk(Namespace::getUser()))) {
+ $n =$wgUser->getName();
+ $tl = $this->makeKnownLink( $wgLang->getNsText(
+ Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}",
+ 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 ) ) );
+ }
return $s;
}
function printableLink()
{
- global $wgOut, $wgTitle, $oldid, $action;
+ global $wgOut, $wgFeedClasses, $wgRequest;
- $q = "";
- foreach( $_GET as $var => $val ) {
- if( $var != "title" && $var != "printable" )
- $q .= urlencode( $var ) . "=" . urlencode( $val );
+ $baseurl = $_SERVER['REQUEST_URI'];
+ if( strpos( "?", $baseurl ) == false ) {
+ $baseurl .= "?";
+ } else {
+ $baseurl .= "&";
}
- if( !empty( $q ) ) $q .= "&";
+ $baseurl = htmlspecialchars( $baseurl );
+ $printurl = $wgRequest->escapeAppendQuery( "printable=yes" );
- $s = $this->makeKnownLink( $wgTitle->getPrefixedText(),
- WfMsg( "printableversion" ), "{$q}printable=yes" );
+ $s = "<a href=\"$printurl\">" . wfMsg( "printableversion" ) . "</a>";
+ if( $wgOut->isSyndicated() ) {
+ foreach( $wgFeedClasses as $format => $class ) {
+ $feedurl = $wgRequest->escapeAppendQuery( "feed=$format" );
+ $s .= " | <a href=\"$feedurl\">{$format}</a>";
+ }
+ }
return $s;
}
{
global $wgOut, $wgTitle, $wgUser;
- $s = "<h1 class='pagetitle'>" . $wgOut->getPageTitle() . "</h1>";
+ $s = "<h1 class='pagetitle'>" . htmlspecialchars( $wgOut->getPageTitle() ) . "</h1>";
if($wgUser->getOption("editsectiononrightclick") && $wgTitle->userCanEdit()) { $s=$this->editSectionScript(0,$s);}
return $s;
}
global $wgExtraSubtitle;
$sub = wfMsg( "fromwikipedia" ) . $wgExtraSubtitle;
}
- if($wgOut->isArticle() && $wgNamespacesWithSubpages[$wgTitle->getNamespace()]) {
+ if($wgOut->isArticle() && !empty($wgNamespacesWithSubpages[$wgTitle->getNamespace()])) {
$ptext=$wgTitle->getPrefixedText();
if(preg_match("/\//",$ptext)) {
$sub.="</p><p class='subpages'>";
}
}
}
- $s = "<p class='subtitle'>{$sub}\n";
+ $s = "<p class='subtitle'>{$sub}</p>\n";
return $s;
}
function nameAndLogin()
{
- global $wgUser, $wgTitle, $wgLang, $wgShowIPinHeader;
+ global $wgUser, $wgTitle, $wgLang, $wgShowIPinHeader, $wgIP;
$li = $wgLang->specialPage( "Userlogin" );
$lo = $wgLang->specialPage( "Userlogout" );
$s = "";
if ( 0 == $wgUser->getID() ) {
- if( $wgShowIPinHeader ) {
- $n = getenv( "REMOTE_ADDR" );
+ if( $wgShowIPinHeader && isset( $_COOKIE[ini_get("session.name")] ) ) {
+ $n = $wgIP;
$tl = $this->makeKnownLink( $wgLang->getNsText(
Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}",
$q = "";
} else { $q = "returnto={$rt}"; }
- $s .= "\n<br>" . $this->makeKnownLink( $li,
+ $s .= "\n<br />" . $this->makeKnownLink( $li,
wfMsg( "login" ), $q );
} else {
$n = $wgUser->getName();
$tl = " ({$tl})";
$s .= $this->makeKnownLink( $wgLang->getNsText(
- Namespace::getUser() ) . ":{$n}", $n ) . "{$tl}<br>" .
+ Namespace::getUser() ) . ":{$n}", $n ) . "{$tl}<br />" .
$this->makeKnownLink( $lo, wfMsg( "logout" ),
"returnto={$rt}" ) . " | " .
$this->specialLink( "preferences" );
return $s;
}
-
+
+ function getSearchLink() {
+ $searchPage =& Title::makeTitle( NS_SPECIAL, "Search" );
+ return $searchPage->getLocalURL();
+ }
+
+ function escapeSearchLink() {
+ return htmlspecialchars( $this->getSearchLink() );
+ }
+
function searchForm()
{
- global $search;
-
- $s = "<form name='search' class='inline' method=get action=\""
- . wfLocalUrl( "" ) . "\">"
- . "<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 value=\"" . wfMsg ("search") . "\"></form>";
+ global $wgRequest;
+ $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>";
return $s;
}
$s = $this->mainPageLink() . $sep
. $this->specialLink( "recentchanges" );
- if ( $wgOut->isArticle() ) {
+ if ( $wgOut->isArticleRelated() ) {
$s .= $sep . $this->editThisPage()
. $sep . $this->historyLink();
}
$sep = " |\n";
$s = "";
- if ( $wgOut->isArticle() ) {
+ if ( $wgOut->isArticleRelated() ) {
$s .= "<strong>" . $this->editThisPage() . "</strong>";
if ( 0 != $wgUser->getID() ) {
$s .= $sep . $this->watchThisPage();
if ( $wgTitle->getNamespace() == Namespace::getUser()
|| $wgTitle->getNamespace() == Namespace::getTalk(Namespace::getUser()) )
- {
+ {
$id=User::idFromName($wgTitle->getText());
$ip=User::isIP($wgTitle->getText());
}
}
if ( $wgUser->isSysop() && $wgTitle->getArticleId() ) {
- $s .= "\n<br>" . $this->deleteThisPage() .
+ $s .= "\n<br />" . $this->deleteThisPage() .
$sep . $this->protectThisPage() .
$sep . $this->moveThisPage();
}
- $s .= "<br>\n" . $this->otherLanguages();
+ $s .= "<br />\n" . $this->otherLanguages();
}
return $s;
}
function pageStats()
{
- global $wgOut, $wgLang, $wgArticle;
- global $oldid, $diff, $wgDisableCounters;
-
+ 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 ( $wgDisableCounters ) {
- $s = "";
- } else {
- $count = $wgArticle->getCount();
- $s = wfMsg( "viewcount", $count );
+ $s = "";
+ if ( !$wgDisableCounters ) {
+ $count = $wgLang->formatNum( $wgArticle->getCount() );
+ if ( $count ) {
+ $s = wfMsg( "viewcount", $count );
+ }
}
$s .= $this->lastModified();
- $s .= " " . wfMsg( "gnunote" );
- return "<span id='pagestats'>{$s}</span>";
+ return $s . " " . $this->getCopyright();
+ }
+
+ 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 $wgUploadPath;
+ $url = htmlspecialchars( "$wgUploadPath/poweredby_mediawiki_88x31.png" );
+ $img = "<a href='http://www.mediawiki.org/'><img src='$url' alt='MediaWiki' /></a>";
+ return $img;
}
function lastModified()
{
global $wgLang, $wgArticle;
-
- $d = $wgLang->timeanddate( $wgArticle->getTimestamp(), true );
- $s = " " . wfMsg( "lastmodified", $d );
+
+ $timestamp = $wgArticle->getTimestamp();
+ if ( $timestamp ) {
+ $d = $wgLang->timeanddate( $wgArticle->getTimestamp(), true );
+ $s = " " . wfMsg( "lastmodified", $d );
+ } else {
+ $s = "";
+ }
return $s;
}
{
if ( "" != $align ) { $a = " align='{$align}'"; }
else { $a = ""; }
-
+
$mp = wfMsg( "mainpage" );
- $s = "<a href=\"" . wfLocalUrlE( urlencode( $mp ) )
- . "\"><img{$a} border=0 src=\""
- . $this->getLogo() . "\" alt=\"" . "[{$mp}]\"></a>";
+ $titleObj = Title::newFromText( $mp );
+ $s = "<a href=\"" . $titleObj->escapeLocalURL()
+ . "\"><img{$a} src=\""
+ . $this->getLogo() . "\" alt=\"" . "[{$mp}]\" /></a>";
return $s;
}
function quickBar()
{
- global $wgOut, $wgTitle, $wgUser, $action, $wgLang;
- global $wpPreview, $wgDisableUploads, $wgRemoteUploads;
+ global $wgOut, $wgTitle, $wgUser, $wgRequest, $wgLang;
+ global $wgDisableUploads, $wgRemoteUploads;
$fname = "Skin::quickBar";
wfProfileIn( $fname );
+ $action = $wgRequest->getText( 'action' );
+ $wpPreview = $wgRequest->getBool( 'wpPreview' );
$tns=$wgTitle->getNamespace();
$s = "\n<div id='quickbar'>";
- $s .= "\n" . $this->logoText() . "\n<hr class='sep'>";
+ $s .= "\n" . $this->logoText() . "\n<hr class='sep' />";
- $sep = "\n<br>";
+ $sep = "\n<br />";
$s .= $this->mainPageLink()
. $sep . $this->specialLink( "recentchanges" )
. $sep . $this->specialLink( "randompage" );
}
// only show watchlist link if logged in
- if ( wfMsg ( "currentevents" ) != "-" ) $s .= $sep . $this->makeKnownLink( wfMsg( "currentevents" ), "" ) ;
- $s .= "\n<br><hr class='sep'>";
+ 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()) {
$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
if( $tns%2 && $action!="edit" && !$wpPreview) {
- $s.="<br>".$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg("postcomment"),"action=edit§ion=new");
+ $s.="<br />".$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg("postcomment"),"action=edit§ion=new");
}
/*
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 ( 0 != $wgUser->getID() && $articleExists) {
- if($action!="edit" && $action!="history" &&
- $action != "submit" )
+ if($action!="edit" && $action != "submit" )
{
- $s .= $sep . $this->watchThisPage();
+ $s .= $sep . $this->watchThisPage();
}
- if ( $wgTitle->userCanEdit() )
+ if ( $wgTitle->userCanEdit() )
$s .= $sep . $this->moveThisPage();
}
if ( $wgUser->isSysop() and $articleExists ) {
$sep . $this->protectThisPage();
}
$s .= $sep . $this->talkLink();
- if ($articleExists && $action !="history") {
+ if ($articleExists && $action !="history") {
$s .= $sep . $this->historyLink();
}
$s.=$sep . $this->whatLinksHere();
- if($wgOut->isArticle()) {
+ if($wgOut->isArticleRelated()) {
$s .= $sep . $this->watchPageLinksLink();
}
}
}
}
- $s .= "\n<br><hr class='sep'>";
+ $s .= "\n<br /><hr class='sep' />";
}
if ( 0 != $wgUser->getID() && ( !$wgDisableUploads || $wgRemoteUploads ) ) {
global $wgSiteSupportPage;
if( $wgSiteSupportPage ) {
- $s .= "\n<br><a href=\"" . htmlspecialchars( $wgSiteSupportPage ) .
+ $s .= "\n<br /><a href=\"" . htmlspecialchars( $wgSiteSupportPage ) .
"\" class=\"internal\">" . wfMsg( "sitesupport" ) . "</a>";
}
- $s .= "\n<br></div>\n";
+ $s .= "\n<br /></div>\n";
wfProfileOut( $fname );
return $s;
}
$spp = $wgLang->specialPage( "Specialpages" );
$s = "<form id=\"specialpages\" method=\"get\" class=\"inline\" " .
- "action=\"{$wgServer}{$wgRedirectScript}\">\n";
+ "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 editThisPage()
{
- global $wgOut, $wgTitle, $oldid, $redirect, $diff;
-
- if ( ! $wgOut->isArticle() || $diff ) {
+ global $wgOut, $wgTitle, $wgRequest;
+
+ $oldid = $wgRequest->getVal( 'oldid' );
+ $diff = $wgRequest->getVal( 'diff' );
+ $redirect = $wgRequest->getVal( 'redirect' );
+
+ if ( ! $wgOut->isArticleRelated() ) {
$s = wfMsg( "protectedpage" );
} else {
$n = $wgTitle->getPrefixedText();
}
$oid = $red = "";
- if ( $redirect ) { $red = "&redirect={$redirect}"; }
+ if ( !is_null( $redirect ) ) { $red = "&redirect={$redirect}"; }
if ( $oldid && ! isset( $diff ) ) {
$oid = "&oldid={$oldid}";
}
function deleteThisPage()
{
- global $wgUser, $wgOut, $wgTitle, $diff;
+ global $wgUser, $wgOut, $wgTitle, $wgRequest;
+ $diff = $wgRequest->getVal( 'diff' );
if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isSysop() ) {
$n = $wgTitle->getPrefixedText();
$t = wfMsg( "deletethispage" );
function protectThisPage()
{
- global $wgUser, $wgOut, $wgTitle, $diff;
+ global $wgUser, $wgOut, $wgTitle, $wgRequest;
+ $diff = $wgRequest->getVal( 'diff' );
if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isSysop() ) {
$n = $wgTitle->getPrefixedText();
function watchThisPage()
{
- global $wgUser, $wgOut, $wgTitle, $diff;
+ global $wgUser, $wgOut, $wgTitle;
- if ( $wgOut->isArticle() && ( ! $diff ) ) {
+ if ( $wgOut->isArticleRelated() ) {
$n = $wgTitle->getPrefixedText();
if ( $wgTitle->userIsWatching() ) {
global $wgTitle, $wgLang;
$s = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
- wfMsg( "contributions" ), "target=" . $wgTitle->getURL() );
+ wfMsg( "contributions" ), "target=" . $wgTitle->getPartialURL() );
return $s;
}
global $wgTitle, $wgLang;
$s = $this->makeKnownLink( $wgLang->specialPage( "Emailuser" ),
- wfMsg( "emailuser" ), "target=" . $wgTitle->getURL() );
+ wfMsg( "emailuser" ), "target=" . $wgTitle->getPartialURL() );
return $s;
}
{
global $wgOut, $wgTitle, $wgLang;
- if ( ! $wgOut->isArticle() ) {
+ if ( ! $wgOut->isArticleRelated() ) {
$s = "(" . wfMsg( "notanarticle" ) . ")";
} else {
$s = $this->makeKnownLink( $wgLang->specialPage(
global $wgOut, $wgLang, $wgTitle, $wgUseNewInterlanguage;
$a = $wgOut->getLanguageLinks();
- # TEST THIS @@@
if ( 0 == count( $a ) ) {
if ( !$wgUseNewInterlanguage ) return "";
$ns = $wgLang->getNsIndex ( $wgTitle->getNamespace () ) ;
$text= wfMsg("articlepage");
}
} else {
-
+
$lns = Namespace::getTalk( $tns );
$text=$tp;
}
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" );
$result = $text == "" ? $title : $text;
- }
-
+ }
+
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;
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" );
}
# Pass a title object, not a title string
- function makeLinkObj( &$nt, $text= "", $query = "", $trail = "" )
+ function makeLinkObj( &$nt, $text= "", $query = "", $trail = "", $prefix = "" )
{
global $wgOut, $wgUser;
if ( $nt->isExternal() ) {
$u = $nt->getFullURL();
+ $link = $nt->getPrefixedURL();
if ( "" == $text ) { $text = $nt->getPrefixedText(); }
$style = $this->getExternalLinkAttributes( $link, $text );
}
$retVal = "<a href=\"{$u}\"{$style}>{$text}{$inside}</a>{$trail}";
} elseif ( 0 == $nt->getNamespace() && "" == $nt->getText() ) {
- $retVal = $this->makeKnownLinkObj( $nt, $text, $query, $trail );
+ $retVal = $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix );
} elseif ( ( -1 == $nt->getNamespace() ) ||
( Namespace::getImage() == $nt->getNamespace() ) ) {
- $retVal = $this->makeKnownLinkObj( $nt, $text, $query, $trail );
+ $retVal = $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix );
} else {
$aid = $nt->getArticleID() ;
if ( 0 == $aid ) {
- $retVal = $this->makeBrokenLinkObj( $nt, $text, $query, $trail );
+ $retVal = $this->makeBrokenLinkObj( $nt, $text, $query, $trail, $prefix );
} else {
$threshold = $wgUser->getOption("stubthreshold") ;
if ( $threshold > 0 ) {
- $res = wfQuery ( "SELECT HIGH_PRIORITY length(cur_text) AS x, cur_namespace, cur_is_redirect FROM cur WHERE cur_id='{$aid}'", DB_READ ) ;
+ $res = wfQuery ( "SELECT LENGTH(cur_text) AS x, cur_namespace, cur_is_redirect FROM cur WHERE cur_id='{$aid}'", DB_READ ) ;
if ( wfNumRows( $res ) > 0 ) {
$s = wfFetchObject( $res );
}
} else {
$size = 1 ;
- }
+ }
if ( $size < $threshold ) {
- $retVal = $this->makeStubLinkObj( $nt, $text, $query, $trail );
+ $retVal = $this->makeStubLinkObj( $nt, $text, $query, $trail, $prefix );
} else {
- $retVal = $this->makeKnownLinkObj( $nt, $text, $query, $trail );
+ $retVal = $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix );
}
}
}
}
# Pass a title object, not a title string
- function makeKnownLinkObj( &$nt, $text = "", $query = "", $trail = "" )
+ function makeKnownLinkObj( &$nt, $text = "", $query = "", $trail = "", $prefix = "" , $aprops = '')
{
global $wgOut, $wgTitle;
if ( "" == $link ) {
$u = "";
- if ( "" == $text ) { $text = $nt->getFragment(); }
+ if ( "" == $text ) {
+ $text = htmlspecialchars( $nt->getFragment() );
+ }
} else {
- $u = wfLocalUrlE( $link, $query );
+ $u = $nt->escapeLocalURL( $query );
}
if ( "" != $nt->getFragment() ) {
- $u .= "#" . wfEscapeHTML( $nt->getFragment() );
+ $u .= "#" . htmlspecialchars( $nt->getFragment() );
+ }
+ if ( "" == $text ) {
+ $text = htmlspecialchars( $nt->getPrefixedText() );
}
- if ( "" == $text ) { $text = $nt->getPrefixedText(); }
$style = $this->getInternalLinkAttributesObj( $nt, $text );
$inside = "";
if ( "" != $trail ) {
- if ( preg_match( wfMsg("linktrail"), $trail, $m ) ) {
+ if ( preg_match( $this->linktrail, $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
}
}
- $r = "<a href=\"{$u}\"{$style}>{$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 = "" )
+ function makeBrokenLinkObj( &$nt, $text = "", $query = "", $trail = "", $prefix = "" )
{
global $wgOut, $wgUser;
-
+
$fname = "Skin::makeBrokenLinkObj";
wfProfileIn( $fname );
- $link = $nt->getPrefixedURL();
-
- if ( "" == $query ) { $q = "action=edit"; }
- else { $q = "action=edit&{$query}"; }
- $u = wfLocalUrlE( $link, $q );
+ if ( "" == $query ) {
+ $q = "action=edit";
+ } else {
+ $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 ) {
- if ( preg_match( wfMsg("linktrail"), $trail, $m ) ) {
+ if ( preg_match( $this->linktrail, $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
}
}
- if ( $wgOut->isPrintable() ||
- ( 1 == $wgUser->getOption( "highlightbroken" ) ) ) {
- $s = "<a href=\"{$u}\"{$style}>{$text}{$inside}</a>{$trail}";
+ if ( $wgUser->getOption( "highlightbroken" ) ) {
+ $s = "<a href=\"{$u}\"{$style}>{$prefix}{$text}{$inside}</a>{$trail}";
} else {
- $s = "{$text}{$inside}<a href=\"{$u}\"{$style}>?</a>{$trail}";
+ $s = "{$prefix}{$text}{$inside}<a href=\"{$u}\"{$style}>?</a>{$trail}";
}
wfProfileOut( $fname );
}
# Pass a title object, not a title string
- function makeStubLinkObj( &$nt, $text = "", $query = "", $trail = "" )
+ function makeStubLinkObj( &$nt, $text = "", $query = "", $trail = "", $prefix = "" )
{
global $wgOut, $wgUser;
$link = $nt->getPrefixedURL();
- $u = wfLocalUrlE( $link, $query );
+ $u = $nt->escapeLocalURL( $query );
- if ( "" == $text ) { $text = $nt->getPrefixedText(); }
+ if ( "" == $text ) {
+ $text = htmlspecialchars( $nt->getPrefixedText() );
+ }
$style = $this->getInternalLinkAttributesObj( $nt, $text, "stub" );
$inside = "";
if ( "" != $trail ) {
- if ( preg_match( wfMsg("linktrail"), $trail, $m ) ) {
+ if ( preg_match( $this->linktrail, $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
}
}
- if ( $wgOut->isPrintable() ||
- ( 1 == $wgUser->getOption( "highlightbroken" ) ) ) {
- $s = "<a href=\"{$u}\"{$style}>{$text}{$inside}</a>{$trail}";
+ if ( $wgUser->getOption( "highlightbroken" ) ) {
+ $s = "<a href=\"{$u}\"{$style}>{$prefix}{$text}{$inside}</a>{$trail}";
} else {
- $s = "{$text}{$inside}<a href=\"{$u}\"{$style}>!</a>{$trail}";
+ $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}";
+ }
function fnamePart( $url )
{
global $wgOut;
if ( "" == $alt ) { $alt = $this->fnamePart( $url ); }
- $s = "<img src=\"{$url}\" alt=\"{$alt}\">";
+ $s = "<img src=\"{$url}\" alt=\"{$alt}\" />";
return $s;
}
function makeImageLinkObj( $nt, $alt = "" ) {
global $wgLang, $wgUseImageResize;
- $link = $nt->getPrefixedURL();
- $name = $nt->getDBKey();
- $url = wfImageUrl( $name );
+ $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);
- if ( count($part) > 1 ) {
- $mwThumb =& MagicWord::get( MAG_IMG_THUMBNAIL );
- $mwLeft =& MagicWord::get( MAG_IMG_LEFT );
- $mwRight =& MagicWord::get( MAG_IMG_RIGHT );
- $mwNone =& MagicWord::get( MAG_IMG_NONE );
- $mwWidth =& MagicWord::get( MAG_IMG_WIDTH );
- $alt = $part[count($part)-1];
-
- $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";
- } elseif ( ! is_null( $mwLeft->matchVariableStartToEnd($val) ) ) {
- # remember to set an alignment, don't render immediately
- $align = "left";
- } elseif ( ! is_null( $mwNone->matchVariableStartToEnd($val) ) ) {
- # remember to set an alignment, don't render immediately
- $align = "none";
- } elseif ( ! is_null( $match = $mwWidth->matchVariableStartToEnd($val) ) ) {
- # $match is the image width in pixels
- $width = intval($match);
- }
+ $mwThumb =& MagicWord::get( MAG_IMG_THUMBNAIL );
+ $mwLeft =& MagicWord::get( MAG_IMG_LEFT );
+ $mwRight =& MagicWord::get( MAG_IMG_RIGHT );
+ $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];
+
+ $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";
+ } elseif ( ! is_null( $mwLeft->matchVariableStartToEnd($val) ) ) {
+ # remember to set an alignment, don't render immediately
+ $align = "left";
+ } elseif ( ! is_null( $mwCenter->matchVariableStartToEnd($val) ) ) {
+ # remember to set an alignment, don't render immediately
+ $align = "center";
+ } elseif ( ! is_null( $mwNone->matchVariableStartToEnd($val) ) ) {
+ # remember to set an alignment, don't render immediately
+ $align = "none";
+ } elseif ( ! is_null( $match = $mwWidth->matchVariableStartToEnd($val) ) ) {
+ # $match is the image width in pixels
+ $width = intval($match);
+ } elseif ( ! is_null( $mwFramed->matchVariableStartToEnd($val) ) ) {
+ $framed=true;
}
}
+ if ( "center" == $align )
+ {
+ $prefix = '<span style="text-align: center">';
+ $postfix = '</span>';
+ $align = "none";
+ }
- if ( $thumb ) {
+ if ( $thumb || $framed ) {
# Create a thumbnail. Alignment depends on language
# writing direction, # right aligned for left-to-right-
if ( ! isset($width) ) {
$width = 180;
}
- return $this->makeThumbLinkObj( $nt, $alt, $align, $width );
+ return $prefix.$this->makeThumbLinkObj( $img, $alt, $align, $width, $framed ).$postfix;
} elseif ( isset($width) ) {
# Create a resized image, without the additional thumbnail
# features
- $url = $this->createThumb( $name, $width );
+ $url = $img->createThumb( $width );
}
} # endif $wgUseImageResize
if ( empty( $alt ) ) {
- $alt = preg_replace( '/\.(.+?)^/', '', $name );
+ $alt = preg_replace( '/\.(.+?)^/', '', $img->getName() );
}
$alt = htmlspecialchars( $alt );
- $u = wfLocalUrlE( $link );
- $s = "<a href=\"{$u}\" class='image' title=\"{$alt}\">" .
- "<img border=\"0\" src=\"{$url}\" alt=\"{$alt}\"></a>";
+ $u = $nt->escapeLocalURL();
+ if ( $url == "" )
+ {
+ $s = str_replace( "$1", $img->getName(), wfMsg("missingimage") );
+ $s .= "<br>{$alt}<br>{$url}<br>\n";
+ } else {
+ $s = "<a href=\"{$u}\" class='image' title=\"{$alt}\">" .
+ "<img src=\"{$url}\" alt=\"{$alt}\" /></a>";
+ }
if ( "" != $align ) {
- $s = "<div class=\"float{$align}\">{$s}</div>";
+ $s = "<div class=\"float{$align}\"><span>{$s}</span>\n</div>";
}
- return $s;
+ return $prefix.$s.$postfix;
}
- function createThumb( $name, $width ) {
- global $wgUploadDirectory;
- global $wgImageMagickConvertCommand;
- $imgPath = wfImagePath( $name );
- $thumbName = $width."px-".$icon.$name;
- $thumbPath = wfImageArchiveDir( $thumbName, "thumb" )."/".$thumbName;
- $thumbUrl = wfImageArchiveUrl( $thumbName, "thumb" );
- if ( (! file_exists( $thumbPath ))
- || ( filemtime($thumbPath) < filemtime($imgPath) ) ) {
- $cmd = $wgImageMagickConvertCommand .
- " -quality 95 -geometry {$width}x ".
- escapeshellarg($imgPath) . " " .
- escapeshellarg($thumbPath);
- $conv = shell_exec( $cmd );
+ function makeThumbLinkObj( $img, $label = "", $align = "right", $boxwidth = 180, $framed=false ) {
+ global $wgUploadPath, $wgLang;
+ # $image = Title::makeTitle( Namespace::getImage(), $name );
+ $url = $img->getURL();
+
+ #$label = htmlspecialchars( $label );
+ $alt = preg_replace( "/<[^>]*>/", "", $label);
+ $alt = htmlspecialchars( $alt );
+
+ if ( $img->exists() )
+ {
+ $width = $img->getWidth();
+ $height = $img->getHeight();
+ } else {
+ $width = $height = 200;
+ }
+ if ( $framed )
+ {
+ // Use image dimensions, don't scale
+ $boxwidth = $width;
+ $boxheight = $height;
+ $thumbUrl = $url;
+ } else {
+ $boxheight = intval( $height/($width/$boxwidth) );
+ if ( $boxwidth > $width ) {
+ $boxwidth = $width;
+ $boxheight = $height;
+ }
+ $thumbUrl = $img->createThumb( $boxwidth );
}
- return $thumbUrl;
- }
+ $oboxwidth = $boxwidth + 2;
- function makeThumbLinkObj( $nt, $label = "", $align = "right", $boxwidth = 180 ) {
- global $wgUploadPath;
- $name = $nt->getDBKey();
- $image = Title::makeTitle( Namespace::getImage(), $name );
- $link = $image->getPrefixedURL();
- $url = wfImageUrl( $name );
- $path = wfImagePath( $name );
-
- list($width, $height, $type, $attr) = getimagesize( $path );
- $cwidth = $boxwidth;
- $cheight = intval( $height/($width/$cwidth) );
- if ($cheight > $boxwidth*1.5) {
- $cheight = $boxwidth*1.3;
- $cwidth = intval( $width/($height/$cheight) );
- }
- if ( $cwidth > $width ) {
- $cwidth = $width;
- $cheight = $height;
- }
-
- $thumbUrl = $this->createThumb( $name, $cwidth );
+ $u = $img->getEscapeLocalURL();
- $u = wfLocalUrlE( $link );
+ $more = htmlspecialchars( wfMsg( "thumbnail-more" ) );
+ $magnifyalign = $wgLang->isRTL() ? "left" : "right";
+ $textalign = $wgLang->isRTL() ? ' style="text-align:right"' : "";
- $more = wfMsg( "thumbnail-more" );
-
- $s = "<div class=\"thumbnail-{$align}\" style=\"width:{$boxwidth}px;\">" .
- "<a href=\"{$u}\" class=\"internal\" title=\"{$label}\">" .
- "<img border=\"0\" src=\"{$thumbUrl}\" alt=\"{$label}\" width=\"{$cwidth}\" height=\"{$cheight}\"></a>" .
- "<a href=\"{$u}\" class=\"internal\" title=\"{$more}\">" .
- "<img border=\"0\" src=\"{$wgUploadPath}/magnify-clip.png\" width=\"26\" height=\"24\" align=\"right\" alt=\"{$more}\"></a>" .
- "<p>{$label}</div></p>";
+ $s = "<div class=\"thumb t{$align}\"\"><div style=\"width:{$oboxwidth}px;\">";
+ if ( $thumbUrl == "" ) {
+ $s .= str_replace( "$1", $img->getName(), wfMsg("missingimage") );
+ $zoomicon = '';
+ } else {
+ $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="'.$wgUploadPath.'/magnify-clip.png" ' .
+ 'width="15" height="11" alt="'.$more.'" /></a></div>';
+ }
+ }
+ $s .= ' <div class="thumbcaption" '.$textalign.'>'.$zoomicon.$label."</div></div>\n</div>";
return $s;
}
function makeMediaLinkObj( $nt, $alt = "" )
{
$name = $nt->getDBKey();
- $url = wfImageUrl( $name );
+ $url = Image::wfImageUrl( $name );
if ( empty( $alt ) ) {
$alt = preg_replace( '/\.(.+?)^/', '', $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
#
+ # Returns text for the start of the tabular part of RC
function beginRecentChangesList()
{
- $rc_cache = array() ;
- $rccc = 0 ;
+ $this->rc_cache = array() ;
+ $this->rcMoveIndex = 0;
+ $this->rcCacheIndex = 0 ;
$this->lastdate = "";
+ $this->rclistOpen = false;
return "";
}
function beginImageHistoryList()
{
$s = "\n<h2>" . wfMsg( "imghistory" ) . "</h2>\n" .
- "<p>" . wfMsg( "imghistlegend" ) . "\n<ul>";
+ "<p>" . wfMsg( "imghistlegend" ) . "</p>\n<ul class='special'>";
return $s;
}
+ # Returns text for the end of RC
+ # If enhanced RC is in use, returns pretty much all the text
function endRecentChangesList()
{
$s = $this->recentChangesBlock() ;
- $s .= "</ul>\n";
+ if( $this->rclistOpen ) {
+ $s .= "</ul>\n";
+ }
return $s;
}
- function endImageHistoryList()
+ # Enhanced RC ungrouped line
+ function recentChangesBlockLine ( $rcObj )
{
- $s = "</ul>\n";
- return $s;
- }
+ global $wgUploadPath, $wgLang ;
- function recentChangesBlockLine ( $y ) {
- global $wgUploadPath ;
+ # Get rc_xxxx variables
+ extract( $rcObj->mAttribs ) ;
+ $curIdEq = "curid=$rc_cur_id";
- $M = wfMsg( "minoreditletter" );
- $N = wfMsg( "newpageletter" );
+ # Spacer image
$r = "" ;
- $r .= "<img src='{$wgUploadPath}/Arr_.png' width=12 height=12 border=0>" ;
- $r .= "<tt>" ;
- if ( $y->isnew ) $r .= $N ;
- else $r .= " " ;
- if ( $y->isminor ) $r .= $M ;
- else $r .= " " ;
- $r .= " ".$y->timestamp." " ;
+
+ $r .= "<img src='{$wgUploadPath}/Arr_.png' width='12' height='12' border='0' />" ; $r .= "<tt>" ;
+
+ if ( $rc_type == RC_MOVE ) {
+ $r .= " ";
+ } else {
+ # M & N (minor & new)
+ $M = wfMsg( "minoreditletter" );
+ $N = wfMsg( "newpageletter" );
+
+ if ( $rc_type == RC_NEW ) {
+ $r .= $N ;
+ } else {
+ $r .= " " ;
+ }
+ if ( $rc_minor ) {
+ $r .= $M ;
+ } else {
+ $r .= " " ;
+ }
+ }
+
+ # Timestamp
+ $r .= " ".$rcObj->timestamp." " ;
$r .= "</tt>" ;
- $link = $y->link ;
- if ( $y->watched ) $link = "<strong>{$link}</strong>" ;
+
+ # Article link
+ $link = $rcObj->link ;
+ if ( $rcObj->watched ) $link = "<strong>{$link}</strong>" ;
$r .= $link ;
+ # Cur
$r .= " (" ;
- $r .= $y->curlink ;
+ $r .= $rcObj->curlink ;
$r .= "; " ;
- $r .= $this->makeKnownLink( $y->secureName, wfMsg( "hist" ), "action=history" );
- $r .= ") . . ".$y->userlink ;
- $r .= $y->usertalklink ;
- if ( $y->usercomment != "" )
- $r .= " <em>(".wfEscapeHTML($y->usercomment).")</em>" ;
- $r .= "<br>\n" ;
- return $r ;
+ # Hist
+ $r .= $this->makeKnownLinkObj( $rcObj->getTitle(), wfMsg( "hist" ), "{$curIdEq}&action=history" );
+
+ # User/talk
+ $r .= ") . . ".$rcObj->userlink ;
+ $r .= $rcObj->usertalklink ;
+
+ # Comment
+ if ( $rc_comment != "" && $rc_type != RC_MOVE ) {
+ $rc_comment=$this->formatComment($rc_comment);
+ $r .= $wgLang->emphasize( " (".$rc_comment.")" );
}
- function recentChangesBlockGroup ( $y ) {
- global $wgUploadPath ;
+ $r .= "<br />\n" ;
+ return $r ;
+ }
+
+ # Enhanced RC group
+ function recentChangesBlockGroup ( $block )
+ {
+ global $wgUploadPath, $wgLang ;
$r = "" ;
$M = wfMsg( "minoreditletter" );
$N = wfMsg( "newpageletter" );
+
+ # Collate list of users
$isnew = false ;
$userlinks = array () ;
- foreach ( $y AS $x ) {
- $oldid = $x->diffid ;
- if ( $x->isnew ) $isnew = true ;
- $u = $x->userlink ;
+ foreach ( $block AS $rcObj ) {
+ $oldid = $rcObj->mAttribs['rc_last_oldid'];
+ if ( $rcObj->mAttribs['rc_new'] ) $isnew = true ;
+ $u = $rcObj->userlink ;
if ( !isset ( $userlinks[$u] ) ) $userlinks[$u] = 0 ;
$userlinks[$u]++ ;
- }
+ }
+ # Sort the list and convert to text
krsort ( $userlinks ) ;
asort ( $userlinks ) ;
$users = array () ;
- $u = array_keys ( $userlinks ) ;
- foreach ( $u as $x ) {
- $z = $x ;
- if ( $userlinks[$x] > 1 ) $z .= " ({$userlinks[$x]}×)" ;
- array_push ( $users , $z ) ;
- }
+ foreach ( $userlinks as $userlink => $count) {
+ $text = $userlink ;
+ if ( $count > 1 ) $text .= " ({$count}×)" ;
+ array_push ( $users , $text ) ;
+ }
$users = " <font size='-1'>[".implode("; ",$users)."]</font>" ;
- $e = $y ;
- $e = array_shift ( $e ) ;
-
# Arrow
- $rci = "RCI{$this->rccc}" ;
- $rcl = "RCL{$this->rccc}" ;
- $rcm = "RCM{$this->rccc}" ;
- $tl = "<a href='javascript:toggleVisibility(\"{$rci}\",\"{$rcm}\",\"{$rcl}\")'>" ;
- $tl .= "<span id='{$rcm}'><img src='{$wgUploadPath}/Arr_r.png' width=12 height=12 border=0></span>" ;
- $tl .= "<span id='{$rcl}' style='display:none'><img src='{$wgUploadPath}/Arr_d.png' width=12 height=12 border=0></span>" ;
- $tl .= "</a>" ;
+ $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>" ;
$r .= $tl ;
# Main line
+ # M/N
$r .= "<tt>" ;
if ( $isnew ) $r .= $N ;
else $r .= " " ;
$r .= " " ; # Minor
- $r .= " ".$e->timestamp." " ;
+
+ # Timestamp
+ $r .= " ".$block[0]->timestamp." " ;
$r .= "</tt>" ;
- $link = $e->link ;
- if ( $e->watched ) $link = "<strong>{$link}</strong>" ;
+ # Article link
+ $link = $block[0]->link ;
+ if ( $block[0]->watched ) $link = "<strong>{$link}</strong>" ;
$r .= $link ;
-
- if ( !$e->islog ) {
- $r .= " (".count($y)." " ;
+
+ $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->makeKnownLink( $e->secureName , wfMsg("changes") , "diff=0&oldid=".$oldid ) ;
+ else $r .= $this->makeKnownLinkObj( $block[0]->getTitle() , wfMsg("changes") ,
+ "{$curIdEq}&diff=0&oldid=".$oldid ) ;
$r .= "; " ;
- $r .= $this->makeKnownLink( $e->secureName, wfMsg( "history" ), "action=history" );
+
+ # History
+ $r .= $this->makeKnownLinkObj( $block[0]->getTitle(), wfMsg( "history" ), "{$curIdEq}&action=history" );
$r .= ")" ;
- }
+ }
$r .= $users ;
- $r .= "<br>\n" ;
+ $r .= "<br />\n" ;
# Sub-entries
$r .= "<div id='{$rci}' style='display:none'>" ;
- foreach ( $y AS $x )
- {
- $r .= "<img src='{$wgUploadPath}/Arr_.png' width=12 height=12 border=0>";
+ foreach ( $block AS $rcObj ) {
+ # Get rc_xxxx variables
+ extract( $rcObj->mAttribs );
+
+ $r .= "<img src='{$wgUploadPath}/Arr_.png' width=12 height=12 />";
$r .= "<tt> " ;
- if ( $x->isnew ) $r .= $N ;
+ if ( $rc_new ) $r .= $N ;
else $r .= " " ;
- if ( $x->isminor ) $r .= $M ;
+ if ( $rc_minor ) $r .= $M ;
else $r .= " " ;
$r .= "</tt>" ;
$o = "" ;
- if ( $x->oldid != 0 ) $o = "oldid=".$x->oldid ;
- if ( $x->islog ) $link = $x->timestamp ;
- else $link = $this->makeKnownLink( $x->secureName, $x->timestamp , $o ) ;
+ if ( $rc_last_oldid != 0 ) {
+ $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>" ;
-
$r .= $link ;
$r .= " (" ;
- $r .= $x->curlink ;
+ $r .= $rcObj->curlink ;
$r .= "; " ;
- $r .= $x->lastlink ;
- $r .= ") . . ".$x->userlink ;
- $r .= $x->usertalklink ;
- if ( $x->usercomment != "" )
- $r .= " <em>(".wfEscapeHTML($x->usercomment).")</em>" ;
- $r .= "<br>\n" ;
+ $r .= $rcObj->lastlink ;
+ $r .= ") . . ".$rcObj->userlink ;
+ $r .= $rcObj->usertalklink ;
+ if ( $rc_comment != "" ) {
+ $rc_comment=$this->formatComment($rc_comment);
+ $r .= $wgLang->emphasize( " (".$rc_comment.")" ) ;
}
+ $r .= "<br />\n" ;
+ }
$r .= "</div>\n" ;
- $this->rccc++ ;
+ $this->rcCacheIndex++ ;
return $r ;
- }
+ }
+ # If enhanced RC is in use, this function takes the previously cached
+ # RC lines, arranges them, and outputs the HTML
function recentChangesBlock ()
{
global $wgUploadPath ;
if ( count ( $this->rc_cache ) == 0 ) return "" ;
- $k = array_keys ( $this->rc_cache ) ;
- foreach ( $k AS $x )
- {
- $y = $this->rc_cache[$x] ;
- if ( count ( $y ) < 2 ) {
- $r .= $this->recentChangesBlockLine ( array_shift ( $y ) ) ;
+ $blockOut = "";
+ foreach ( $this->rc_cache AS $secureName => $block ) {
+ if ( count ( $block ) < 2 ) {
+ $blockOut .= $this->recentChangesBlockLine ( array_shift ( $block ) ) ;
} else {
- $r .= $this->recentChangesBlockGroup ( $y ) ;
- }
+ $blockOut .= $this->recentChangesBlockGroup ( $block ) ;
}
+ }
- return "<div align=left>{$r}</div>" ;
+ return "<div>{$blockOut}</div>" ;
}
- function recentChangesLine( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched = false, $oldid = 0 , $diffid = 0 )
+ # Called in a loop over all displayed RC entries
+ # Either returns the line, or caches it for later use
+ function recentChangesLine( &$rc, $watched = false )
{
global $wgUser ;
$usenew = $wgUser->getOption( "usenewrc" );
if ( $usenew )
- $r = $this->recentChangesLineNew ( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched , $oldid , $diffid ) ;
+ $line = $this->recentChangesLineNew ( $rc, $watched ) ;
else
- $r = $this->recentChangesLineOld ( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched , $oldid , $diffid ) ;
- return $r ;
+ $line = $this->recentChangesLineOld ( $rc, $watched ) ;
+ return $line ;
}
- function recentChangesLineOld( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched = false, $oldid = 0, $diffid = 0 )
+ function recentChangesLineOld( &$rc, $watched = false )
{
- global $wgTitle, $wgLang, $wgUser;
+ global $wgTitle, $wgLang, $wgUser, $wgRCSeconds;
- $d = $wgLang->date( $ts, true);
+ # Extract DB fields into local scope
+ extract( $rc->mAttribs );
+ $curIdEq = "curid=" . $rc_cur_id;
+
+ # Make date header if necessary
+ $date = $wgLang->date( $rc_timestamp, true);
$s = "";
- if ( $d != $this->lastdate ) {
+ if ( $date != $this->lastdate ) {
if ( "" != $this->lastdate ) { $s .= "</ul>\n"; }
- $s .= "<h4>{$d}</h4>\n<ul>";
- $this->lastdate = $d;
- }
- $h = $wgLang->time( $ts, true );
- $t = Title::makeName( $ns, $ttl );
- $clink = $this->makeKnownLink( $t , "" );
- $nt = Title::newFromText( $t );
+ $s .= "<h4>{$date}</h4>\n<ul class='special'>";
+ $this->lastdate = $date;
+ $this->rclistOpen = true;
+ }
+ $s .= "<li> ";
+
+ if ( $rc_type == RC_MOVE ) {
+ # Diff
+ $s .= "(" . wfMsg( "diff" ) . ") (";
+ # Hist
+ $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(), "" ) );
- if ( $watched ) {
- $clink = "<strong>{$clink}</strong>";
- }
- $hlink = $this->makeKnownLink( $t, wfMsg( "hist" ), "action=history" );
- if ( $isnew || $nt->isLog() ) {
- $dlink = wfMsg( "diff" );
} else {
- $dlink = $this->makeKnownLink( $t, wfMsg( "diff" ),
- "diff={$oldid}&oldid={$diffid}" ); # Finagle's law
+ # Diff link
+ if ( $rc_type == RC_NEW || $rc_type == RC_LOG ) {
+ $diffLink = wfMsg( "diff" );
+ } else {
+ $diffLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "diff" ),
+ "{$curIdEq}&diff={$rc_this_oldid}&oldid={$rc_last_oldid}" ,'' ,'' , ' tabindex="'.$rc->counter.'"');
+ }
+ $s .= "($diffLink) (";
+
+ # History link
+ $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>"; }
+
+ # Article link
+ $articleLink = $this->makeKnownLinkObj( $rc->getTitle(), "" );
+
+ if ( $watched ) {
+ $articleLink = "<strong>{$articleLink}</strong>";
+ }
+ $s .= " $articleLink";
+
}
- if ( 0 == $u ) {
- $ul = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
- $ut, "target=" . $ut );
- } else {
- $ul = $this->makeLink( $wgLang->getNsText( Namespace::getUser() ) . ":{$ut}", $ut );
+
+ # Timestamp
+ $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 );
+ } else {
+ $userLink = $this->makeLink( $wgLang->getNsText( NS_USER ) . ":{$rc_user_text}", $rc_user_text );
}
-
- $talkname=$wgLang->getNsText(Namespace::getTalk(0)); # use the shorter name
+ $s .= $userLink;
+
+ # User talk link
+ $talkname=$wgLang->getNsText(NS_TALK); # use the shorter name
global $wgDisableAnonTalk;
- if( 0 == $u && $wgDisableAnonTalk ) {
- $utl = "";
+ if( 0 == $rc_user && $wgDisableAnonTalk ) {
+ $userTalkLink = "";
} else {
- $utns=$wgLang->getNsText(Namespace::getTalk(Namespace::getUser()));
- $utl= $this->makeLink($utns . ":{$ut}", $talkname );
+ $utns=$wgLang->getNsText(NS_USER_TALK);
+ $userTalkLink= $this->makeLink($utns . ":{$rc_user_text}", $talkname );
}
- $cr = wfMsg( "currentrev" );
+ # Block link
+ $blockLink="";
+ if ( ( 0 == $rc_user ) && $wgUser->isSysop() ) {
+ $blockLink = $this->makeKnownLink( $wgLang->specialPage(
+ "Blockip" ), wfMsg( "blocklink" ), "ip={$rc_user_text}" );
- $s .= "<li> ({$dlink}) ({$hlink}) . .";
- $M = wfMsg( "minoreditletter" );
- $N = wfMsg( "newpageletter" );
- if ( $isminor ) { $s .= " <strong>{$M}</strong>"; }
- if ( $isnew ) { $s .= "<strong>{$N}</strong>"; }
- $s .= " {$clink}; {$h} . . {$ul}";
-
- $blink="";
- if ( ( 0 == $u ) && $wgUser->isSysop() ) {
- $blink = $this->makeKnownLink( $wgLang->specialPage(
- "Blockip" ), wfMsg( "blocklink" ), "ip={$ut}" );
-
}
- if($blink) {
- if($utl) $utl .= " | ";
- $utl .= $blink;
+ if($blockLink) {
+ if($userTalkLink) $userTalkLink .= " | ";
+ $userTalkLink .= $blockLink;
}
- if($utl) $s.=" ({$utl})";
+ if($userTalkLink) $s.=" ({$userTalkLink})";
- if ( "" != $c && "*" != $c ) {
- $s .= " <em>(" . wfEscapeHTML( $c ) . ")</em>";
+ # Add comment
+ if ( "" != $rc_comment && "*" != $rc_comment && $rc_type != RC_MOVE ) {
+ $rc_comment=$this->formatComment($rc_comment);
+ $s .= $wgLang->emphasize(" (" . $rc_comment . ")");
}
$s .= "</li>\n";
return $s;
}
- function recentChangesLineNew( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched = false, $oldid = 0 , $diffid = 0 )
+# function recentChangesLineNew( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched = false, $oldid = 0 , $diffid = 0 )
+ function recentChangesLineNew( &$baseRC, $watched = false )
{
- global $wgTitle, $wgLang, $wgUser;
+ global $wgTitle, $wgLang, $wgUser, $wgRCSeconds;
- $rc = new RecentChangesClass ;
+ # Create a specialised object
+ $rc = RCCacheEntry::newFromParent( $baseRC ) ;
- $d = $wgLang->date( $ts, true);
- $s = "";
+ # Extract fields from DB into the function scope (rc_xxxx variables)
+ extract( $rc->mAttribs );
+ $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 = "" ;
- if ( $d != $this->lastdate ) {
+ if ( $date != $this->lastdate ) {
+ # Process current cache
$ret = $this->recentChangesBlock () ;
$this->rc_cache = array() ;
- $ret .= "<h4>{$d}</h4>\n";
- $this->lastdate = $d;
- }
- $h = $wgLang->time( $ts, true );
- $t = Title::makeName( $ns, $ttl );
- $clink = $this->makeKnownLink( $t, "" ) ;
- if ( $oldid == 0 ) $c2link = $clink ;
- else $c2link = $this->makeKnownLink( $t, "" , "oldid={$oldid}" );
- $nt = Title::newFromText( $t );
-
- $rc->timestamp = $h ;
- $rc->oldid = $oldid ;
- $rc->diffid = $diffid ;
+ $ret .= "<h4>{$date}</h4>\n";
+ $this->lastdate = $date;
+ }
+
+ # Make article link
+ if ( $rc_type == RC_MOVE ) {
+ $clink = $this->makeKnownLinkObj( $rc->getTitle(), "", "redirect=no" );
+ $clink .= " " . wfMsg("movedto") . " ";
+ $clink .= $this->makeKnownLinkObj( $rc->getMovedToTitle(), "" );
+ } else {
+ $clink = $this->makeKnownLinkObj( $rc->getTitle(), "" ) ;
+ }
+
+ $time = $wgLang->time( $rc_timestamp, true, $wgRCSeconds );
$rc->watched = $watched ;
- $rc->isnew = $isnew ;
- $rc->isminor = $isminor ;
- $rc->secureName = $t ;
- $rc->displayName = $nt ;
$rc->link = $clink ;
- $rc->usercomment = $c ;
- $rc->islog = $nt->isLog() ;
-
- if ( ( $isnew && $oldid == 0 ) || $nt->isLog() ) {
- $dlink = wfMsg( "cur" );
+ $rc->timestamp = $time;
+
+ # Make "cur" link
+ if ( ( $rc_type == RC_NEW && $rc_this_oldid == 0 ) || $rc_type == RC_LOG || $rc_type == RC_MOVE) {
+ $curLink = wfMsg( "cur" );
} else {
- $dlink = $this->makeKnownLink( $t, wfMsg( "cur" ),
- "diff=0&oldid={$oldid}" );
+ $curLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "cur" ),
+ "{$curIdEq}&diff=0&oldid={$rc_this_oldid}" ,'' ,'' , ' tabindex="'.$baseRC->counter.'"' );
}
- if ( $diffid == 0 || $nt->isLog() ) {
- $plink = wfMsg( "last" );
+ # Make "last" link
+ $titleObj = $rc->getTitle();
+ if ( $rc_last_oldid == 0 || $rc_type == RC_LOG || $rc_type == RC_MOVE ) {
+ $lastLink = wfMsg( "last" );
} else {
- $plink = $this->makeKnownLink( $t, wfMsg( "last" ),
- "diff={$oldid}&oldid={$diffid}" );
+ $lastLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "last" ),
+ "{$curIdEq}&diff={$rc_this_oldid}&oldid={$rc_last_oldid}" );
}
- if ( 0 == $u ) {
- $ul = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
- $ut, "target=" . $ut );
- } else { $ul = $this->makeLink( $wgLang->getNsText(
- Namespace::getUser() ) . ":{$ut}", $ut ); }
-
- $rc->userlink = $ul ;
- $rc->lastlink = $plink ;
- $rc->curlink = $dlink ;
+ # 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 );
+ } else {
+ $userLink = $this->makeLink( $wgLang->getNsText(
+ Namespace::getUser() ) . ":{$rc_user_text}", $rc_user_text );
+ }
- $utns=$wgLang->getNsText(Namespace::getTalk(Namespace::getUser()));
- $talkname=$wgLang->getNsText(Namespace::getTalk(0)); # use the shorter name
- $utl= $this->makeLink($utns . ":{$ut}", $talkname );
+ $rc->userlink = $userLink ;
+ $rc->lastlink = $lastLink ;
+ $rc->curlink = $curLink ;
+ # 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 );
+
global $wgDisableAnonTalk;
- if ( ( 0 == $u ) && $wgUser->isSysop() ) {
- $blink = $this->makeKnownLink( $wgLang->specialPage(
- "Blockip" ), wfMsg( "blocklink" ), "ip={$ut}" );
+ if ( ( 0 == $rc_user ) && $wgUser->isSysop() ) {
+ $blockLink = $this->makeKnownLink( $wgLang->specialPage(
+ "Blockip" ), wfMsg( "blocklink" ), "ip={$rc_user_text}" );
if( $wgDisableAnonTalk )
- $rc->usertalklink = " ({$blink})";
+ $rc->usertalklink = " ({$blockLink})";
else
- $rc->usertalklink = " ({$utl} | {$blink})";
+ $rc->usertalklink = " ({$userTalkLink} | {$blockLink})";
} else {
- if( $wgDisableAnonTalk && ($u == 0) )
+ if( $wgDisableAnonTalk && ($rc_user == 0) )
$rc->usertalklink = "";
else
- $rc->usertalklink = " ({$utl})";
+ $rc->usertalklink = " ({$userTalkLink})";
}
- if ( !isset ( $this->rc_cache[$t] ) ) $this->rc_cache[$t] = array() ;
- array_push ( $this->rc_cache[$t] , $rc ) ;
+ # Put accumulated information into the cache, for later display
+ # Page moves go on their own line
+ $title = $rc->getTitle();
+ $secureName = $title->getPrefixedDBkey();
+ if ( $rc_type == RC_MOVE ) {
+ # Use an @ character to prevent collision with page names
+ $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 ) ;
+ }
return $ret;
}
+ function endImageHistoryList()
+ {
+ $s = "</ul>\n";
+ return $s;
+ }
+
+ /* 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) and formats [[wikilinks]].
+ Main author: Erik Möller (moeller@scireview.de)
+ */
+ function formatComment($comment)
+ {
+ global $wgLang;
+ $comment=wfEscapeHTML($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";
+ }
+ 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 )
{
$cur = wfMsg( "cur" );
if ( $iscur ) {
- $url = wfImageUrl( $img );
+ $url = Image::wfImageUrl( $img );
$rlink = $cur;
if ( $wgUser->isSysop() ) {
- $link = wfLocalUrlE( $wgTitle->getPrefixedText(), "image=" . $wgTitle->getURL() .
+ $link = $wgTitle->escapeLocalURL( "image=" . $wgTitle->getPartialURL() .
"&action=delete" );
$style = $this->getInternalLinkAttributes( $link, $del );
. " . . {$ul} ({$nb})";
if ( "" != $c && "*" != $c ) {
- $s .= " <em>(" . wfEscapeHTML( $c ) . ")</em>";
+ $sk=$wgUser->getSkin();
+ $s .= $wgLang->emphasize(" (" . $sk->formatComment($c) . ")");
}
$s .= "</li>\n";
return $s;
}
function tocIndent($level) {
-
- while($level-->0) $rv.="<div style=\"margin-left:2em;\">\n";
- return $rv;
-
+ return str_repeat( "<div class='tocindent'>\n", $level>0 ? $level : 0 );
}
function tocUnindent($level) {
- $rv = "";
- while($level-->0) $rv.="</div>\n";
- return $rv;
+ return str_repeat( "</div>\n", $level>0 ? $level : 0 );
}
- // parameter level defines if we are on an indentation level
- function tocLine($anchor,$tocline,$level) {
-
- if($level) {
-
- return "<A CLASS=\"internal\" HREF=\"#".$anchor."\">".$tocline."</A><BR>\n";
- } else {
-
- return "<div style=\"margin-bottom:0px;\">\n".
- "<A CLASS=\"internal\" HREF=\"#".$anchor."\">".$tocline."</A><BR>\n".
- "</div>\n";
+ # parameter level defines if we are on an indentation level
+ function tocLine( $anchor, $tocline, $level ) {
+ $link = "<a href=\"#$anchor\">$tocline</a><br />";
+ if($level) {
+ return "$link\n";
+ } else {
+ 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
- global $printable;
-
- if (!$printable) {
- $hideline = " <script type='text/javascript'>showTocToggle(\"" . wfMsg("showtoc") . "\",\"" . wfMsg("hidetoc") . "\")</script>";
- }
- return
- "<p><table border=\"0\" id=\"toc\"><tr><td align=\"center\">\n".
- "<b>".wfMsg("toc")."</b>" .
- $hideline .
- "</td></tr><tr id='tocinside'><td align=\"left\">\n".
- $toc."</td></tr></table><P>\n";
+ # 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>";
+ return
+ "<table border=\"0\" id=\"toc\"><tr><td align=\"center\">\n".
+ "<b>".wfMsg("toc")."</b>" .
+ $hideline .
+ "</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,$wgUser,$oldid;
- if($oldid) return $head;
- $url = wfLocalUrlE(urlencode($wgTitle->getPrefixedText()),"action=edit§ion=$section");
- return "<span onContextMenu='document.location=\"".$url."\";return false;'>{$head}</span>";
+ function editSectionScript( $section, $head ) {
+ global $wgTitle, $wgRequest;
+ 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>";
}
- function editSectionLink($section) {
+ function editSectionLink( $section ) {
+ global $wgRequest;
+ global $wgTitle, $wgUser, $wgLang;
+
+ 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 "";
+ }
- global $printable;
- global $wgTitle,$wgUser,$oldid;
- if($oldid) return "";
- if ($printable) return "";
- $editurl="§ion={$section}";
- $url=$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg("editsection"),"action=edit".$editurl);
- return "<div style=\"float:right;margin-left:5px;\"><small>[".$url."]</small></div>";
+ $editurl = "§ion={$section}";
+ $url = $this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg("editsection"),"action=edit".$editurl);
+
+ if( $wgLang->isRTL() ) {
+ $farside = "left";
+ $nearside = "right";
+ } else {
+ $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;
+ global $wgUploadPath, $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.gif",
- "open"=>"\\'\\'\\'",
- "close"=>"\\'\\'\\'",
+ array( "image"=>"button_bold.png",
+ "open"=>"\'\'\'",
+ "close"=>"\'\'\'",
"sample"=>wfMsg("bold_sample"),
- "tip"=>wfMsg("bold_tip")),
- array( "image"=>"button_italic.gif",
- "open"=>"\\'\\'",
- "close"=>"\\'\\'",
+ "tip"=>wfMsg("bold_tip"),
+ "key"=>"B"
+ ),
+ array( "image"=>"button_italic.png",
+ "open"=>"\'\'",
+ "close"=>"\'\'",
"sample"=>wfMsg("italic_sample"),
- "tip"=>wfMsg("italic_tip")),
- array( "image"=>"button_link.gif",
+ "tip"=>wfMsg("italic_tip"),
+ "key"=>"I"
+ ),
+ array( "image"=>"button_link.png",
"open"=>"[[",
"close"=>"]]",
"sample"=>wfMsg("link_sample"),
- "tip"=>wfMsg("link_tip")),
- array( "image"=>"button_extlink.gif",
+ "tip"=>wfMsg("link_tip"),
+ "key"=>"L"
+ ),
+ array( "image"=>"button_extlink.png",
"open"=>"[",
"close"=>"]",
"sample"=>wfMsg("extlink_sample"),
- "tip"=>wfMsg("extlink_tip")),
- array( "image"=>"button_headline.gif",
+ "tip"=>wfMsg("extlink_tip"),
+ "key"=>"X"
+ ),
+ array( "image"=>"button_headline.png",
"open"=>"\\n== ",
"close"=>" ==\\n",
"sample"=>wfMsg("headline_sample"),
- "tip"=>wfMsg("headline_tip")),
- array( "image"=>"button_math.gif",
- "open"=>"\\<math\\>",
- "close"=>"\\</math\\>",
- "sample"=>wfMsg("math_sample"),
- "tip"=>wfMsg("math_tip")),
- array( "image"=>"button_image.gif",
- "open"=>"[[Image:",
+ "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")),
- array( "image"=>"button_media.gif",
- "open"=>"[[Media:",
+ "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")),
- array( "image"=>"button_sig.gif",
+ "tip"=>wfMsg("media_tip"),
+ "key"=>"M"
+ ),
+ array( "image"=>"button_math.png",
+ "open"=>"\\<math\\>",
+ "close"=>"\\</math\\>",
+ "sample"=>wfMsg("math_sample"),
+ "tip"=>wfMsg("math_tip"),
+ "key"=>"C"
+ ),
+ array( "image"=>"button_nowiki.png",
+ "open"=>"\\<nowiki\\>",
+ "close"=>"\\</nowiki\\>",
+ "sample"=>wfMsg("nowiki_sample"),
+ "tip"=>wfMsg("nowiki_tip"),
+ "key"=>"N"
+ ),
+ array( "image"=>"button_sig.png",
"open"=>"--~~~~",
"close"=>"",
"sample"=>"",
- "tip"=>wfMsg("sig_tip")),
- array( "image"=>"button_hr.gif",
+ "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.="
- <div id=\"toolbar\">";
+ $toolbar ="<script type='text/javascript'>\n/*<![CDATA[*/\n";
+
+ $toolbar.="document.writeln(\"<div id='toolbar'>\");\n";
foreach($toolarray as $tool) {
- $image=$tool["image"];
+ $image=$wgUploadPath."/".$tool["image"];
$open=$tool["open"];
$close=$tool["close"];
- $sample=$tool["sample"];
+ $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=$tool["tip"];
+ $tip = addslashes( $tool["tip"] );
- $toolbar.=
- "<a href=\"#\"".
- "onclick=\"javascript:insertTags('$open','$close','$sample');\">".
- "<img src=\"$wgUploadPath/$image\" border=\"0\" ALT=\"$tip\" TITLE=\"$tip\">".
- "</a>";
+ #$key = $tool["key"];
+ $toolbar.="addButton('$image','$tip','$open','$close','$sample');\n";
}
- $toolbar.="</div>";
+ $toolbar.="addInfobox('" . addslashes( wfMsg( "infobox" ) ) . "','" . addslashes(wfMsg("infobox_alert")) . "');\n";
+ $toolbar.="document.writeln(\"</div>\");\n";
+
+ $toolbar.="/*]]>*/\n</script>";
return $toolbar;
-
}
}
include_once( "SkinNostalgia.php" );
include_once( "SkinCologneBlue.php" );
-#include_once( "SkinSmarty.php" );
+if( $wgUsePHPTal ) {
+ include_once( "SkinPHPTal.php" );
+}
+
?>