* Todo: Needs some serious refactoring into functions that correspond
* to the computations individual esi snippets need. Most importantly no body
* parsing for most of those of course.
- *
+ *
* PHPTAL support has been moved to a subclass in SkinPHPTal.php,
* and is optional. You'll need to install PHPTAL manually to use
* skins that depend on it.
function translate($value) {
$fname = 'SkinTemplate-translate';
wfProfileIn( $fname );
-
+
// Hack for i18n:attributes in PHPTAL 1.0.0 dev version as of 2004-10-23
$value = preg_replace( '/^string:/', '', $value );
-
+
$value = wfMsg( $value );
// interpolate variables
while (preg_match('/\$([0-9]*?)/sm', $value, $m)) {
function &setupTemplate( $classname, $repository=false, $cache_dir=false ) {
return new $classname();
}
-
+
/**
* initialize various variables and generate the template
*
$fname = 'SkinTemplate::outputPage';
wfProfileIn( $fname );
-
+
extract( $wgRequest->getValues( 'oldid', 'diff' ) );
wfProfileIn( "$fname-init" );
# Language links
$language_urls = array();
-
+
if ( !$wgHideInterlanguageLinks ) {
foreach( $wgOut->getLanguageLinks() as $l ) {
$nt = Title::newFromText( $l );
wfProfileIn( "$fname-execute" );
$res = $tpl->execute();
wfProfileOut( "$fname-execute" );
-
+
// result may be an error
$this->printOrError( $res );
wfProfileOut( $fname );
}
-
+
/**
* Output the string, or print error message if it's
* an error object of the appropriate type.
function buildPersonalUrls() {
$fname = 'SkinTemplate::buildPersonalUrls';
wfProfileIn( $fname );
-
+
/* set up the default links for the personal toolbar */
global $wgShowIPinHeader;
$personal_urls = array();
}
if( $checkEdit && $title->getArticleId() == 0 ) {
$classes[] = 'new';
+ $query = 'action=edit';
}
return array(
'class' => implode( ' ', $classes ),
'exists' => $title->getArticleID() != 0?true:false
);
}
-
+
function makeArticleUrlDetails( $name, $urlaction='' ) {
$title = Title::newFromText( $name );
$title= $title->getSubjectPage();
'exists' => $title->getArticleID() != 0?true:false
);
}
-
+
/**
* an array of edit links by default used for the tabs
* @return array
global $wgContLang, $wgUseValidation, $wgDBprefix, $wgValidationForAnons;
$fname = 'SkinTemplate::buildContentActionUrls';
wfProfileIn( $fname );
-
+
global $wgUser, $wgRequest;
$action = $wgRequest->getText( 'action' );
$section = $wgRequest->getText( 'section' );
$content_actions[$nskey] = $this->tabAction(
$this->mTitle->getSubjectPage(),
$nskey,
- !$this->mTitle->isTalkPage() );
-
+ !$this->mTitle->isTalkPage(),
+ '', true);
+
$content_actions['talk'] = $this->tabAction(
$this->mTitle->getTalkPage(),
'talk',
$this->mTitle->isTalkPage(),
'',
true);
-
+
wfProfileIn( "$fname-edit" );
if ( $this->mTitle->userCanEdit() ) {
$oid = ( $oldid && ! isset( $diff ) ) ? '&oldid='.IntVal( $oldid ) : false;
}
if( $wgUser->isLoggedIn() || $wgValidationForAnons ) { # and $action != 'submit' ) {
- # Validate tab. TODO: add validation to logged-in user rights
+ # Validate tab. TODO: add validation to logged-in user rights
if($wgUseValidation && ( $action == "" || $action=='view' ) ){ # && $wgUser->isAllowed('validate')){
if ( $oldid ) $oid = IntVal( $oldid ) ; # Use the oldid
else
$vcount ++;
}
}
-
- // A print stylesheet is attached to all pages, but nobody ever
- // figures that out. :) Add a link...
- if( $this->iscontent && ($action == '' || $action == 'view' || $action == 'purge' ) ) {
- $content_actions['print'] = array(
- 'class' => false,
- 'text' => wfMsg( 'printableversion' ),
- 'href' => $wgRequest->appendQuery( 'printable=yes' ) );
- }
wfProfileOut( $fname );
return $content_actions;
}
-
- /**
- * Build an array that represents the sidebar(s), the navigation bar among them
- *
- * @return array
- * @access private
- */
- function buildSidebar() {
- $fname = 'SkinTemplate::buildSidebar';
- wfProfileIn( $fname );
-
- $bar = array();
- $lines = explode( "\n", wfMsgForContent( 'sidebar' ) );
- foreach ($lines as $line) {
- if (strpos($line, '*') !== 0)
- continue;
- if (strpos($line, '**') !== 0) {
- $line = trim($line, '* ');
- $heading = $line;
- } else {
- if (strpos($line, '|') !== false) { // sanity check
- $line = explode( '|' , trim($line, '* '), 2 );
- $bar[$heading][] = array(
- 'text' => wfMsg( $line[1] ),
- 'href' => $this->makeInternalOrExternalUrl( wfMsgForContent( $line[0] ) ),
- 'id' => 'n-' . $line[1],
- );
- } else { continue; }
- }
- }
-
- wfProfileOut( $fname );
- return $bar;
- }
+
+
/**
* build array of common navigation links
function buildNavUrls () {
$fname = 'SkinTemplate::buildNavUrls';
wfProfileIn( $fname );
-
+
global $wgUser, $wgRequest;
global $wgSiteSupportPage, $wgEnableUploads, $wgUploadNavigationUrl;
$action = $wgRequest->getText( 'action' );
$oldid = $wgRequest->getVal( 'oldid' );
$diff = $wgRequest->getVal( 'diff' );
-
+
$nav_urls = array();
$nav_urls['mainpage'] = array('href' => $this->makeI18nUrl('mainpage'));
$nav_urls['randompage'] = array('href' => $this->makeSpecialUrl('Random'));
$nav_urls['help'] = array('href' => $this->makeI18nUrl('helppage'));
if( $wgEnableUploads ) {
if ($wgUploadNavigationUrl) {
- $nav_urls['upload'] = array('href' => $wgUploadNavigationUrl );
- } else {
+ $nav_urls['upload'] = array('href' => $wgUploadNavigationUrl );
+ } else {
$nav_urls['upload'] = array('href' => $this->makeSpecialUrl('Upload'));
}
} else {
}
$nav_urls['specialpages'] = array('href' => $this->makeSpecialUrl('Specialpages'));
+
+ // A print stylesheet is attached to all pages, but nobody ever
+ // figures that out. :) Add a link...
+ if( $this->iscontent && ($action == '' || $action == 'view' || $action == 'purge' ) ) {
+ $nav_urls['print'] = array(
+ 'text' => wfMsg( 'printableversion' ),
+ 'href' => $wgRequest->appendQuery( 'printable=yes' ) );
+ }
+
if( $this->mTitle->getNamespace() != NS_SPECIAL) {
$nav_urls['whatlinkshere'] = array(
'href' => $this->makeSpecialUrl("Whatlinkshere/$this->thispage")
return 'nstab-main';
}
}
-
+
/**
* @access private
*/
function setupUserCss() {
$fname = 'SkinTemplate::setupUserCss';
wfProfileIn( $fname );
-
+
global $wgRequest, $wgAllowUserCss, $wgUseSiteCss, $wgContLang, $wgSquidMaxage, $wgStylePath, $wgUser;
$sitecss = '';
$siteargs = '&maxage=' . $wgSquidMaxage;
# Add user-specific code if this is a user and we allow that kind of thing
-
+
if ( $wgAllowUserCss && $this->loggedin ) {
$action = $wgRequest->getText('action');
-
+
# if we're previewing the CSS page, use it
if( $this->mTitle->isCssSubpage() and $this->userCanPreview( $action ) ) {
$siteargs = "&smaxage=0&maxage=0";
}
if ($wgContLang->isRTL()) $sitecss .= '@import "' . $wgStylePath . '/' . $this->stylename . '/rtl.css";' . "\n";
-
+
# If we use the site's dynamic CSS, throw that in, too
if ( $wgUseSiteCss ) {
$sitecss .= '@import "' . $this->makeNSUrl(ucfirst($this->skinname) . '.css', 'action=raw&ctype=text/css&smaxage=' . $wgSquidMaxage, NS_MEDIAWIKI) . '";' . "\n";
$sitecss .= '@import "' . $this->makeUrl('-','action=raw&gen=css' . $siteargs) . '";' . "\n";
}
-
+
# If we use any dynamic CSS, make a little CDATA block out of it.
-
+
if ( !empty($sitecss) || !empty($usercss) ) {
$this->usercss = "/*<![CDATA[*/\n" . $sitecss . $usercss . '/*]]>*/';
}
function setupUserJs() {
$fname = 'SkinTemplate::setupUserJs';
wfProfileIn( $fname );
-
+
global $wgRequest, $wgAllowUserJs, $wgJsMimeType;
$action = $wgRequest->getText('action');
}
wfProfileOut( $fname );
}
-
+
/**
* returns css with user-specific options
* @access public
function getUserStylesheet() {
$fname = 'SkinTemplate::getUserStylesheet';
wfProfileIn( $fname );
-
+
global $wgUser;
$s = "/* generated user stylesheet */\n";
$s .= $this->reallyDoGetUserStyles();
wfProfileOut( $fname );
return $s;
}
-
+
/**
* @access public
*/
function getUserJs() {
$fname = 'SkinTemplate::getUserJs';
wfProfileIn( $fname );
-
+
global $wgStylePath;
$s = '/* generated javascript */';
$s .= "var skin = '{$this->skinname}';\nvar stylepath = '{$wgStylePath}';";
if ('<'.$msgKey.'>' != $userJS) {
$s .= $userJS;
}
-
+
wfProfileOut( $fname );
return $s;
}
$this->data = array();
$this->translator = new MediaWiki_I18N();
}
-
+
/**
* @access public
*/
function set( $name, $value ) {
$this->data[$name] = $value;
}
-
+
/**
* @access public
*/
function setRef($name, &$value) {
$this->data[$name] =& $value;
}
-
+
/**
* @access public
*/
function setTranslator( &$t ) {
$this->translator = &$t;
}
-
+
/**
* @access public
*/
function text( $str ) {
echo htmlspecialchars( $this->data[$str] );
}
-
+
/**
* @access private
*/
function html( $str ) {
echo $this->data[$str];
}
-
+
/**
* @access private
*/
function msg( $str ) {
echo htmlspecialchars( $this->translator->translate( $str ) );
}
-
+
/**
* @access private
*/
function msgHtml( $str ) {
echo $this->translator->translate( $str );
}
-
+
/**
* An ugly, ugly hack.
* @access private
$wgOut->mParserOptions, true );
echo $parserOutput->getText();
}
-
+
/**
* @access private
*/
function haveData( $str ) {
return $this->data[$str];
}
-
+
/**
* @access private
*/
}
}
-} // end of if( defined( 'MEDIAWIKI' ) )
+} // end of if( defined( 'MEDIAWIKI' ) )
?>