2003-04-14 23:10:40 +00:00
|
|
|
<?
|
|
|
|
|
# See skin.doc
|
|
|
|
|
|
|
|
|
|
# These are the INTERNAL names, which get mapped
|
|
|
|
|
# directly to class names. For display purposes, the
|
|
|
|
|
# Language class has internationalized names
|
|
|
|
|
#
|
|
|
|
|
/* private */ $wgValidSkinNames = array(
|
2003-09-20 01:34:06 +00:00
|
|
|
"Standard", "Nostalgia", "CologneBlue" #, "Smarty", "Montparnasse"
|
2003-04-14 23:10:40 +00:00
|
|
|
);
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
include_once( "RecentChange.php" );
|
|
|
|
|
|
2003-07-11 07:02:22 +00:00
|
|
|
# For some odd PHP bug, this function can't be part of a class
|
|
|
|
|
function getCategories ()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut , $wgTitle , $wgUseCategoryMagic , $wgUser ;
|
|
|
|
|
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 ;
|
|
|
|
|
}
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
class RCCacheEntry extends RecentChange
|
|
|
|
|
{
|
|
|
|
|
var $secureName, $link;
|
|
|
|
|
var $curlink , $lastlink , $usertalklink , $versionlink ;
|
|
|
|
|
var $userlink, $timestamp, $watched;
|
2004-01-17 09:49:43 +00:00
|
|
|
|
|
|
|
|
function newFromParent( $rc )
|
|
|
|
|
{
|
|
|
|
|
$rc2 = new RCCacheEntry;
|
|
|
|
|
$rc2->mAttribs = $rc->mAttribs;
|
|
|
|
|
$rc2->mExtra = $rc->mExtra;
|
|
|
|
|
return $rc2;
|
|
|
|
|
}
|
2004-01-17 05:49:39 +00:00
|
|
|
} ;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
class Skin {
|
|
|
|
|
|
|
|
|
|
/* private */ var $lastdate, $lastline;
|
|
|
|
|
|
|
|
|
|
var $rc_cache ; # Cache for Enhanced Recent Changes
|
2004-01-17 05:49:39 +00:00
|
|
|
var $rcCacheIndex ; # Recent Changes Cache Counter for visibility toggle
|
2004-01-26 14:23:45 +00:00
|
|
|
var $rcMoveIndex;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
function Skin()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getSkinNames()
|
|
|
|
|
{
|
|
|
|
|
global $wgValidSkinNames;
|
|
|
|
|
return $wgValidSkinNames;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getStylesheet()
|
|
|
|
|
{
|
|
|
|
|
return "wikistandard.css";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function qbSetting()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgUser;
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isQuickbarSupressed() ) { return 0; }
|
|
|
|
|
$q = $wgUser->getOption( "quickbar" );
|
|
|
|
|
if ( "" == $q ) { $q = 0; }
|
|
|
|
|
return $q;
|
|
|
|
|
}
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
function initPage( &$out )
|
2003-04-14 23:10:40 +00:00
|
|
|
{
|
2004-01-17 05:49:39 +00:00
|
|
|
global $wgStyleSheetPath;
|
2003-10-16 13:30:45 +00:00
|
|
|
$fname = "Skin::initPage";
|
|
|
|
|
wfProfileIn( $fname );
|
2004-01-17 05:49:39 +00:00
|
|
|
|
|
|
|
|
$out->addLink( "shortcut icon", "", "/favicon.ico" );
|
|
|
|
|
if ( $out->isPrintable() ) { $ss = "wikiprintable.css"; }
|
2003-04-14 23:10:40 +00:00
|
|
|
else { $ss = $this->getStylesheet(); }
|
2004-01-17 05:49:39 +00:00
|
|
|
$out->addLink( "stylesheet", "", "{$wgStyleSheetPath}/{$ss}" );
|
2003-10-16 13:30:45 +00:00
|
|
|
wfProfileOut( $fname );
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
2003-09-11 12:21:03 +00:00
|
|
|
|
|
|
|
|
function outputPage( &$out ) {
|
2004-01-10 14:18:05 +00:00
|
|
|
global $wgDebugComments;
|
|
|
|
|
|
2003-10-16 13:30:45 +00:00
|
|
|
wfProfileIn( "Skin::outputPage" );
|
2004-01-17 05:49:39 +00:00
|
|
|
$this->initPage( $out );
|
2003-09-11 12:21:03 +00:00
|
|
|
$out->out( $out->headElement() );
|
|
|
|
|
|
|
|
|
|
$out->out( "\n<body" );
|
|
|
|
|
$ops = $this->getBodyOptions();
|
|
|
|
|
foreach ( $ops as $name => $val ) {
|
|
|
|
|
$out->out( " $name='$val'" );
|
|
|
|
|
}
|
|
|
|
|
$out->out( ">\n" );
|
|
|
|
|
if ( $wgDebugComments ) {
|
|
|
|
|
$out->out( "<!-- Wiki debugging output:\n" .
|
|
|
|
|
$out->mDebugtext . "-->\n" );
|
|
|
|
|
}
|
|
|
|
|
$out->out( $this->beforeContent() );
|
|
|
|
|
|
|
|
|
|
$out->out( $out->mBodytext );
|
|
|
|
|
|
|
|
|
|
$out->out( $this->afterContent() );
|
2003-10-16 13:30:45 +00:00
|
|
|
|
|
|
|
|
wfProfileClose();
|
2003-09-11 12:21:03 +00:00
|
|
|
$out->out( $out->reportTime() );
|
|
|
|
|
|
|
|
|
|
$out->out( "\n</body></html>" );
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
function getHeadScripts() {
|
2003-05-17 06:06:31 +00:00
|
|
|
global $wgStyleSheetPath;
|
|
|
|
|
$r = "<script type=\"text/javascript\" src=\"{$wgStyleSheetPath}/wikibits.js\"></script>\n";
|
2003-04-14 23:10:40 +00:00
|
|
|
return $r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getUserStyles()
|
|
|
|
|
{
|
2003-07-24 01:58:26 +00:00
|
|
|
$s = "<style type='text/css'><!--\n";
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= $this->doGetUserStyles();
|
|
|
|
|
$s .= "//--></style>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function doGetUserStyles()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser;
|
|
|
|
|
|
|
|
|
|
$s = "";
|
|
|
|
|
if ( 1 == $wgUser->getOption( "underline" ) ) {
|
2003-07-07 01:34:43 +00:00
|
|
|
# Don't override browser settings
|
2003-04-14 23:10:40 +00:00
|
|
|
} else {
|
2003-11-09 11:45:12 +00:00
|
|
|
# CHECK MERGE @@@
|
2003-07-07 01:34:43 +00:00
|
|
|
# Force no underline
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= "a.stub, a.new, a.internal, a.external { " .
|
|
|
|
|
"text-decoration: none; }\n";
|
|
|
|
|
}
|
|
|
|
|
if ( 1 == $wgUser->getOption( "highlightbroken" ) ) {
|
2003-07-07 01:34:43 +00:00
|
|
|
$s .= "a.new, #quickbar a.new { color: #CC2200; }\n";
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
if ( 1 == $wgUser->getOption( "justify" ) ) {
|
|
|
|
|
$s .= "#article { text-align: justify; }\n";
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getBodyOptions()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgTitle, $wgNamespaceBackgrounds, $wgOut, $oldid, $redirect, $diff,$action;
|
|
|
|
|
|
|
|
|
|
if ( 0 != $wgTitle->getNamespace() ) {
|
2003-07-23 07:48:43 +00:00
|
|
|
$a = array( "bgcolor" => "#ffffec" );
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
else $a = array( "bgcolor" => "#FFFFFF" );
|
|
|
|
|
if($wgOut->isArticle() && $wgUser->getOption("editondblclick")
|
|
|
|
|
&&
|
|
|
|
|
(!$wgTitle->isProtected() || $wgUser->isSysop())
|
|
|
|
|
|
|
|
|
|
) {
|
|
|
|
|
$n = $wgTitle->getPrefixedURL();
|
|
|
|
|
$t = wfMsg( "editthispage" );
|
|
|
|
|
$oid = $red = "";
|
|
|
|
|
if ( $redirect ) { $red = "&redirect={$redirect}"; }
|
|
|
|
|
if ( $oldid && ! isset( $diff ) ) {
|
|
|
|
|
$oid = "&oldid={$oldid}";
|
|
|
|
|
}
|
|
|
|
|
$s = wfLocalUrlE($n,"action=edit{$oid}{$red}");
|
|
|
|
|
$s = "document.location = \"" .$s ."\";";
|
|
|
|
|
$a += array ("ondblclick" => $s);
|
|
|
|
|
|
|
|
|
|
}
|
2003-12-10 10:30:14 +00:00
|
|
|
$a['onload'] = $wgOut->getOnloadHandler();
|
2003-04-14 23:10:40 +00:00
|
|
|
return $a;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getExternalLinkAttributes( $link, $text )
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgLang;
|
|
|
|
|
|
|
|
|
|
$link = urldecode( $link );
|
|
|
|
|
$link = $wgLang->checkTitleEncoding( $link );
|
|
|
|
|
$link = str_replace( "_", " ", $link );
|
|
|
|
|
$link = wfEscapeHTML( $link );
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isPrintable() ) { $r = " class='printable'"; }
|
|
|
|
|
else { $r = " class='external'"; }
|
|
|
|
|
|
|
|
|
|
if ( 1 == $wgUser->getOption( "hover" ) ) {
|
|
|
|
|
$r .= " title=\"{$link}\"";
|
|
|
|
|
}
|
|
|
|
|
return $r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getInternalLinkAttributes( $link, $text, $broken = false )
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut;
|
|
|
|
|
|
|
|
|
|
$link = urldecode( $link );
|
|
|
|
|
$link = str_replace( "_", " ", $link );
|
|
|
|
|
$link = wfEscapeHTML( $link );
|
|
|
|
|
|
2003-10-22 23:56:49 +00:00
|
|
|
if ( $wgOut->isPrintable() ) {
|
|
|
|
|
$r = " class='printable'";
|
|
|
|
|
} else if ( $broken == "stub" ) {
|
|
|
|
|
$r = " class='stub'";
|
|
|
|
|
} else if ( $broken == "yes" ) {
|
|
|
|
|
$r = " class='new'";
|
|
|
|
|
} else {
|
2003-11-22 12:30:13 +00:00
|
|
|
$r = " class='internal'";
|
2003-10-22 23:56:49 +00:00
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
if ( 1 == $wgUser->getOption( "hover" ) ) {
|
|
|
|
|
$r .= " title=\"{$link}\"";
|
|
|
|
|
}
|
|
|
|
|
return $r;
|
|
|
|
|
}
|
2003-10-22 23:56:49 +00:00
|
|
|
|
|
|
|
|
function getInternalLinkAttributesObj( &$nt, $text, $broken = false )
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut;
|
|
|
|
|
|
|
|
|
|
if ( $wgOut->isPrintable() ) {
|
|
|
|
|
$r = " class='printable'";
|
|
|
|
|
} else if ( $broken == "stub" ) {
|
|
|
|
|
$r = " class='stub'";
|
|
|
|
|
} else if ( $broken == "yes" ) {
|
|
|
|
|
$r = " class='new'";
|
|
|
|
|
} else {
|
2003-11-22 12:30:13 +00:00
|
|
|
$r = " class='internal'";
|
2003-10-22 23:56:49 +00:00
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2003-10-22 23:56:49 +00:00
|
|
|
if ( 1 == $wgUser->getOption( "hover" ) ) {
|
|
|
|
|
$r .= ' title ="' . $nt->getEscapedText() . '"';
|
|
|
|
|
}
|
|
|
|
|
return $r;
|
|
|
|
|
}
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
function getLogo()
|
|
|
|
|
{
|
|
|
|
|
global $wgLogo;
|
|
|
|
|
return $wgLogo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# This will be called immediately after the <body> tag. Split into
|
|
|
|
|
# two functions to make it easier to subclass.
|
|
|
|
|
#
|
|
|
|
|
function beforeContent()
|
|
|
|
|
{
|
2003-12-22 11:10:35 +00:00
|
|
|
global $wgUser, $wgOut, $wgSiteNotice;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
if ( $wgOut->isPrintable() ) {
|
|
|
|
|
$s = $this->pageTitle() . $this->pageSubtitle() . "\n";
|
|
|
|
|
$s .= "\n<div class='bodytext'>";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
2003-12-22 11:10:35 +00:00
|
|
|
if( $wgSiteNotice ) {
|
|
|
|
|
$note = "\n<div id='notice' style='font-weight: bold; color: red; text-align: center'>$wgSiteNotice</div>\n";
|
|
|
|
|
} else {
|
|
|
|
|
$note = "";
|
|
|
|
|
}
|
|
|
|
|
return $this->doBeforeContent() . $note;
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function doBeforeContent()
|
|
|
|
|
{
|
2003-07-09 04:57:32 +00:00
|
|
|
global $wgUser, $wgOut, $wgTitle, $wgLang;
|
2003-10-16 13:30:45 +00:00
|
|
|
$fname = "Skin::doBeforeContent";
|
|
|
|
|
wfProfileIn( $fname );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$s = "";
|
|
|
|
|
$qb = $this->qbSetting();
|
|
|
|
|
|
|
|
|
|
if( $langlinks = $this->otherLanguages() ) {
|
|
|
|
|
$rows = 2;
|
|
|
|
|
$borderhack = "";
|
|
|
|
|
} else {
|
|
|
|
|
$rows = 1;
|
|
|
|
|
$langlinks = false;
|
|
|
|
|
$borderhack = "class='top'";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$s .= "\n<div id='content'>\n<div id='topbar'>" .
|
|
|
|
|
"<table width='98%' border=0 cellspacing=0><tr>";
|
|
|
|
|
|
2003-07-09 04:57:32 +00:00
|
|
|
$shove = ($qb != 0);
|
|
|
|
|
$left = ($qb == 1 || $qb == 3);
|
|
|
|
|
if($wgLang->isRTL()) $left = !$left;
|
|
|
|
|
|
|
|
|
|
if ( !$shove ) {
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= "<td class='top' align=left valign=top rowspan='{$rows}'>" .
|
|
|
|
|
$this->logoText() . "</td>";
|
2003-07-09 04:57:32 +00:00
|
|
|
} elseif( $left ) {
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= $this->getQuickbarCompensator( $rows );
|
|
|
|
|
}
|
2003-07-09 05:21:48 +00:00
|
|
|
$l = $wgLang->isRTL() ? "right" : "left";
|
|
|
|
|
$s .= "<td {$borderhack} align='$l' valign='top'>";
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$s .= $this->topLinks() ;
|
|
|
|
|
$s .= "<p class='subtitle'>" . $this->pageTitleLinks();
|
|
|
|
|
|
2003-07-09 05:21:48 +00:00
|
|
|
$r = $wgLang->isRTL() ? "left" : "right";
|
|
|
|
|
$s .= "</td>\n<td {$borderhack} valign='top' align='$r' nowrap>";
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= $this->nameAndLogin();
|
|
|
|
|
$s .= "\n<br>" . $this->searchForm() . "</td>";
|
|
|
|
|
|
|
|
|
|
if ( $langlinks ) {
|
|
|
|
|
$s .= "</tr>\n<tr><td class='top' colspan=\"2\">$langlinks</td>";
|
|
|
|
|
}
|
|
|
|
|
|
2003-07-09 04:57:32 +00:00
|
|
|
if ( $shove && !$left ) { # Right
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= $this->getQuickbarCompensator( $rows );
|
|
|
|
|
}
|
|
|
|
|
$s .= "</tr></table>\n</div>\n";
|
|
|
|
|
$s .= "\n<div id='article'>";
|
|
|
|
|
|
|
|
|
|
$s .= $this->pageTitle();
|
2003-07-11 07:02:22 +00:00
|
|
|
$s .= $this->pageSubtitle() ;
|
2003-11-22 12:30:13 +00:00
|
|
|
$s .= getCategories(); // For some odd reason, zhis can't be a function of the object
|
2003-07-11 07:02:22 +00:00
|
|
|
$s .= "\n<p>";
|
2003-10-16 13:30:45 +00:00
|
|
|
wfProfileOut( $fname );
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getQuickbarCompensator( $rows = 1 )
|
|
|
|
|
{
|
|
|
|
|
return "<td width='152' rowspan='{$rows}'> </td>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# This gets called immediately before the </body> tag.
|
|
|
|
|
#
|
|
|
|
|
function afterContent()
|
|
|
|
|
{
|
2003-11-18 02:39:38 +00:00
|
|
|
global $wgUser, $wgOut, $wgServer;
|
2003-08-17 07:58:23 +00:00
|
|
|
global $wgTitle;
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
if ( $wgOut->isPrintable() ) {
|
|
|
|
|
$s = "\n</div>\n";
|
|
|
|
|
|
2003-11-19 02:25:39 +00:00
|
|
|
$u = htmlspecialchars( $wgServer . $wgTitle->getFullURL() );
|
|
|
|
|
$u = "<a href=\"$u\">$u</a>";
|
2003-08-17 07:58:23 +00:00
|
|
|
$rf = wfMsg( "retrievedfrom", $u );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
if ( $wgOut->isArticle() ) {
|
|
|
|
|
$lm = "<br>" . $this->lastModified();
|
|
|
|
|
} else { $lm = ""; }
|
|
|
|
|
|
2003-08-17 04:34:07 +00:00
|
|
|
$cr = wfMsg( "gnunote" );
|
|
|
|
|
$s .= "<p><em>{$rf}{$lm} {$cr}</em>\n";
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
return $this->doAfterContent();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function doAfterContent()
|
|
|
|
|
{
|
2003-07-09 04:57:32 +00:00
|
|
|
global $wgUser, $wgOut, $wgLang;
|
2003-10-16 13:30:45 +00:00
|
|
|
$fname = "Skin::doAfterContent";
|
|
|
|
|
wfProfileIn( $fname );
|
2003-10-25 08:01:33 +00:00
|
|
|
wfProfileIn( "$fname-1" );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$s = "\n</div><br clear=all>\n";
|
|
|
|
|
$s .= "\n<div id='footer'>";
|
|
|
|
|
$s .= "<table width='98%' border=0 cellspacing=0><tr>";
|
2003-10-25 08:01:33 +00:00
|
|
|
|
|
|
|
|
wfProfileOut( "$fname-1" );
|
|
|
|
|
wfProfileIn( "$fname-2" );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$qb = $this->qbSetting();
|
2003-07-09 04:57:32 +00:00
|
|
|
$shove = ($qb != 0);
|
|
|
|
|
$left = ($qb == 1 || $qb == 3);
|
|
|
|
|
if($wgLang->isRTL()) $left = !$left;
|
|
|
|
|
|
|
|
|
|
if ( $shove && $left ) { # Left
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= $this->getQuickbarCompensator();
|
|
|
|
|
}
|
2003-10-25 08:01:33 +00:00
|
|
|
wfProfileOut( "$fname-2" );
|
|
|
|
|
wfProfileIn( "$fname-3" );
|
2003-07-09 05:21:48 +00:00
|
|
|
$l = $wgLang->isRTL() ? "right" : "left";
|
|
|
|
|
$s .= "<td class='bottom' align='$l' valign='top'>";
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$s .= $this->bottomLinks();
|
|
|
|
|
$s .= "\n<br>" . $this->mainPageLink()
|
|
|
|
|
. " | " . $this->aboutLink()
|
|
|
|
|
. " | " . $this->specialLink( "recentchanges" )
|
|
|
|
|
. " | " . $this->searchForm()
|
|
|
|
|
. "<br>" . $this->pageStats();
|
|
|
|
|
|
|
|
|
|
$s .= "</td>";
|
2003-07-09 04:57:32 +00:00
|
|
|
if ( $shove && !$left ) { # Right
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= $this->getQuickbarCompensator();
|
|
|
|
|
}
|
|
|
|
|
$s .= "</tr></table>\n</div>\n</div>\n";
|
2003-10-25 08:01:33 +00:00
|
|
|
|
|
|
|
|
wfProfileOut( "$fname-3" );
|
|
|
|
|
wfProfileIn( "$fname-4" );
|
2003-04-14 23:10:40 +00:00
|
|
|
if ( 0 != $qb ) { $s .= $this->quickBar(); }
|
2003-10-25 08:01:33 +00:00
|
|
|
wfProfileOut( "$fname-4" );
|
2003-10-16 13:30:45 +00:00
|
|
|
wfProfileOut( $fname );
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function pageTitleLinks()
|
|
|
|
|
{
|
2003-09-01 13:59:33 +00:00
|
|
|
global $wgOut, $wgTitle, $oldid, $action, $diff, $wgUser, $wgLang, $wgUseApproval ;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$s = $this->printableLink();
|
2004-01-06 06:09:48 +00:00
|
|
|
if ( wfMsg ( "disclaimers" ) != "-" ) $s .= " | " . $this->makeKnownLink( wfMsg( "disclaimerpage" ), wfMsg( "disclaimers" ) ) ;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2004-01-17 09:49:43 +00:00
|
|
|
if ( $wgOut->isArticleRelated() ) {
|
2003-04-14 23:10:40 +00:00
|
|
|
if ( $wgTitle->getNamespace() == Namespace::getImage() ) {
|
|
|
|
|
$name = $wgTitle->getDBkey();
|
|
|
|
|
$link = wfEscapeHTML( wfImageUrl( $name ) );
|
|
|
|
|
$style = $this->getInternalLinkAttributes( $link, $name );
|
|
|
|
|
$s .= " | <a href=\"{$link}\"{$style}>{$name}</a>";
|
|
|
|
|
}
|
2003-11-22 12:30:13 +00:00
|
|
|
# This will show the "Approve" link if $wgUseApproval=true;
|
|
|
|
|
if ( isset ( $wgUseApproval ) && $wgUseApproval )
|
|
|
|
|
{
|
|
|
|
|
$t = $wgTitle->getDBkey();
|
|
|
|
|
$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>" ;
|
2004-01-17 09:49:43 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( "history" == $action || isset( $diff ) || isset( $oldid ) ) {
|
|
|
|
|
$s .= " | " . $this->makeKnownLink( $wgTitle->getPrefixedText(),
|
|
|
|
|
wfMsg( "currentrev" ) );
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2004-01-17 09:49:43 +00:00
|
|
|
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>";
|
2003-11-22 12:30:13 +00:00
|
|
|
}
|
2004-01-17 09:49:43 +00:00
|
|
|
}
|
|
|
|
|
if( $wgUser->isSysop() &&
|
|
|
|
|
(($wgTitle->getArticleId() == 0) || ($action == "history")) &&
|
|
|
|
|
($n = $wgTitle->isDeleted() ) ) {
|
|
|
|
|
$s .= " | " . wfMsg( "thisisdeleted",
|
|
|
|
|
$this->makeKnownLink(
|
|
|
|
|
$wgLang->SpecialPage( "Undelete/" . $wgTitle->getPrefixedDBkey() ),
|
|
|
|
|
wfMsg( "restorelink", $n ) ) );
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function printableLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle, $oldid, $action;
|
|
|
|
|
|
2003-11-19 02:25:39 +00:00
|
|
|
$q = "";
|
|
|
|
|
foreach( $_GET as $var => $val ) {
|
|
|
|
|
if( $var != "title" && $var != "printable" )
|
|
|
|
|
$q .= urlencode( $var ) . "=" . urlencode( $val );
|
|
|
|
|
}
|
|
|
|
|
if( !empty( $q ) ) $q .= "&";
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
$s = $this->makeKnownLink( $wgTitle->getPrefixedText(),
|
|
|
|
|
WfMsg( "printableversion" ), "{$q}printable=yes" );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function pageTitle()
|
|
|
|
|
{
|
2003-07-28 03:57:40 +00:00
|
|
|
global $wgOut, $wgTitle, $wgUser;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$s = "<h1 class='pagetitle'>" . $wgOut->getPageTitle() . "</h1>";
|
2003-07-28 03:57:40 +00:00
|
|
|
if($wgUser->getOption("editsectiononrightclick") && $wgTitle->userCanEdit()) { $s=$this->editSectionScript(0,$s);}
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function pageSubtitle()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut,$wgTitle,$wgNamespacesWithSubpages;
|
|
|
|
|
|
|
|
|
|
$sub = $wgOut->getSubtitle();
|
2003-11-09 11:45:12 +00:00
|
|
|
if ( "" == $sub ) {
|
|
|
|
|
global $wgExtraSubtitle;
|
|
|
|
|
$sub = wfMsg( "fromwikipedia" ) . $wgExtraSubtitle;
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
if($wgOut->isArticle() && $wgNamespacesWithSubpages[$wgTitle->getNamespace()]) {
|
2003-12-01 23:51:41 +00:00
|
|
|
$ptext=$wgTitle->getPrefixedText();
|
|
|
|
|
if(preg_match("/\//",$ptext)) {
|
|
|
|
|
$sub.="</p><p class='subpages'>";
|
2003-04-14 23:10:40 +00:00
|
|
|
$links=explode("/",$ptext);
|
|
|
|
|
$c=0;
|
|
|
|
|
$growinglink="";
|
|
|
|
|
foreach($links as $link) {
|
|
|
|
|
$c++;
|
2003-12-01 23:51:41 +00:00
|
|
|
if ($c<count($links)) {
|
|
|
|
|
$growinglink .= $link;
|
|
|
|
|
$getlink = $this->makeLink( $growinglink, $link );
|
2003-04-14 23:10:40 +00:00
|
|
|
if(preg_match("/class='new'/i",$getlink)) { break; } # this is a hack, but it saves time
|
2003-12-01 23:51:41 +00:00
|
|
|
if ($c>1) {
|
2003-04-14 23:10:40 +00:00
|
|
|
$sub .= " | ";
|
|
|
|
|
} else {
|
|
|
|
|
$sub .="< ";
|
|
|
|
|
}
|
|
|
|
|
$sub .= $getlink;
|
|
|
|
|
$growinglink.="/";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2003-12-01 23:51:41 +00:00
|
|
|
$s = "<p class='subtitle'>{$sub}\n";
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function nameAndLogin()
|
|
|
|
|
{
|
2003-05-17 04:40:09 +00:00
|
|
|
global $wgUser, $wgTitle, $wgLang, $wgShowIPinHeader;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$li = $wgLang->specialPage( "Userlogin" );
|
|
|
|
|
$lo = $wgLang->specialPage( "Userlogout" );
|
|
|
|
|
|
|
|
|
|
$s = "";
|
|
|
|
|
if ( 0 == $wgUser->getID() ) {
|
2003-05-17 04:40:09 +00:00
|
|
|
if( $wgShowIPinHeader ) {
|
|
|
|
|
$n = getenv( "REMOTE_ADDR" );
|
|
|
|
|
|
2003-10-16 13:30:45 +00:00
|
|
|
$tl = $this->makeKnownLink( $wgLang->getNsText(
|
2003-05-17 04:40:09 +00:00
|
|
|
Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}",
|
|
|
|
|
$wgLang->getNsText( Namespace::getTalk( 0 ) ) );
|
|
|
|
|
|
|
|
|
|
$s .= $n . " (".$tl.")";
|
|
|
|
|
} else {
|
|
|
|
|
$s .= wfMsg("notloggedin");
|
|
|
|
|
}
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
$rt = $wgTitle->getPrefixedURL();
|
|
|
|
|
if ( 0 == strcasecmp( urlencode( $lo ), $rt ) ) {
|
|
|
|
|
$q = "";
|
|
|
|
|
} else { $q = "returnto={$rt}"; }
|
|
|
|
|
|
2003-05-17 04:40:09 +00:00
|
|
|
$s .= "\n<br>" . $this->makeKnownLink( $li,
|
|
|
|
|
wfMsg( "login" ), $q );
|
2003-04-14 23:10:40 +00:00
|
|
|
} else {
|
|
|
|
|
$n = $wgUser->getName();
|
|
|
|
|
$rt = $wgTitle->getPrefixedURL();
|
|
|
|
|
$tl = $this->makeKnownLink( $wgLang->getNsText(
|
|
|
|
|
Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}",
|
|
|
|
|
$wgLang->getNsText( Namespace::getTalk( 0 ) ) );
|
|
|
|
|
|
|
|
|
|
$tl = " ({$tl})";
|
|
|
|
|
|
|
|
|
|
$s .= $this->makeKnownLink( $wgLang->getNsText(
|
|
|
|
|
Namespace::getUser() ) . ":{$n}", $n ) . "{$tl}<br>" .
|
|
|
|
|
$this->makeKnownLink( $lo, wfMsg( "logout" ),
|
|
|
|
|
"returnto={$rt}" ) . " | " .
|
|
|
|
|
$this->specialLink( "preferences" );
|
|
|
|
|
}
|
|
|
|
|
$s .= " | " . $this->makeKnownLink( wfMsg( "helppage" ),
|
|
|
|
|
wfMsg( "help" ) );
|
|
|
|
|
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function searchForm()
|
|
|
|
|
{
|
|
|
|
|
global $search;
|
2003-05-14 21:23:46 +00:00
|
|
|
|
|
|
|
|
$s = "<form name='search' class='inline' method=get action=\""
|
2003-04-14 23:10:40 +00:00
|
|
|
. wfLocalUrl( "" ) . "\">"
|
|
|
|
|
. "<input type=text name=\"search\" size=19 value=\""
|
|
|
|
|
. htmlspecialchars(substr($search,0,256)) . "\">\n"
|
2003-05-14 21:23:46 +00:00
|
|
|
. "<input type=submit name=\"go\" value=\"" . wfMsg ("go") . "\"> "
|
|
|
|
|
. "<input type=submit value=\"" . wfMsg ("search") . "\"></form>";
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function topLinks()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut;
|
|
|
|
|
$sep = " |\n";
|
|
|
|
|
|
|
|
|
|
$s = $this->mainPageLink() . $sep
|
|
|
|
|
. $this->specialLink( "recentchanges" );
|
|
|
|
|
|
2004-01-17 09:49:43 +00:00
|
|
|
if ( $wgOut->isArticleRelated() ) {
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= $sep . $this->editThisPage()
|
|
|
|
|
. $sep . $this->historyLink();
|
|
|
|
|
}
|
2003-07-21 07:36:52 +00:00
|
|
|
# Many people don't like this dropdown box
|
|
|
|
|
#$s .= $sep . $this->specialPagesList();
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function bottomLinks()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgUser, $wgTitle;
|
|
|
|
|
$sep = " |\n";
|
|
|
|
|
|
|
|
|
|
$s = "";
|
2004-01-17 09:49:43 +00:00
|
|
|
if ( $wgOut->isArticleRelated() ) {
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= "<strong>" . $this->editThisPage() . "</strong>";
|
|
|
|
|
if ( 0 != $wgUser->getID() ) {
|
2003-07-28 03:57:40 +00:00
|
|
|
$s .= $sep . $this->watchThisPage();
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
$s .= $sep . $this->talkLink()
|
|
|
|
|
. $sep . $this->historyLink()
|
|
|
|
|
. $sep . $this->whatLinksHere()
|
|
|
|
|
. $sep . $this->watchPageLinksLink();
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->getNamespace() == Namespace::getUser()
|
|
|
|
|
|| $wgTitle->getNamespace() == Namespace::getTalk(Namespace::getUser()) )
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
$id=User::idFromName($wgTitle->getText());
|
|
|
|
|
$ip=User::isIP($wgTitle->getText());
|
|
|
|
|
|
|
|
|
|
if($id || $ip) { # both anons and non-anons have contri list
|
|
|
|
|
$s .= $sep . $this->userContribsLink();
|
|
|
|
|
}
|
|
|
|
|
if ( 0 != $wgUser->getID() ) { # show only to signed in users
|
|
|
|
|
if($id) { # can only email non-anons
|
|
|
|
|
$s .= $sep . $this->emailUserLink();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( $wgUser->isSysop() && $wgTitle->getArticleId() ) {
|
|
|
|
|
$s .= "\n<br>" . $this->deleteThisPage() .
|
2003-07-28 03:57:40 +00:00
|
|
|
$sep . $this->protectThisPage() .
|
|
|
|
|
$sep . $this->moveThisPage();
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
$s .= "<br>\n" . $this->otherLanguages();
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function pageStats()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgLang, $wgArticle;
|
2003-05-14 08:42:47 +00:00
|
|
|
global $oldid, $diff, $wgDisableCounters;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
if ( ! $wgOut->isArticle() ) { return ""; }
|
|
|
|
|
if ( isset( $oldid ) || isset( $diff ) ) { return ""; }
|
|
|
|
|
if ( 0 == $wgArticle->getID() ) { return ""; }
|
|
|
|
|
|
2003-05-14 08:42:47 +00:00
|
|
|
if ( $wgDisableCounters ) {
|
2003-05-01 00:19:49 +00:00
|
|
|
$s = "";
|
|
|
|
|
} else {
|
|
|
|
|
$count = $wgArticle->getCount();
|
2003-11-15 14:11:30 +00:00
|
|
|
$s = wfMsg( "viewcount", $count );
|
2003-05-01 00:19:49 +00:00
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= $this->lastModified();
|
2003-05-01 00:19:49 +00:00
|
|
|
$s .= " " . wfMsg( "gnunote" );
|
2003-04-14 23:10:40 +00:00
|
|
|
return "<span id='pagestats'>{$s}</span>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function lastModified()
|
|
|
|
|
{
|
|
|
|
|
global $wgLang, $wgArticle;
|
|
|
|
|
|
|
|
|
|
$d = $wgLang->timeanddate( $wgArticle->getTimestamp(), true );
|
2003-11-15 14:11:30 +00:00
|
|
|
$s = " " . wfMsg( "lastmodified", $d );
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function logoText( $align = "" )
|
|
|
|
|
{
|
|
|
|
|
if ( "" != $align ) { $a = " align='{$align}'"; }
|
|
|
|
|
else { $a = ""; }
|
|
|
|
|
|
|
|
|
|
$mp = wfMsg( "mainpage" );
|
2003-09-06 06:05:57 +00:00
|
|
|
$s = "<a href=\"" . wfLocalUrlE( urlencode( $mp ) )
|
|
|
|
|
. "\"><img{$a} border=0 src=\""
|
2003-04-14 23:10:40 +00:00
|
|
|
. $this->getLogo() . "\" alt=\"" . "[{$mp}]\"></a>";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function quickBar()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle, $wgUser, $action, $wgLang;
|
2004-01-11 23:29:23 +00:00
|
|
|
global $wpPreview, $wgDisableUploads, $wgRemoteUploads;
|
2003-12-12 22:05:50 +00:00
|
|
|
|
2003-10-16 13:30:45 +00:00
|
|
|
$fname = "Skin::quickBar";
|
|
|
|
|
wfProfileIn( $fname );
|
|
|
|
|
|
2003-07-21 07:36:52 +00:00
|
|
|
$tns=$wgTitle->getNamespace();
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$s = "\n<div id='quickbar'>";
|
2003-07-21 07:36:52 +00:00
|
|
|
$s .= "\n" . $this->logoText() . "\n<hr class='sep'>";
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$sep = "\n<br>";
|
|
|
|
|
$s .= $this->mainPageLink()
|
|
|
|
|
. $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() ) );
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// only show watchlist link if logged in
|
2003-10-16 13:30:45 +00:00
|
|
|
if ( wfMsg ( "currentevents" ) != "-" ) $s .= $sep . $this->makeKnownLink( wfMsg( "currentevents" ), "" ) ;
|
|
|
|
|
$s .= "\n<br><hr class='sep'>";
|
2003-04-14 23:10:40 +00:00
|
|
|
$articleExists = $wgTitle->getArticleId();
|
2003-10-16 13:30:45 +00:00
|
|
|
if ( $wgOut->isArticle() || $action =="edit" || $action =="history" || $wpPreview) {
|
2003-04-14 23:10:40 +00:00
|
|
|
if($wgOut->isArticle()) {
|
|
|
|
|
$s .= "<strong>" . $this->editThisPage() . "</strong>";
|
|
|
|
|
} else { # backlink to the article in edit or history mode
|
|
|
|
|
if($articleExists){ # no backlink if no article
|
|
|
|
|
switch($tns) {
|
|
|
|
|
case 0:
|
|
|
|
|
$text = wfMsg("articlepage");
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
$text = wfMsg("viewtalkpage");
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$text = wfMsg("userpage");
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
$text = wfMsg("viewtalkpage");
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
$text = wfMsg("wikipediapage");
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
$text = wfMsg("viewtalkpage");
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
$text = wfMsg("imagepage");
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
$text = wfMsg("viewtalkpage");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
$text= wfMsg("articlepage");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$link = $wgTitle->getText();
|
|
|
|
|
if ($nstext = $wgLang->getNsText($tns) ) { # add namespace if necessary
|
|
|
|
|
$link = $nstext . ":" . $link ;
|
|
|
|
|
}
|
2003-10-22 23:56:49 +00:00
|
|
|
|
|
|
|
|
$s .= $this->makeLink( $link, $text );
|
2003-04-14 23:10:40 +00:00
|
|
|
} 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>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2003-07-21 07:36:52 +00:00
|
|
|
|
|
|
|
|
if( $tns%2 && $action!="edit" && !$wpPreview) {
|
|
|
|
|
$s.="<br>".$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg("postcomment"),"action=edit§ion=new");
|
|
|
|
|
}
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
/*
|
|
|
|
|
watching could cause problems in edit mode:
|
|
|
|
|
if user edits article, then loads "watch this article" in background and then saves
|
|
|
|
|
article with "Watch this article" checkbox disabled, the article is transparently
|
|
|
|
|
unwatched. Therefore we do not show the "Watch this page" link in edit mode
|
|
|
|
|
*/
|
|
|
|
|
if ( 0 != $wgUser->getID() && $articleExists) {
|
2004-01-17 09:49:43 +00:00
|
|
|
if($action!="edit" && $action != "submit" )
|
2003-11-22 12:30:13 +00:00
|
|
|
{
|
|
|
|
|
$s .= $sep . $this->watchThisPage();
|
|
|
|
|
}
|
|
|
|
|
if ( $wgTitle->userCanEdit() )
|
|
|
|
|
$s .= $sep . $this->moveThisPage();
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
if ( $wgUser->isSysop() and $articleExists ) {
|
|
|
|
|
$s .= $sep . $this->deleteThisPage() .
|
|
|
|
|
$sep . $this->protectThisPage();
|
|
|
|
|
}
|
|
|
|
|
$s .= $sep . $this->talkLink();
|
2003-11-22 12:30:13 +00:00
|
|
|
if ($articleExists && $action !="history") {
|
|
|
|
|
$s .= $sep . $this->historyLink();
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
$s.=$sep . $this->whatLinksHere();
|
|
|
|
|
|
2004-01-17 09:49:43 +00:00
|
|
|
if($wgOut->isArticleRelated()) {
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= $sep . $this->watchPageLinksLink();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( Namespace::getUser() == $wgTitle->getNamespace()
|
|
|
|
|
|| $wgTitle->getNamespace() == Namespace::getTalk(Namespace::getUser())
|
|
|
|
|
) {
|
|
|
|
|
|
|
|
|
|
$id=User::idFromName($wgTitle->getText());
|
|
|
|
|
$ip=User::isIP($wgTitle->getText());
|
|
|
|
|
|
|
|
|
|
if($id||$ip) {
|
|
|
|
|
$s .= $sep . $this->userContribsLink();
|
|
|
|
|
}
|
|
|
|
|
if ( 0 != $wgUser->getID() ) {
|
|
|
|
|
if($id) { # can only email real users
|
|
|
|
|
$s .= $sep . $this->emailUserLink();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2003-07-21 07:36:52 +00:00
|
|
|
$s .= "\n<br><hr class='sep'>";
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
|
2004-01-11 23:29:23 +00:00
|
|
|
if ( 0 != $wgUser->getID() && ( !$wgDisableUploads || $wgRemoteUploads ) ) {
|
2003-04-14 23:10:40 +00:00
|
|
|
$s .= $this->specialLink( "upload" ) . $sep;
|
|
|
|
|
}
|
|
|
|
|
$s .= $this->specialLink( "specialpages" )
|
|
|
|
|
. $sep . $this->bugReportsLink();
|
2003-11-09 11:45:12 +00:00
|
|
|
|
|
|
|
|
global $wgSiteSupportPage;
|
|
|
|
|
if( $wgSiteSupportPage ) {
|
|
|
|
|
$s .= "\n<br><a href=\"" . htmlspecialchars( $wgSiteSupportPage ) .
|
2003-12-08 10:35:10 +00:00
|
|
|
"\" class=\"internal\">" . wfMsg( "sitesupport" ) . "</a>";
|
2003-11-09 11:45:12 +00:00
|
|
|
}
|
|
|
|
|
|
2003-07-21 07:36:52 +00:00
|
|
|
$s .= "\n<br></div>\n";
|
2003-10-16 13:30:45 +00:00
|
|
|
wfProfileOut( $fname );
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function specialPagesList()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgLang, $wgServer, $wgRedirectScript;
|
|
|
|
|
$a = array();
|
|
|
|
|
|
|
|
|
|
$validSP = $wgLang->getValidSpecialPages();
|
|
|
|
|
|
|
|
|
|
foreach ( $validSP as $name => $desc ) {
|
|
|
|
|
if ( "" == $desc ) { continue; }
|
|
|
|
|
$a[$name] = $desc;
|
|
|
|
|
}
|
|
|
|
|
if ( $wgUser->isSysop() )
|
|
|
|
|
{
|
|
|
|
|
$sysopSP = $wgLang->getSysopSpecialPages();
|
|
|
|
|
|
|
|
|
|
foreach ( $sysopSP as $name => $desc ) {
|
|
|
|
|
if ( "" == $desc ) { continue; }
|
|
|
|
|
$a[$name] = $desc ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( $wgUser->isDeveloper() )
|
|
|
|
|
{
|
|
|
|
|
$devSP = $wgLang->getDeveloperSpecialPages();
|
|
|
|
|
|
|
|
|
|
foreach ( $devSP as $name => $desc ) {
|
|
|
|
|
if ( "" == $desc ) { continue; }
|
|
|
|
|
$a[$name] = $desc ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$go = wfMsg( "go" );
|
|
|
|
|
$sp = wfMsg( "specialpages" );
|
|
|
|
|
$spp = $wgLang->specialPage( "Specialpages" );
|
|
|
|
|
|
|
|
|
|
$s = "<form id=\"specialpages\" method=\"get\" class=\"inline\" " .
|
|
|
|
|
"action=\"{$wgServer}{$wgRedirectScript}\">\n";
|
|
|
|
|
$s .= "<select name=\"wpDropdown\">\n";
|
|
|
|
|
$s .= "<option value=\"{$spp}\">{$sp}</option>\n";
|
|
|
|
|
|
|
|
|
|
foreach ( $a as $name => $desc ) {
|
|
|
|
|
$p = $wgLang->specialPage( $name );
|
|
|
|
|
$s .= "<option value=\"{$p}\">{$desc}</option>\n";
|
|
|
|
|
}
|
|
|
|
|
$s .= "</select>\n";
|
|
|
|
|
$s .= "<input type=submit value=\"{$go}\" name=redirect>\n";
|
|
|
|
|
$s .= "</form>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function mainPageLink()
|
|
|
|
|
{
|
|
|
|
|
$mp = wfMsg( "mainpage" );
|
|
|
|
|
$s = $this->makeKnownLink( $mp, $mp );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function copyrightLink()
|
|
|
|
|
{
|
|
|
|
|
$s = $this->makeKnownLink( wfMsg( "copyrightpage" ),
|
|
|
|
|
wfMsg( "copyrightpagename" ) );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function aboutLink()
|
|
|
|
|
{
|
|
|
|
|
$s = $this->makeKnownLink( wfMsg( "aboutpage" ),
|
|
|
|
|
wfMsg( "aboutwikipedia" ) );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
2004-01-06 06:00:01 +00:00
|
|
|
|
|
|
|
|
function disclaimerLink()
|
|
|
|
|
{
|
|
|
|
|
$s = $this->makeKnownLink( wfMsg( "disclaimerpage" ),
|
|
|
|
|
wfMsg( "disclaimers" ) );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
function editThisPage()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle, $oldid, $redirect, $diff;
|
|
|
|
|
|
2004-01-17 09:49:43 +00:00
|
|
|
if ( ! $wgOut->isArticleRelated() ) {
|
2003-04-14 23:10:40 +00:00
|
|
|
$s = wfMsg( "protectedpage" );
|
2003-12-25 03:25:17 +00:00
|
|
|
} else {
|
2003-04-14 23:10:40 +00:00
|
|
|
$n = $wgTitle->getPrefixedText();
|
2003-12-25 03:25:17 +00:00
|
|
|
if ( $wgTitle->userCanEdit() ) {
|
|
|
|
|
$t = wfMsg( "editthispage" );
|
|
|
|
|
} else {
|
|
|
|
|
#$t = wfMsg( "protectedpage" );
|
|
|
|
|
$t = wfMsg( "viewsource" );
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
$oid = $red = "";
|
|
|
|
|
|
|
|
|
|
if ( $redirect ) { $red = "&redirect={$redirect}"; }
|
|
|
|
|
if ( $oldid && ! isset( $diff ) ) {
|
|
|
|
|
$oid = "&oldid={$oldid}";
|
|
|
|
|
}
|
|
|
|
|
$s = $this->makeKnownLink( $n, $t, "action=edit{$oid}{$red}" );
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function deleteThisPage()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgTitle, $diff;
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isSysop() ) {
|
|
|
|
|
$n = $wgTitle->getPrefixedText();
|
|
|
|
|
$t = wfMsg( "deletethispage" );
|
|
|
|
|
|
|
|
|
|
$s = $this->makeKnownLink( $n, $t, "action=delete" );
|
|
|
|
|
} else {
|
2003-11-22 12:30:13 +00:00
|
|
|
$s = "";
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function protectThisPage()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgTitle, $diff;
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isSysop() ) {
|
|
|
|
|
$n = $wgTitle->getPrefixedText();
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->isProtected() ) {
|
|
|
|
|
$t = wfMsg( "unprotectthispage" );
|
|
|
|
|
$q = "action=unprotect";
|
|
|
|
|
} else {
|
|
|
|
|
$t = wfMsg( "protectthispage" );
|
|
|
|
|
$q = "action=protect";
|
|
|
|
|
}
|
|
|
|
|
$s = $this->makeKnownLink( $n, $t, $q );
|
|
|
|
|
} else {
|
2003-11-22 12:30:13 +00:00
|
|
|
$s = "";
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function watchThisPage()
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgOut, $wgTitle, $diff;
|
|
|
|
|
|
2004-01-17 09:49:43 +00:00
|
|
|
if ( $wgOut->isArticleRelated() ) {
|
2003-04-14 23:10:40 +00:00
|
|
|
$n = $wgTitle->getPrefixedText();
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->userIsWatching() ) {
|
|
|
|
|
$t = wfMsg( "unwatchthispage" );
|
|
|
|
|
$q = "action=unwatch";
|
|
|
|
|
} else {
|
|
|
|
|
$t = wfMsg( "watchthispage" );
|
|
|
|
|
$q = "action=watch";
|
|
|
|
|
}
|
|
|
|
|
$s = $this->makeKnownLink( $n, $t, $q );
|
|
|
|
|
} else {
|
|
|
|
|
$s = wfMsg( "notanarticle" );
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function moveThisPage()
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang;
|
|
|
|
|
|
|
|
|
|
if ( $wgTitle->userCanEdit() ) {
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage( "Movepage" ),
|
|
|
|
|
wfMsg( "movethispage" ), "target=" . $wgTitle->getPrefixedURL() );
|
|
|
|
|
} // no message if page is protected - would be redundant
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function historyLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle;
|
|
|
|
|
|
|
|
|
|
$s = $this->makeKnownLink( $wgTitle->getPrefixedText(),
|
|
|
|
|
wfMsg( "history" ), "action=history" );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function whatLinksHere()
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang;
|
|
|
|
|
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage( "Whatlinkshere" ),
|
|
|
|
|
wfMsg( "whatlinkshere" ), "target=" . $wgTitle->getPrefixedURL() );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function userContribsLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang;
|
|
|
|
|
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
|
|
|
|
|
wfMsg( "contributions" ), "target=" . $wgTitle->getURL() );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function emailUserLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang;
|
|
|
|
|
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage( "Emailuser" ),
|
|
|
|
|
wfMsg( "emailuser" ), "target=" . $wgTitle->getURL() );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function watchPageLinksLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle, $wgLang;
|
|
|
|
|
|
2004-01-17 09:49:43 +00:00
|
|
|
if ( ! $wgOut->isArticleRelated() ) {
|
2003-04-14 23:10:40 +00:00
|
|
|
$s = "(" . wfMsg( "notanarticle" ) . ")";
|
|
|
|
|
} else {
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage(
|
|
|
|
|
"Recentchangeslinked" ), wfMsg( "recentchangeslinked" ),
|
|
|
|
|
"target=" . $wgTitle->getPrefixedURL() );
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function otherLanguages()
|
|
|
|
|
{
|
2004-01-10 14:18:05 +00:00
|
|
|
global $wgOut, $wgLang, $wgTitle, $wgUseNewInterlanguage;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$a = $wgOut->getLanguageLinks();
|
2003-11-09 11:45:12 +00:00
|
|
|
# TEST THIS @@@
|
2003-04-14 23:10:40 +00:00
|
|
|
if ( 0 == count( $a ) ) {
|
|
|
|
|
if ( !$wgUseNewInterlanguage ) return "";
|
|
|
|
|
$ns = $wgLang->getNsIndex ( $wgTitle->getNamespace () ) ;
|
|
|
|
|
if ( $ns != 0 AND $ns != 1 ) return "" ;
|
2003-10-16 13:30:45 +00:00
|
|
|
$pn = "Intl" ;
|
2003-04-14 23:10:40 +00:00
|
|
|
$x = "mode=addlink&xt=".$wgTitle->getDBkey() ;
|
|
|
|
|
return $this->makeKnownLink( $wgLang->specialPage( $pn ),
|
|
|
|
|
wfMsg( "intl" ) , $x );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( !$wgUseNewInterlanguage ) {
|
|
|
|
|
$s = wfMsg( "otherlanguages" ) . ": ";
|
|
|
|
|
} else {
|
|
|
|
|
global $wgLanguageCode ;
|
|
|
|
|
$x = "mode=zoom&xt=".$wgTitle->getDBkey() ;
|
|
|
|
|
$x .= "&xl=".$wgLanguageCode ;
|
|
|
|
|
$s = $this->makeKnownLink( $wgLang->specialPage( "Intl" ),
|
|
|
|
|
wfMsg( "otherlanguages" ) , $x ) . ": " ;
|
|
|
|
|
}
|
|
|
|
|
|
2003-11-09 11:45:12 +00:00
|
|
|
$s = wfMsg( "otherlanguages" ) . ": ";
|
2003-04-14 23:10:40 +00:00
|
|
|
$first = true;
|
2003-07-13 22:45:09 +00:00
|
|
|
if($wgLang->isRTL()) $s .= "<span dir='LTR'>";
|
2003-04-14 23:10:40 +00:00
|
|
|
foreach( $a as $l ) {
|
|
|
|
|
if ( ! $first ) { $s .= " | "; }
|
|
|
|
|
$first = false;
|
|
|
|
|
|
|
|
|
|
$nt = Title::newFromText( $l );
|
|
|
|
|
$url = $nt->getFullURL();
|
|
|
|
|
$text = $wgLang->getLanguageName( $nt->getInterwiki() );
|
|
|
|
|
|
|
|
|
|
if ( "" == $text ) { $text = $l; }
|
|
|
|
|
$style = $this->getExternalLinkAttributes( $l, $text );
|
|
|
|
|
$s .= "<a href=\"{$url}\"{$style}>{$text}</a>";
|
|
|
|
|
}
|
2003-07-13 22:45:09 +00:00
|
|
|
if($wgLang->isRTL()) $s .= "</span>";
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function bugReportsLink()
|
|
|
|
|
{
|
|
|
|
|
$s = $this->makeKnownLink( wfMsg( "bugreportspage" ),
|
|
|
|
|
wfMsg( "bugreports" ) );
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function dateLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgLinkCache;
|
2003-06-30 01:33:16 +00:00
|
|
|
$t1 = Title::newFromText( gmdate( "F j" ) );
|
|
|
|
|
$t2 = Title::newFromText( gmdate( "Y" ) );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$wgLinkCache->suspend();
|
|
|
|
|
$id = $t1->getArticleID();
|
|
|
|
|
$wgLinkCache->resume();
|
|
|
|
|
|
|
|
|
|
if ( 0 == $id ) {
|
|
|
|
|
$s = $this->makeBrokenLink( $t1->getText() );
|
|
|
|
|
} else {
|
|
|
|
|
$s = $this->makeKnownLink( $t1->getText() );
|
|
|
|
|
}
|
|
|
|
|
$s .= ", ";
|
|
|
|
|
|
|
|
|
|
$wgLinkCache->suspend();
|
|
|
|
|
$id = $t2->getArticleID();
|
|
|
|
|
$wgLinkCache->resume();
|
|
|
|
|
|
|
|
|
|
if ( 0 == $id ) {
|
|
|
|
|
$s .= $this->makeBrokenLink( $t2->getText() );
|
|
|
|
|
} else {
|
|
|
|
|
$s .= $this->makeKnownLink( $t2->getText() );
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function talkLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgLang, $wgTitle, $wgLinkCache;
|
|
|
|
|
|
|
|
|
|
$tns = $wgTitle->getNamespace();
|
|
|
|
|
if ( -1 == $tns ) { return ""; }
|
|
|
|
|
|
|
|
|
|
$pn = $wgTitle->getText();
|
|
|
|
|
$tp = wfMsg( "talkpage" );
|
|
|
|
|
if ( Namespace::isTalk( $tns ) ) {
|
|
|
|
|
$lns = Namespace::getSubject( $tns );
|
|
|
|
|
switch($tns) {
|
|
|
|
|
case 1:
|
|
|
|
|
$text = wfMsg("articlepage");
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
$text = wfMsg("userpage");
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
$text = wfMsg("wikipediapage");
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
$text = wfMsg("imagepage");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
$text= wfMsg("articlepage");
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
$lns = Namespace::getTalk( $tns );
|
|
|
|
|
$text=$tp;
|
|
|
|
|
}
|
|
|
|
|
$n = $wgLang->getNsText( $lns );
|
|
|
|
|
if ( "" == $n ) { $link = $pn; }
|
|
|
|
|
else { $link = "{$n}:{$pn}"; }
|
|
|
|
|
|
|
|
|
|
$wgLinkCache->suspend();
|
|
|
|
|
$s = $this->makeLink( $link, $text );
|
|
|
|
|
$wgLinkCache->resume();
|
|
|
|
|
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
2003-11-22 12:30:13 +00:00
|
|
|
function commentLink()
|
|
|
|
|
{
|
|
|
|
|
global $wgLang, $wgTitle, $wgLinkCache;
|
|
|
|
|
|
|
|
|
|
$tns = $wgTitle->getNamespace();
|
|
|
|
|
if ( -1 == $tns ) { return ""; }
|
|
|
|
|
|
|
|
|
|
$lns = ( Namespace::isTalk( $tns ) ) ? $tns : Namespace::getTalk( $tns );
|
|
|
|
|
|
|
|
|
|
# assert Namespace::isTalk( $lns )
|
|
|
|
|
|
|
|
|
|
$n = $wgLang->getNsText( $lns );
|
|
|
|
|
$pn = $wgTitle->getText();
|
|
|
|
|
|
|
|
|
|
$link = "{$n}:{$pn}";
|
|
|
|
|
|
|
|
|
|
$wgLinkCache->suspend();
|
|
|
|
|
$s = $this->makeKnownLink($link, wfMsg("postcomment"), "action=edit§ion=new");
|
|
|
|
|
$wgLinkCache->resume();
|
|
|
|
|
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
# After all the page content is transformed into HTML, it makes
|
|
|
|
|
# a final pass through here for things like table backgrounds.
|
|
|
|
|
#
|
|
|
|
|
function transformContent( $text )
|
2003-10-16 13:30:45 +00:00
|
|
|
{
|
2003-04-14 23:10:40 +00:00
|
|
|
return $text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Note: This function MUST call getArticleID() on the link,
|
|
|
|
|
# otherwise the cache won't get updated properly. See LINKCACHE.DOC.
|
|
|
|
|
#
|
2003-10-22 23:56:49 +00:00
|
|
|
function makeLink( $title, $text = "", $query = "", $trail = "" ) {
|
2003-10-25 08:01:33 +00:00
|
|
|
wfProfileIn( "Skin::makeLink" );
|
2003-11-21 01:12:01 +00:00
|
|
|
$nt = Title::newFromText( $title );
|
|
|
|
|
if ($nt) {
|
|
|
|
|
$result = $this->makeLinkObj( Title::newFromText( $title ), $text, $query, $trail );
|
|
|
|
|
} else {
|
2003-12-01 23:51:41 +00:00
|
|
|
wfDebug( "Invalid title passed to Skin::makeLink(): \"$title\"\n" );
|
2003-11-21 01:12:01 +00:00
|
|
|
$result = $text == "" ? $title : $text;
|
|
|
|
|
}
|
|
|
|
|
|
2003-10-25 08:01:33 +00:00
|
|
|
wfProfileOut( "Skin::makeLink" );
|
|
|
|
|
return $result;
|
2003-10-22 23:56:49 +00:00
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2003-10-22 23:56:49 +00:00
|
|
|
function makeKnownLink( $title, $text = "", $query = "", $trail = "" ) {
|
2003-11-21 01:12:01 +00:00
|
|
|
$nt = Title::newFromText( $title );
|
|
|
|
|
if ($nt) {
|
|
|
|
|
return $this->makeKnownLinkObj( Title::newFromText( $title ), $text, $query, $trail );
|
|
|
|
|
} else {
|
2003-12-01 23:51:41 +00:00
|
|
|
wfDebug( "Invalid title passed to Skin::makeKnownLink(): \"$title\"\n" );
|
2003-11-21 01:12:01 +00:00
|
|
|
return $text == "" ? $title : $text;
|
|
|
|
|
}
|
2003-10-22 23:56:49 +00:00
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2003-10-22 23:56:49 +00:00
|
|
|
function makeBrokenLink( $title, $text = "", $query = "", $trail = "" ) {
|
2003-11-21 01:12:01 +00:00
|
|
|
$nt = Title::newFromText( $title );
|
|
|
|
|
if ($nt) {
|
|
|
|
|
return $this->makeBrokenLinkObj( Title::newFromText( $title ), $text, $query, $trail );
|
|
|
|
|
} else {
|
2003-12-01 23:51:41 +00:00
|
|
|
wfDebug( "Invalid title passed to Skin::makeBrokenLink(): \"$title\"\n" );
|
2003-11-21 01:12:01 +00:00
|
|
|
return $text == "" ? $title : $text;
|
|
|
|
|
}
|
2003-10-22 23:56:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function makeStubLink( $title, $text = "", $query = "", $trail = "" ) {
|
2003-11-21 01:12:01 +00:00
|
|
|
$nt = Title::newFromText( $title );
|
|
|
|
|
if ($nt) {
|
|
|
|
|
return $this->makeStubLinkObj( Title::newFromText( $title ), $text, $query, $trail );
|
|
|
|
|
} else {
|
2003-12-01 23:51:41 +00:00
|
|
|
wfDebug( "Invalid title passed to Skin::makeStubLink(): \"$title\"\n" );
|
2003-11-21 01:12:01 +00:00
|
|
|
return $text == "" ? $title : $text;
|
|
|
|
|
}
|
2003-10-22 23:56:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Pass a title object, not a title string
|
|
|
|
|
function makeLinkObj( &$nt, $text= "", $query = "", $trail = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgUser;
|
2003-04-14 23:10:40 +00:00
|
|
|
if ( $nt->isExternal() ) {
|
|
|
|
|
$u = $nt->getFullURL();
|
|
|
|
|
if ( "" == $text ) { $text = $nt->getPrefixedText(); }
|
|
|
|
|
$style = $this->getExternalLinkAttributes( $link, $text );
|
|
|
|
|
|
|
|
|
|
$inside = "";
|
|
|
|
|
if ( "" != $trail ) {
|
|
|
|
|
if ( preg_match( "/^([a-z]+)(.*)$$/sD", $trail, $m ) ) {
|
|
|
|
|
$inside = $m[1];
|
|
|
|
|
$trail = $m[2];
|
|
|
|
|
}
|
|
|
|
|
}
|
2003-10-22 23:56:49 +00:00
|
|
|
$retVal = "<a href=\"{$u}\"{$style}>{$text}{$inside}</a>{$trail}";
|
|
|
|
|
} elseif ( 0 == $nt->getNamespace() && "" == $nt->getText() ) {
|
|
|
|
|
$retVal = $this->makeKnownLinkObj( $nt, $text, $query, $trail );
|
|
|
|
|
} elseif ( ( -1 == $nt->getNamespace() ) ||
|
2003-08-31 14:30:24 +00:00
|
|
|
( Namespace::getImage() == $nt->getNamespace() ) ) {
|
2003-10-22 23:56:49 +00:00
|
|
|
$retVal = $this->makeKnownLinkObj( $nt, $text, $query, $trail );
|
2003-08-31 14:30:24 +00:00
|
|
|
} else {
|
2003-10-22 23:56:49 +00:00
|
|
|
$aid = $nt->getArticleID() ;
|
|
|
|
|
if ( 0 == $aid ) {
|
|
|
|
|
$retVal = $this->makeBrokenLinkObj( $nt, $text, $query, $trail );
|
|
|
|
|
} 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 ) ;
|
|
|
|
|
|
|
|
|
|
if ( wfNumRows( $res ) > 0 ) {
|
|
|
|
|
$s = wfFetchObject( $res );
|
|
|
|
|
$size = $s->x;
|
|
|
|
|
if ( $s->cur_is_redirect OR $s->cur_namespace != 0 ) {
|
|
|
|
|
$size = $threshold*2 ; # Really big
|
|
|
|
|
}
|
|
|
|
|
wfFreeResult( $res );
|
|
|
|
|
} else {
|
2003-08-31 14:30:24 +00:00
|
|
|
$size = $threshold*2 ; # Really big
|
2003-10-22 23:56:49 +00:00
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$size = 1 ;
|
|
|
|
|
}
|
|
|
|
|
if ( $size < $threshold ) {
|
|
|
|
|
$retVal = $this->makeStubLinkObj( $nt, $text, $query, $trail );
|
|
|
|
|
} else {
|
|
|
|
|
$retVal = $this->makeKnownLinkObj( $nt, $text, $query, $trail );
|
|
|
|
|
}
|
|
|
|
|
}
|
2003-08-31 14:30:24 +00:00
|
|
|
}
|
2003-10-22 23:56:49 +00:00
|
|
|
return $retVal;
|
2003-08-31 14:30:24 +00:00
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2003-10-22 23:56:49 +00:00
|
|
|
# Pass a title object, not a title string
|
|
|
|
|
function makeKnownLinkObj( &$nt, $text = "", $query = "", $trail = "" )
|
2003-04-14 23:10:40 +00:00
|
|
|
{
|
|
|
|
|
global $wgOut, $wgTitle;
|
|
|
|
|
|
2003-10-22 23:56:49 +00:00
|
|
|
$fname = "Skin::makeKnownLinkObj";
|
|
|
|
|
wfProfileIn( $fname );
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
$link = $nt->getPrefixedURL();
|
|
|
|
|
|
|
|
|
|
if ( "" == $link ) {
|
|
|
|
|
$u = "";
|
|
|
|
|
if ( "" == $text ) { $text = $nt->getFragment(); }
|
|
|
|
|
} else {
|
|
|
|
|
$u = wfLocalUrlE( $link, $query );
|
|
|
|
|
}
|
|
|
|
|
if ( "" != $nt->getFragment() ) {
|
|
|
|
|
$u .= "#" . wfEscapeHTML( $nt->getFragment() );
|
|
|
|
|
}
|
|
|
|
|
if ( "" == $text ) { $text = $nt->getPrefixedText(); }
|
2003-10-22 23:56:49 +00:00
|
|
|
$style = $this->getInternalLinkAttributesObj( $nt, $text );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$inside = "";
|
|
|
|
|
if ( "" != $trail ) {
|
|
|
|
|
if ( preg_match( wfMsg("linktrail"), $trail, $m ) ) {
|
|
|
|
|
$inside = $m[1];
|
|
|
|
|
$trail = $m[2];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$r = "<a href=\"{$u}\"{$style}>{$text}{$inside}</a>{$trail}";
|
2003-10-22 23:56:49 +00:00
|
|
|
wfProfileOut( $fname );
|
2003-04-14 23:10:40 +00:00
|
|
|
return $r;
|
|
|
|
|
}
|
2003-10-22 23:56:49 +00:00
|
|
|
|
|
|
|
|
# Pass a title object, not a title string
|
|
|
|
|
function makeBrokenLinkObj( &$nt, $text = "", $query = "", $trail = "" )
|
2003-04-14 23:10:40 +00:00
|
|
|
{
|
|
|
|
|
global $wgOut, $wgUser;
|
2003-10-22 23:56:49 +00:00
|
|
|
|
|
|
|
|
$fname = "Skin::makeBrokenLinkObj";
|
|
|
|
|
wfProfileIn( $fname );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$link = $nt->getPrefixedURL();
|
|
|
|
|
|
|
|
|
|
if ( "" == $query ) { $q = "action=edit"; }
|
|
|
|
|
else { $q = "action=edit&{$query}"; }
|
|
|
|
|
$u = wfLocalUrlE( $link, $q );
|
|
|
|
|
|
|
|
|
|
if ( "" == $text ) { $text = $nt->getPrefixedText(); }
|
2003-10-22 23:56:49 +00:00
|
|
|
$style = $this->getInternalLinkAttributesObj( $nt, $text, "yes" );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$inside = "";
|
|
|
|
|
if ( "" != $trail ) {
|
|
|
|
|
if ( preg_match( wfMsg("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}";
|
|
|
|
|
} else {
|
|
|
|
|
$s = "{$text}{$inside}<a href=\"{$u}\"{$style}>?</a>{$trail}";
|
|
|
|
|
}
|
2003-10-22 23:56:49 +00:00
|
|
|
|
|
|
|
|
wfProfileOut( $fname );
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
2003-10-22 23:56:49 +00:00
|
|
|
|
|
|
|
|
# Pass a title object, not a title string
|
|
|
|
|
function makeStubLinkObj( &$nt, $text = "", $query = "", $trail = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgOut, $wgUser;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2003-10-22 23:56:49 +00:00
|
|
|
$link = $nt->getPrefixedURL();
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2003-10-22 23:56:49 +00:00
|
|
|
$u = wfLocalUrlE( $link, $query );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2003-10-22 23:56:49 +00:00
|
|
|
if ( "" == $text ) { $text = $nt->getPrefixedText(); }
|
|
|
|
|
$style = $this->getInternalLinkAttributesObj( $nt, $text, "stub" );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2003-10-22 23:56:49 +00:00
|
|
|
$inside = "";
|
|
|
|
|
if ( "" != $trail ) {
|
|
|
|
|
if ( preg_match( wfMsg("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}";
|
|
|
|
|
} else {
|
|
|
|
|
$s = "{$text}{$inside}<a href=\"{$u}\"{$style}>!</a>{$trail}";
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
function fnamePart( $url )
|
|
|
|
|
{
|
|
|
|
|
$basename = strrchr( $url, "/" );
|
|
|
|
|
if ( false === $basename ) { $basename = $url; }
|
|
|
|
|
else { $basename = substr( $basename, 1 ); }
|
|
|
|
|
return wfEscapeHTML( $basename );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function makeImage( $url, $alt = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgOut;
|
|
|
|
|
|
|
|
|
|
if ( "" == $alt ) { $alt = $this->fnamePart( $url ); }
|
|
|
|
|
$s = "<img src=\"{$url}\" alt=\"{$alt}\">";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
2003-11-09 11:45:12 +00:00
|
|
|
|
|
|
|
|
function makeImageLink( $name, $url, $alt = "" ) {
|
|
|
|
|
$nt = Title::makeTitle( Namespace::getImage(), $name );
|
|
|
|
|
return $this->makeImageLinkObj( $nt, $alt );
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2003-11-09 11:45:12 +00:00
|
|
|
function makeImageLinkObj( $nt, $alt = "" ) {
|
2004-01-12 00:55:01 +00:00
|
|
|
global $wgLang, $wgUseImageResize;
|
|
|
|
|
$link = $nt->getPrefixedURL();
|
|
|
|
|
$name = $nt->getDBKey();
|
|
|
|
|
$url = wfImageUrl( $name );
|
|
|
|
|
$align = "";
|
|
|
|
|
|
|
|
|
|
if ( $wgUseImageResize ) {
|
|
|
|
|
# Check if the alt text is of the form "options|alt text"
|
|
|
|
|
# Options are:
|
|
|
|
|
# * thumbnail make a thumbnail with enlarge-icon and caption, alignment depends on lang
|
|
|
|
|
# * left no resizing, just left align. label is used for alt= only
|
|
|
|
|
# * right same, but right aligned
|
|
|
|
|
# * none same, but not aligned
|
|
|
|
|
# * ___px scale to ___ pixels width, no aligning. e.g. use in taxobox
|
|
|
|
|
|
|
|
|
|
$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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $thumb ) {
|
|
|
|
|
|
|
|
|
|
# Create a thumbnail. Alignment depends on language
|
|
|
|
|
# writing direction, # right aligned for left-to-right-
|
|
|
|
|
# languages ("Western languages"), left-aligned
|
|
|
|
|
# for right-to-left-languages ("Semitic languages")
|
|
|
|
|
#
|
|
|
|
|
# If thumbnail width has not been provided, it is set
|
|
|
|
|
# here to 180 pixels
|
|
|
|
|
if ( $align == "" ) {
|
|
|
|
|
$align = $wgLang->isRTL() ? "left" : "right";
|
|
|
|
|
}
|
|
|
|
|
if ( ! isset($width) ) {
|
|
|
|
|
$width = 180;
|
|
|
|
|
}
|
|
|
|
|
return $this->makeThumbLinkObj( $nt, $alt, $align, $width );
|
|
|
|
|
|
|
|
|
|
} elseif ( isset($width) ) {
|
|
|
|
|
|
|
|
|
|
# Create a resized image, without the additional thumbnail
|
|
|
|
|
# features
|
|
|
|
|
$url = $this->createThumb( $name, $width );
|
|
|
|
|
}
|
|
|
|
|
} # endif $wgUseImageResize
|
|
|
|
|
|
2003-11-09 11:45:12 +00:00
|
|
|
if ( empty( $alt ) ) {
|
|
|
|
|
$alt = preg_replace( '/\.(.+?)^/', '', $name );
|
|
|
|
|
}
|
|
|
|
|
$alt = htmlspecialchars( $alt );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$u = wfLocalUrlE( $link );
|
|
|
|
|
$s = "<a href=\"{$u}\" class='image' title=\"{$alt}\">" .
|
2003-11-09 11:45:12 +00:00
|
|
|
"<img border=\"0\" src=\"{$url}\" alt=\"{$alt}\"></a>";
|
2004-01-12 00:55:01 +00:00
|
|
|
if ( "" != $align ) {
|
|
|
|
|
$s = "<div class=\"float{$align}\">{$s}</div>";
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function createThumb( $name, $width ) {
|
|
|
|
|
global $wgUploadDirectory;
|
|
|
|
|
global $wgImageMagickConvertCommand;
|
2004-01-13 21:03:47 +00:00
|
|
|
global $wgUseImageMagick;
|
2004-01-12 00:55:01 +00:00
|
|
|
$imgPath = wfImagePath( $name );
|
|
|
|
|
$thumbName = $width."px-".$icon.$name;
|
|
|
|
|
$thumbPath = wfImageArchiveDir( $thumbName, "thumb" )."/".$thumbName;
|
|
|
|
|
$thumbUrl = wfImageArchiveUrl( $thumbName, "thumb" );
|
|
|
|
|
|
2004-01-16 18:11:47 +00:00
|
|
|
if ( (! file_exists( $thumbPath ) && file_exists( $imgPath ))
|
2004-01-12 00:55:01 +00:00
|
|
|
|| ( filemtime($thumbPath) < filemtime($imgPath) ) ) {
|
2004-01-13 21:03:47 +00:00
|
|
|
if ( $wgUseImageMagick ) {
|
|
|
|
|
# use ImageMagick
|
|
|
|
|
$cmd = $wgImageMagickConvertCommand .
|
2004-01-12 00:55:01 +00:00
|
|
|
" -quality 95 -geometry {$width}x ".
|
|
|
|
|
escapeshellarg($imgPath) . " " .
|
|
|
|
|
escapeshellarg($thumbPath);
|
2004-01-13 21:03:47 +00:00
|
|
|
$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 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2004-01-12 00:55:01 +00:00
|
|
|
}
|
|
|
|
|
return $thumbUrl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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 = wfLocalUrlE( $link );
|
|
|
|
|
|
|
|
|
|
$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>";
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
2003-11-09 11:45:12 +00:00
|
|
|
function makeMediaLink( $name, $url, $alt = "" ) {
|
|
|
|
|
$nt = Title::makeTitle( Namespace::getMedia(), $name );
|
|
|
|
|
return $this->makeMediaLinkObj( $nt, $alt );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function makeMediaLinkObj( $nt, $alt = "" )
|
2003-04-14 23:10:40 +00:00
|
|
|
{
|
2003-11-09 11:45:12 +00:00
|
|
|
$name = $nt->getDBKey();
|
|
|
|
|
$url = wfImageUrl( $name );
|
|
|
|
|
if ( empty( $alt ) ) {
|
|
|
|
|
$alt = preg_replace( '/\.(.+?)^/', '', $name );
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2003-11-09 11:45:12 +00:00
|
|
|
$u = htmlspecialchars( $url );
|
2003-05-19 21:46:33 +00:00
|
|
|
$s = "<a href=\"{$u}\" class='internal' title=\"{$alt}\">{$alt}</a>";
|
2003-04-14 23:10:40 +00:00
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function specialLink( $name, $key = "" )
|
|
|
|
|
{
|
|
|
|
|
global $wgLang;
|
|
|
|
|
|
|
|
|
|
if ( "" == $key ) { $key = strtolower( $name ); }
|
|
|
|
|
$pn = $wgLang->ucfirst( $name );
|
|
|
|
|
return $this->makeKnownLink( $wgLang->specialPage( $pn ),
|
|
|
|
|
wfMsg( $key ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Called by history lists and recent changes
|
|
|
|
|
#
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# Returns text for the start of the tabular part of RC
|
2003-04-14 23:10:40 +00:00
|
|
|
function beginRecentChangesList()
|
|
|
|
|
{
|
2004-01-17 05:49:39 +00:00
|
|
|
$this->rc_cache = array() ;
|
2004-01-26 14:23:45 +00:00
|
|
|
$this->rcMoveIndex = 0;
|
2004-01-17 05:49:39 +00:00
|
|
|
$this->rcCacheIndex = 0 ;
|
2003-04-14 23:10:40 +00:00
|
|
|
$this->lastdate = "";
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function beginImageHistoryList()
|
|
|
|
|
{
|
|
|
|
|
$s = "\n<h2>" . wfMsg( "imghistory" ) . "</h2>\n" .
|
|
|
|
|
"<p>" . wfMsg( "imghistlegend" ) . "\n<ul>";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# Returns text for the end of RC
|
|
|
|
|
# If enhanced RC is in use, returns pretty much all the text
|
2003-04-14 23:10:40 +00:00
|
|
|
function endRecentChangesList()
|
|
|
|
|
{
|
|
|
|
|
$s = $this->recentChangesBlock() ;
|
|
|
|
|
$s .= "</ul>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# Enhanced RC ungrouped line
|
|
|
|
|
function recentChangesBlockLine ( $rcObj )
|
2003-04-14 23:10:40 +00:00
|
|
|
{
|
|
|
|
|
global $wgUploadPath ;
|
2004-01-17 05:49:39 +00:00
|
|
|
|
|
|
|
|
# Get rc_xxxx variables
|
|
|
|
|
extract( $rcObj->mAttribs ) ;
|
|
|
|
|
$curIdEq = "curid=$rc_cur_id";
|
|
|
|
|
|
|
|
|
|
# Spacer image
|
2003-04-14 23:10:40 +00:00
|
|
|
$r = "" ;
|
2004-01-17 05:49:39 +00:00
|
|
|
$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." " ;
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= "</tt>" ;
|
2004-01-17 05:49:39 +00:00
|
|
|
|
|
|
|
|
# Article link
|
|
|
|
|
$link = $rcObj->link ;
|
|
|
|
|
if ( $rcObj->watched ) $link = "<strong>{$link}</strong>" ;
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= $link ;
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# Cur
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= " (" ;
|
2004-01-17 05:49:39 +00:00
|
|
|
$r .= $rcObj->curlink ;
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= "; " ;
|
2004-01-17 05:49:39 +00:00
|
|
|
|
|
|
|
|
# Hist
|
|
|
|
|
$r .= $this->makeKnownLinkObj( $rcObj->getTitle(), wfMsg( "hist" ), "{$curIdEq}&action=history" );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# User/talk
|
|
|
|
|
$r .= ") . . ".$rcObj->userlink ;
|
|
|
|
|
$r .= $rcObj->usertalklink ;
|
|
|
|
|
|
|
|
|
|
# Comment
|
|
|
|
|
if ( $rc_comment != "" && $rc_type != RC_MOVE )
|
|
|
|
|
$r .= " <em>(".wfEscapeHTML($rc_comment).")</em>" ;
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= "<br>\n" ;
|
|
|
|
|
return $r ;
|
2004-01-17 05:49:39 +00:00
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# Enhanced RC group
|
|
|
|
|
function recentChangesBlockGroup ( $block )
|
|
|
|
|
{
|
2003-04-14 23:10:40 +00:00
|
|
|
global $wgUploadPath ;
|
2004-01-17 05:49:39 +00:00
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
$r = "" ;
|
|
|
|
|
$M = wfMsg( "minoreditletter" );
|
|
|
|
|
$N = wfMsg( "newpageletter" );
|
2004-01-17 05:49:39 +00:00
|
|
|
|
|
|
|
|
# Collate list of users
|
2003-04-14 23:10:40 +00:00
|
|
|
$isnew = false ;
|
|
|
|
|
$userlinks = array () ;
|
2004-01-17 05:49:39 +00:00
|
|
|
foreach ( $block AS $rcObj ) {
|
|
|
|
|
$oldid = $rcObj->mAttribs['rc_last_oldid'];
|
|
|
|
|
if ( $rcObj->mAttribs['rc_new'] ) $isnew = true ;
|
|
|
|
|
$u = $rcObj->userlink ;
|
2003-04-14 23:10:40 +00:00
|
|
|
if ( !isset ( $userlinks[$u] ) ) $userlinks[$u] = 0 ;
|
|
|
|
|
$userlinks[$u]++ ;
|
2004-01-17 05:49:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Sort the list and convert to text
|
2003-04-14 23:10:40 +00:00
|
|
|
krsort ( $userlinks ) ;
|
|
|
|
|
asort ( $userlinks ) ;
|
|
|
|
|
$users = array () ;
|
2004-01-17 05:49:39 +00:00
|
|
|
foreach ( $userlinks as $userlink => $count) {
|
|
|
|
|
$text = $userlink ;
|
|
|
|
|
if ( $count > 1 ) $text .= " ({$count}×)" ;
|
|
|
|
|
array_push ( $users , $text ) ;
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
$users = " <font size='-1'>[".implode("; ",$users)."]</font>" ;
|
|
|
|
|
|
|
|
|
|
# Arrow
|
2004-01-17 05:49:39 +00:00
|
|
|
$rci = "RCI{$this->rcCacheIndex}" ;
|
|
|
|
|
$rcl = "RCL{$this->rcCacheIndex}" ;
|
|
|
|
|
$rcm = "RCM{$this->rcCacheIndex}" ;
|
2003-04-14 23:10:40 +00:00
|
|
|
$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>" ;
|
|
|
|
|
$r .= $tl ;
|
|
|
|
|
|
|
|
|
|
# Main line
|
2004-01-17 05:49:39 +00:00
|
|
|
# M/N
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= "<tt>" ;
|
|
|
|
|
if ( $isnew ) $r .= $N ;
|
|
|
|
|
else $r .= " " ;
|
|
|
|
|
$r .= " " ; # Minor
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# Timestamp
|
|
|
|
|
$r .= " ".$block[0]->timestamp." " ;
|
|
|
|
|
$r .= "</tt>" ;
|
|
|
|
|
|
|
|
|
|
# Article link
|
|
|
|
|
$link = $block[0]->link ;
|
|
|
|
|
if ( $block[0]->watched ) $link = "<strong>{$link}</strong>" ;
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= $link ;
|
2004-01-17 05:49:39 +00:00
|
|
|
|
|
|
|
|
$curIdEq = "curid=" . $block[0]->mAttribs['rc_cur_id'];
|
|
|
|
|
if ( $block[0]->mAttribs['rc_type'] != RC_LOG ) {
|
|
|
|
|
# Changes
|
|
|
|
|
$r .= " (".count($block)." " ;
|
2003-04-14 23:10:40 +00:00
|
|
|
if ( $isnew ) $r .= wfMsg("changes");
|
2004-01-17 05:49:39 +00:00
|
|
|
else $r .= $this->makeKnownLinkObj( $block[0]->getTitle() , wfMsg("changes") ,
|
|
|
|
|
"{$curIdEq}&diff=0&oldid=".$oldid ) ;
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= "; " ;
|
2004-01-17 05:49:39 +00:00
|
|
|
|
|
|
|
|
# History
|
|
|
|
|
$r .= $this->makeKnownLink( $block[0]->getTitle(), wfMsg( "history" ), "{$curIdEq}&action=history" );
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= ")" ;
|
2004-01-17 05:49:39 +00:00
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
$r .= $users ;
|
|
|
|
|
$r .= "<br>\n" ;
|
|
|
|
|
|
|
|
|
|
# Sub-entries
|
|
|
|
|
$r .= "<div id='{$rci}' style='display:none'>" ;
|
2004-01-17 05:49:39 +00:00
|
|
|
foreach ( $block AS $rcObj ) {
|
|
|
|
|
# Get rc_xxxx variables
|
|
|
|
|
extract( $rcObj->mAttribs );
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= "<img src='{$wgUploadPath}/Arr_.png' width=12 height=12 border=0>";
|
|
|
|
|
$r .= "<tt> " ;
|
2004-01-17 05:49:39 +00:00
|
|
|
if ( $rc_new ) $r .= $N ;
|
2003-04-14 23:10:40 +00:00
|
|
|
else $r .= " " ;
|
2004-01-17 05:49:39 +00:00
|
|
|
if ( $rc_minor ) $r .= $M ;
|
2003-04-14 23:10:40 +00:00
|
|
|
else $r .= " " ;
|
|
|
|
|
$r .= "</tt>" ;
|
|
|
|
|
|
|
|
|
|
$o = "" ;
|
2004-01-17 05:49:39 +00:00
|
|
|
if ( $rc_last_oldid != 0 ) {
|
|
|
|
|
$o = "oldid=".$rc_last_oldid ;
|
|
|
|
|
}
|
|
|
|
|
if ( $rc_type == RC_LOG ) {
|
|
|
|
|
$link = $rcObj->timestamp ;
|
|
|
|
|
} else {
|
|
|
|
|
$link = $this->makeKnownLink( $rcObj->getTitle(), $rcObj->timestamp , "{$curIdEq}&$o" ) ;
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
$link = "<tt>{$link}</tt>" ;
|
|
|
|
|
|
|
|
|
|
$r .= $link ;
|
|
|
|
|
$r .= " (" ;
|
2004-01-17 05:49:39 +00:00
|
|
|
$r .= $rcObj->curlink ;
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= "; " ;
|
2004-01-17 05:49:39 +00:00
|
|
|
$r .= $rcObj->lastlink ;
|
|
|
|
|
$r .= ") . . ".$rcObj->userlink ;
|
|
|
|
|
$r .= $rcObj->usertalklink ;
|
|
|
|
|
if ( $rc_comment != "" )
|
|
|
|
|
$r .= " <em>(".wfEscapeHTML($rc_comment).")</em>" ;
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= "<br>\n" ;
|
2004-01-17 05:49:39 +00:00
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
$r .= "</div>\n" ;
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
$this->rcCacheIndex++ ;
|
2003-04-14 23:10:40 +00:00
|
|
|
return $r ;
|
2004-01-17 05:49:39 +00:00
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# If enhanced RC is in use, this function takes the previously cached
|
|
|
|
|
# RC lines, arranges them, and outputs the HTML
|
2003-04-14 23:10:40 +00:00
|
|
|
function recentChangesBlock ()
|
|
|
|
|
{
|
|
|
|
|
global $wgUploadPath ;
|
|
|
|
|
if ( count ( $this->rc_cache ) == 0 ) return "" ;
|
2004-01-17 05:49:39 +00:00
|
|
|
#$k = array_keys ( $this->rc_cache ) ;
|
|
|
|
|
foreach ( $this->rc_cache AS $secureName => $block ) {
|
|
|
|
|
if ( count ( $block ) < 2 ) {
|
|
|
|
|
$r .= $this->recentChangesBlockLine ( array_shift ( $block ) ) ;
|
2003-04-14 23:10:40 +00:00
|
|
|
} else {
|
2004-01-17 05:49:39 +00:00
|
|
|
$r .= $this->recentChangesBlockGroup ( $block ) ;
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
2004-01-17 05:49:39 +00:00
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
return "<div align=left>{$r}</div>" ;
|
|
|
|
|
}
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# Called in a loop over all displayed RC entries
|
|
|
|
|
# Either returns the line, or caches it for later use
|
2004-01-17 09:49:43 +00:00
|
|
|
function recentChangesLine( &$rc, $watched = false )
|
2003-04-14 23:10:40 +00:00
|
|
|
{
|
|
|
|
|
global $wgUser ;
|
|
|
|
|
$usenew = $wgUser->getOption( "usenewrc" );
|
|
|
|
|
if ( $usenew )
|
2004-01-17 09:49:43 +00:00
|
|
|
$line = $this->recentChangesLineNew ( $rc, $watched ) ;
|
2003-04-14 23:10:40 +00:00
|
|
|
else
|
2004-01-17 09:49:43 +00:00
|
|
|
$line = $this->recentChangesLineOld ( $rc, $watched ) ;
|
2004-01-17 05:49:39 +00:00
|
|
|
return $line ;
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
2004-01-17 05:49:39 +00:00
|
|
|
|
2004-01-17 09:49:43 +00:00
|
|
|
function recentChangesLineOld( &$rc, $watched = false )
|
2003-04-14 23:10:40 +00:00
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang, $wgUser;
|
2004-01-17 05:49:39 +00:00
|
|
|
|
|
|
|
|
# Extract DB fields into local scope
|
2004-01-17 09:49:43 +00:00
|
|
|
extract( $rc->mAttribs );
|
2004-01-17 05:49:39 +00:00
|
|
|
$curIdEq = "curid=" . $rc_cur_id;
|
|
|
|
|
|
|
|
|
|
# Make date header if necessary
|
|
|
|
|
$date = $wgLang->date( $rc_timestamp, true);
|
2003-04-14 23:10:40 +00:00
|
|
|
$s = "";
|
2004-01-17 05:49:39 +00:00
|
|
|
if ( $date != $this->lastdate ) {
|
2003-04-14 23:10:40 +00:00
|
|
|
if ( "" != $this->lastdate ) { $s .= "</ul>\n"; }
|
2004-01-17 05:49:39 +00:00
|
|
|
$s .= "<h4>{$date}</h4>\n<ul>";
|
|
|
|
|
$this->lastdate = $date;
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
2004-01-17 05:49:39 +00:00
|
|
|
$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]]"
|
2004-01-25 02:37:14 +00:00
|
|
|
|
|
|
|
|
$s .= wfMsg( "1movedto2", $this->makeKnownLinkObj( $rc->getTitle(), "", "redirect=no" ),
|
|
|
|
|
$this->makeKnownLinkObj( $rc->getMovedToTitle(), "" ) );
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
} else {
|
2004-01-17 05:49:39 +00:00
|
|
|
# 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}" );
|
|
|
|
|
}
|
|
|
|
|
$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";
|
|
|
|
|
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
2004-01-17 05:49:39 +00:00
|
|
|
|
|
|
|
|
# Timestamp
|
|
|
|
|
$s .= "; " . $wgLang->time( $rc_timestamp, true ) . " . . ";
|
|
|
|
|
|
|
|
|
|
# User link (or contributions for unregistered users)
|
|
|
|
|
if ( 0 == $rc_user ) {
|
|
|
|
|
$userLink = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
|
|
|
|
|
$rc_user_text, "target=" . $rc_user_text );
|
2003-10-22 23:56:49 +00:00
|
|
|
} else {
|
2004-01-17 05:49:39 +00:00
|
|
|
$userLink = $this->makeLink( $wgLang->getNsText( NS_USER ) . ":{$rc_user_text}", $rc_user_text );
|
2003-10-22 23:56:49 +00:00
|
|
|
}
|
2004-01-17 05:49:39 +00:00
|
|
|
$s .= $userLink;
|
|
|
|
|
|
|
|
|
|
# User talk link
|
|
|
|
|
$talkname=$wgLang->getNsText(NS_TALK); # use the shorter name
|
2003-11-09 11:45:12 +00:00
|
|
|
global $wgDisableAnonTalk;
|
2004-01-17 05:49:39 +00:00
|
|
|
if( 0 == $rc_user && $wgDisableAnonTalk ) {
|
|
|
|
|
$userTalkLink = "";
|
2003-11-09 11:45:12 +00:00
|
|
|
} else {
|
2004-01-17 05:49:39 +00:00
|
|
|
$utns=$wgLang->getNsText(NS_USER_TALK);
|
|
|
|
|
$userTalkLink= $this->makeLink($utns . ":{$rc_user_text}", $talkname );
|
|
|
|
|
}
|
|
|
|
|
# Block link
|
|
|
|
|
$blockLink="";
|
|
|
|
|
if ( ( 0 == $rc_user ) && $wgUser->isSysop() ) {
|
|
|
|
|
$blockLink = $this->makeKnownLink( $wgLang->specialPage(
|
|
|
|
|
"Blockip" ), wfMsg( "blocklink" ), "ip={$rc_user_text}" );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
}
|
2004-01-17 05:49:39 +00:00
|
|
|
if($blockLink) {
|
|
|
|
|
if($userTalkLink) $userTalkLink .= " | ";
|
|
|
|
|
$userTalkLink .= $blockLink;
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
2004-01-17 05:49:39 +00:00
|
|
|
if($userTalkLink) $s.=" ({$userTalkLink})";
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# Add comment
|
|
|
|
|
if ( "" != $rc_comment && "*" != $rc_comment && $rc_type != RC_MOVE ) {
|
|
|
|
|
$s .= " <em>(" . wfEscapeHTML( $rc_comment ) . ")</em>";
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
$s .= "</li>\n";
|
|
|
|
|
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
2004-01-17 05:49:39 +00:00
|
|
|
|
|
|
|
|
# function recentChangesLineNew( $ts, $u, $ut, $ns, $ttl, $c, $isminor, $isnew, $watched = false, $oldid = 0 , $diffid = 0 )
|
2004-01-17 09:49:43 +00:00
|
|
|
function recentChangesLineNew( &$baseRC, $watched = false )
|
2003-04-14 23:10:40 +00:00
|
|
|
{
|
|
|
|
|
global $wgTitle, $wgLang, $wgUser;
|
|
|
|
|
|
2004-01-17 09:49:43 +00:00
|
|
|
# Create a specialised object
|
|
|
|
|
$rc = RCCacheEntry::newFromParent( $baseRC ) ;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# 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);
|
2003-04-14 23:10:40 +00:00
|
|
|
$ret = "" ;
|
2004-01-17 05:49:39 +00:00
|
|
|
if ( $date != $this->lastdate ) {
|
|
|
|
|
# Process current cache
|
2003-04-14 23:10:40 +00:00
|
|
|
$ret = $this->recentChangesBlock () ;
|
|
|
|
|
$this->rc_cache = array() ;
|
2004-01-17 05:49:39 +00:00
|
|
|
$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 );
|
2003-04-14 23:10:40 +00:00
|
|
|
$rc->watched = $watched ;
|
|
|
|
|
$rc->link = $clink ;
|
2004-01-17 05:49:39 +00:00
|
|
|
$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" );
|
2003-04-14 23:10:40 +00:00
|
|
|
} else {
|
2004-01-17 05:49:39 +00:00
|
|
|
$curLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "cur" ),
|
|
|
|
|
"{$curIdEq}&diff=0&oldid={$rc_this_oldid}" );
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# Make "last" link
|
|
|
|
|
$titleObj = $rc->getTitle();
|
|
|
|
|
if ( $rc_last_oldid == 0 || $rc_type == RC_LOG || $rc_type == RC_MOVE ) {
|
|
|
|
|
$lastLink = wfMsg( "last" );
|
2003-04-14 23:10:40 +00:00
|
|
|
} else {
|
2004-01-17 05:49:39 +00:00
|
|
|
$lastLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "last" ),
|
|
|
|
|
"{$curIdEq}&diff={$rc_this_oldid}&oldid={$rc_last_oldid}" );
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# 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 ); }
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
$rc->userlink = $userLink ;
|
|
|
|
|
$rc->lastlink = $lastLink ;
|
|
|
|
|
$rc->curlink = $curLink ;
|
2003-04-14 23:10:40 +00:00
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# 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 );
|
|
|
|
|
|
2003-11-09 11:45:12 +00:00
|
|
|
global $wgDisableAnonTalk;
|
2004-01-17 05:49:39 +00:00
|
|
|
if ( ( 0 == $rc_user ) && $wgUser->isSysop() ) {
|
|
|
|
|
$blockLink = $this->makeKnownLink( $wgLang->specialPage(
|
|
|
|
|
"Blockip" ), wfMsg( "blocklink" ), "ip={$rc_user_text}" );
|
2003-11-09 11:45:12 +00:00
|
|
|
if( $wgDisableAnonTalk )
|
2004-01-17 05:49:39 +00:00
|
|
|
$rc->usertalklink = " ({$blockLink})";
|
2003-11-09 11:45:12 +00:00
|
|
|
else
|
2004-01-17 05:49:39 +00:00
|
|
|
$rc->usertalklink = " ({$userTalkLink} | {$blockLink})";
|
2003-04-14 23:10:40 +00:00
|
|
|
} else {
|
2004-01-17 05:49:39 +00:00
|
|
|
if( $wgDisableAnonTalk && ($rc_user == 0) )
|
2003-11-09 11:45:12 +00:00
|
|
|
$rc->usertalklink = "";
|
|
|
|
|
else
|
2004-01-17 05:49:39 +00:00
|
|
|
$rc->usertalklink = " ({$userTalkLink})";
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
# 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 ) {
|
2004-01-26 14:23:45 +00:00
|
|
|
# Use an @ character to prevent collision with page names
|
|
|
|
|
$this->rc_cache["@@" . ($rcMoveIndex++)] = array($rc);
|
2004-01-17 05:49:39 +00:00
|
|
|
} else {
|
|
|
|
|
if ( !isset ( $this->rc_cache[$secureName] ) ) $this->rc_cache[$secureName] = array() ;
|
|
|
|
|
array_push ( $this->rc_cache[$secureName] , $rc ) ;
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
2004-01-17 05:49:39 +00:00
|
|
|
function endImageHistoryList()
|
|
|
|
|
{
|
|
|
|
|
$s = "</ul>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
function imageHistoryLine( $iscur, $ts, $img, $u, $ut, $size, $c )
|
|
|
|
|
{
|
|
|
|
|
global $wgUser, $wgLang, $wgTitle;
|
|
|
|
|
|
|
|
|
|
$dt = $wgLang->timeanddate( $ts, true );
|
|
|
|
|
$del = wfMsg( "deleteimg" );
|
|
|
|
|
$cur = wfMsg( "cur" );
|
|
|
|
|
|
|
|
|
|
if ( $iscur ) {
|
|
|
|
|
$url = wfImageUrl( $img );
|
|
|
|
|
$rlink = $cur;
|
|
|
|
|
if ( $wgUser->isSysop() ) {
|
2003-09-01 09:59:53 +00:00
|
|
|
$link = wfLocalUrlE( $wgTitle->getPrefixedText(), "image=" . $wgTitle->getURL() .
|
2003-04-14 23:10:40 +00:00
|
|
|
"&action=delete" );
|
|
|
|
|
$style = $this->getInternalLinkAttributes( $link, $del );
|
|
|
|
|
|
|
|
|
|
$dlink = "<a href=\"{$link}\"{$style}>{$del}</a>";
|
|
|
|
|
} else {
|
|
|
|
|
$dlink = $del;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$url = wfEscapeHTML( wfImageArchiveUrl( $img ) );
|
|
|
|
|
if( $wgUser->getID() != 0 ) {
|
|
|
|
|
$rlink = $this->makeKnownLink( $wgTitle->getPrefixedText(),
|
|
|
|
|
wfMsg( "revertimg" ), "action=revert&oldimage=" .
|
|
|
|
|
urlencode( $img ) );
|
|
|
|
|
$dlink = $this->makeKnownLink( $wgTitle->getPrefixedText(),
|
|
|
|
|
$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" );
|
|
|
|
|
$dlink = $del;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( 0 == $u ) { $ul = $ut; }
|
|
|
|
|
else { $ul = $this->makeLink( $wgLang->getNsText(
|
|
|
|
|
Namespace::getUser() ) . ":{$ut}", $ut ); }
|
|
|
|
|
|
2003-11-15 14:11:30 +00:00
|
|
|
$nb = wfMsg( "nbytes", $size );
|
2003-04-14 23:10:40 +00:00
|
|
|
$style = $this->getInternalLinkAttributes( $url, $dt );
|
|
|
|
|
|
|
|
|
|
$s = "<li> ({$dlink}) ({$rlink}) <a href=\"{$url}\"{$style}>{$dt}</a>"
|
|
|
|
|
. " . . {$ul} ({$nb})";
|
|
|
|
|
|
|
|
|
|
if ( "" != $c && "*" != $c ) {
|
|
|
|
|
$s .= " <em>(" . wfEscapeHTML( $c ) . ")</em>";
|
|
|
|
|
}
|
|
|
|
|
$s .= "</li>\n";
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
2003-06-30 00:19:35 +00:00
|
|
|
|
|
|
|
|
function tocIndent($level) {
|
|
|
|
|
|
2003-07-03 03:17:22 +00:00
|
|
|
while($level-->0) $rv.="<div style=\"margin-left:2em;\">\n";
|
2003-06-30 00:19:35 +00:00
|
|
|
return $rv;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function tocUnindent($level) {
|
2004-01-10 14:18:05 +00:00
|
|
|
$rv = "";
|
2003-07-03 03:17:22 +00:00
|
|
|
while($level-->0) $rv.="</div>\n";
|
2003-06-30 00:19:35 +00:00
|
|
|
return $rv;
|
|
|
|
|
}
|
|
|
|
|
|
2003-07-02 22:49:20 +00:00
|
|
|
// 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 {
|
2003-06-30 00:19:35 +00:00
|
|
|
|
2003-07-02 22:49:20 +00:00
|
|
|
return "<div style=\"margin-bottom:0px;\">\n".
|
|
|
|
|
"<A CLASS=\"internal\" HREF=\"#".$anchor."\">".$tocline."</A><BR>\n".
|
|
|
|
|
"</div>\n";
|
|
|
|
|
}
|
2003-06-30 00:19:35 +00:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function tocTable($toc) {
|
2003-08-01 23:45:24 +00:00
|
|
|
// 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>";
|
|
|
|
|
}
|
2003-06-30 00:19:35 +00:00
|
|
|
return
|
2003-07-21 07:36:52 +00:00
|
|
|
"<p><table border=\"0\" id=\"toc\"><tr><td align=\"center\">\n".
|
2003-07-06 04:37:22 +00:00
|
|
|
"<b>".wfMsg("toc")."</b>" .
|
2003-08-01 23:45:24 +00:00
|
|
|
$hideline .
|
2003-07-20 13:13:06 +00:00
|
|
|
"</td></tr><tr id='tocinside'><td align=\"left\">\n".
|
|
|
|
|
$toc."</td></tr></table><P>\n";
|
2003-06-30 00:19:35 +00:00
|
|
|
}
|
|
|
|
|
|
2003-07-28 03:57:40 +00:00
|
|
|
# These two do not check for permissions: check $wgTitle->userCanEdit before calling them
|
2003-07-21 07:36:52 +00:00
|
|
|
function editSectionScript($section,$head) {
|
|
|
|
|
|
|
|
|
|
global $wgTitle,$wgUser,$oldid;
|
|
|
|
|
if($oldid) return $head;
|
2003-07-29 02:39:13 +00:00
|
|
|
$url = wfLocalUrlE(urlencode($wgTitle->getPrefixedText()),"action=edit§ion=$section");
|
2003-07-21 07:36:52 +00:00
|
|
|
return "<span onContextMenu='document.location=\"".$url."\";return false;'>{$head}</span>";
|
|
|
|
|
}
|
|
|
|
|
|
2003-06-30 00:19:35 +00:00
|
|
|
function editSectionLink($section) {
|
|
|
|
|
|
2003-08-01 23:45:24 +00:00
|
|
|
global $printable;
|
2003-06-30 02:15:17 +00:00
|
|
|
global $wgTitle,$wgUser,$oldid;
|
|
|
|
|
if($oldid) return "";
|
2003-08-01 23:45:24 +00:00
|
|
|
if ($printable) return "";
|
2003-07-21 07:36:52 +00:00
|
|
|
$editurl="§ion={$section}";
|
2003-06-30 00:19:35 +00:00
|
|
|
$url=$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg("editsection"),"action=edit".$editurl);
|
2003-06-30 02:15:17 +00:00
|
|
|
return "<div style=\"float:right;margin-left:5px;\"><small>[".$url."]</small></div>";
|
2003-06-30 00:19:35 +00:00
|
|
|
|
|
|
|
|
}
|
New edit toolbar for bold, italic, links, headlines, math, images, media,
sigs, horizontal lines (more can be added easily). Select text and click
to apply, or just click to see an example. Mouseover should show speedtips.
Also, access keys for the edit window (ALT+P=Preview, ALT+S=Save) -> Moz+IE
2004-01-11 04:11:43 +00:00
|
|
|
|
|
|
|
|
// This function is called by EditPage.php and shows a bulletin board style
|
|
|
|
|
// 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;
|
|
|
|
|
|
|
|
|
|
// 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.
|
|
|
|
|
$toolarray=array(
|
|
|
|
|
array( "image"=>"button_bold.gif",
|
2004-01-18 08:19:29 +00:00
|
|
|
"open"=>"\'\'\'",
|
|
|
|
|
"close"=>"\'\'\'",
|
New edit toolbar for bold, italic, links, headlines, math, images, media,
sigs, horizontal lines (more can be added easily). Select text and click
to apply, or just click to see an example. Mouseover should show speedtips.
Also, access keys for the edit window (ALT+P=Preview, ALT+S=Save) -> Moz+IE
2004-01-11 04:11:43 +00:00
|
|
|
"sample"=>wfMsg("bold_sample"),
|
|
|
|
|
"tip"=>wfMsg("bold_tip")),
|
|
|
|
|
array( "image"=>"button_italic.gif",
|
2004-01-18 08:19:29 +00:00
|
|
|
"open"=>"\'\'",
|
|
|
|
|
"close"=>"\'\'",
|
New edit toolbar for bold, italic, links, headlines, math, images, media,
sigs, horizontal lines (more can be added easily). Select text and click
to apply, or just click to see an example. Mouseover should show speedtips.
Also, access keys for the edit window (ALT+P=Preview, ALT+S=Save) -> Moz+IE
2004-01-11 04:11:43 +00:00
|
|
|
"sample"=>wfMsg("italic_sample"),
|
|
|
|
|
"tip"=>wfMsg("italic_tip")),
|
|
|
|
|
array( "image"=>"button_link.gif",
|
|
|
|
|
"open"=>"[[",
|
|
|
|
|
"close"=>"]]",
|
|
|
|
|
"sample"=>wfMsg("link_sample"),
|
|
|
|
|
"tip"=>wfMsg("link_tip")),
|
|
|
|
|
array( "image"=>"button_extlink.gif",
|
|
|
|
|
"open"=>"[",
|
|
|
|
|
"close"=>"]",
|
|
|
|
|
"sample"=>wfMsg("extlink_sample"),
|
|
|
|
|
"tip"=>wfMsg("extlink_tip")),
|
|
|
|
|
array( "image"=>"button_headline.gif",
|
|
|
|
|
"open"=>"\\n== ",
|
|
|
|
|
"close"=>" ==\\n",
|
|
|
|
|
"sample"=>wfMsg("headline_sample"),
|
|
|
|
|
"tip"=>wfMsg("headline_tip")),
|
|
|
|
|
array( "image"=>"button_image.gif",
|
|
|
|
|
"open"=>"[[Image:",
|
|
|
|
|
"close"=>"]]",
|
|
|
|
|
"sample"=>wfMsg("image_sample"),
|
|
|
|
|
"tip"=>wfMsg("image_tip")),
|
|
|
|
|
array( "image"=>"button_media.gif",
|
|
|
|
|
"open"=>"[[Media:",
|
|
|
|
|
"close"=>"]]",
|
|
|
|
|
"sample"=>wfMsg("media_sample"),
|
|
|
|
|
"tip"=>wfMsg("media_tip")),
|
2004-01-19 21:24:01 +00:00
|
|
|
array( "image"=>"button_math.gif",
|
|
|
|
|
"open"=>"\\<math\\>",
|
|
|
|
|
"close"=>"\\</math\\>",
|
|
|
|
|
"sample"=>wfMsg("math_sample"),
|
|
|
|
|
"tip"=>wfMsg("math_tip")),
|
|
|
|
|
array( "image"=>"button_nowiki.gif",
|
|
|
|
|
"open"=>"\\<nowiki\\>",
|
|
|
|
|
"close"=>"\\</nowiki\\>",
|
|
|
|
|
"sample"=>wfMsg("nowiki_sample"),
|
|
|
|
|
"tip"=>wfMsg("nowiki_tip")),
|
New edit toolbar for bold, italic, links, headlines, math, images, media,
sigs, horizontal lines (more can be added easily). Select text and click
to apply, or just click to see an example. Mouseover should show speedtips.
Also, access keys for the edit window (ALT+P=Preview, ALT+S=Save) -> Moz+IE
2004-01-11 04:11:43 +00:00
|
|
|
array( "image"=>"button_sig.gif",
|
|
|
|
|
"open"=>"--~~~~",
|
|
|
|
|
"close"=>"",
|
|
|
|
|
"sample"=>"",
|
|
|
|
|
"tip"=>wfMsg("sig_tip")),
|
|
|
|
|
array( "image"=>"button_hr.gif",
|
|
|
|
|
"open"=>"\\n----\\n",
|
|
|
|
|
"close"=>"",
|
|
|
|
|
"sample"=>"",
|
|
|
|
|
"tip"=>wfMsg("hr_tip"))
|
|
|
|
|
);
|
2004-01-18 08:19:29 +00:00
|
|
|
$toolbar.="<script type='text/javascript'>\n";
|
2004-01-18 08:35:31 +00:00
|
|
|
$toolbar.="document.writeln(\"<div id='toolbar'>\");\n";
|
New edit toolbar for bold, italic, links, headlines, math, images, media,
sigs, horizontal lines (more can be added easily). Select text and click
to apply, or just click to see an example. Mouseover should show speedtips.
Also, access keys for the edit window (ALT+P=Preview, ALT+S=Save) -> Moz+IE
2004-01-11 04:11:43 +00:00
|
|
|
foreach($toolarray as $tool) {
|
|
|
|
|
|
2004-01-18 08:19:29 +00:00
|
|
|
$image=$wgUploadPath."/".$tool["image"];
|
New edit toolbar for bold, italic, links, headlines, math, images, media,
sigs, horizontal lines (more can be added easily). Select text and click
to apply, or just click to see an example. Mouseover should show speedtips.
Also, access keys for the edit window (ALT+P=Preview, ALT+S=Save) -> Moz+IE
2004-01-11 04:11:43 +00:00
|
|
|
$open=$tool["open"];
|
|
|
|
|
$close=$tool["close"];
|
|
|
|
|
$sample=$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"];
|
2004-01-18 08:19:29 +00:00
|
|
|
$toolbar.="addButton('$image','$tip','$open','$close','$sample');\n";
|
New edit toolbar for bold, italic, links, headlines, math, images, media,
sigs, horizontal lines (more can be added easily). Select text and click
to apply, or just click to see an example. Mouseover should show speedtips.
Also, access keys for the edit window (ALT+P=Preview, ALT+S=Save) -> Moz+IE
2004-01-11 04:11:43 +00:00
|
|
|
}
|
|
|
|
|
|
2004-01-19 21:26:20 +00:00
|
|
|
$toolbar.="addInfobox('".wfMsg("infobox")."');\n";
|
2004-01-18 08:19:29 +00:00
|
|
|
$toolbar.="document.writeln(\"</div>\");\n</script>";
|
New edit toolbar for bold, italic, links, headlines, math, images, media,
sigs, horizontal lines (more can be added easily). Select text and click
to apply, or just click to see an example. Mouseover should show speedtips.
Also, access keys for the edit window (ALT+P=Preview, ALT+S=Save) -> Moz+IE
2004-01-11 04:11:43 +00:00
|
|
|
return $toolbar;
|
|
|
|
|
}
|
2003-04-14 23:10:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
include_once( "SkinStandard.php" );
|
|
|
|
|
include_once( "SkinNostalgia.php" );
|
|
|
|
|
include_once( "SkinCologneBlue.php" );
|
2003-09-20 01:34:06 +00:00
|
|
|
|
|
|
|
|
#include_once( "SkinSmarty.php" );
|
2003-04-14 23:10:40 +00:00
|
|
|
|
|
|
|
|
?>
|