*/
public $skinname = 'monobook';
- /**
- * @var string Stylesheets set to use. Subdirectory in skins/ where various
- * stylesheets are located. Child classes should override the default.
- */
- public $stylename = 'monobook';
-
/**
* @var string For QuickTemplate, the name of the subclass which will
* actually fill the template. Child classes should override the default.
* @private
*/
function setupTemplate( $classname, $repository = false, $cache_dir = false ) {
- return new $classname();
+ return new $classname( $this->getConfig() );
}
/**
* Generates array of language links for the current page
*
* @return array
- * @public
*/
public function getLanguages() {
global $wgHideInterlanguageLinks;
$ilLangName = Language::fetchLanguageName( $ilInterwikiCode );
if ( strval( $ilLangName ) === '' ) {
- $ilLangName = $languageLinkText;
+ $ilDisplayTextMsg = wfMessage( "interlanguage-link-$ilInterwikiCode" );
+ if ( !$ilDisplayTextMsg->isDisabled() ) {
+ // Use custom MW message for the display text
+ $ilLangName = $ilDisplayTextMsg->text();
+ } else {
+ // Last resort: fallback to the language link target
+ $ilLangName = $languageLinkText;
+ }
} else {
+ // Use the language autonym as display text
$ilLangName = $this->formatLanguageName( $ilLangName );
}
);
$languageLinkTitleText = $languageLinkTitle->getText();
- if ( $languageLinkTitleText === '' ) {
+ if ( $ilLangLocalName === '' ) {
+ $ilFriendlySiteName = wfMessage( "interlanguage-link-sitename-$ilInterwikiCode" );
+ if ( !$ilFriendlySiteName->isDisabled() ) {
+ if ( $languageLinkTitleText === '' ) {
+ $ilTitle = wfMessage(
+ 'interlanguage-link-title-nonlangonly',
+ $ilFriendlySiteName->text()
+ )->text();
+ } else {
+ $ilTitle = wfMessage(
+ 'interlanguage-link-title-nonlang',
+ $languageLinkTitleText,
+ $ilFriendlySiteName->text()
+ )->text();
+ }
+ } else {
+ // we have nothing friendly to put in the title, so fall back to
+ // displaying the interlanguage link itself in the title text
+ // (similar to what is done in page content)
+ $ilTitle = $languageLinkTitle->getInterwiki() .
+ ":$languageLinkTitleText";
+ }
+ } elseif ( $languageLinkTitleText === '' ) {
$ilTitle = wfMessage(
'interlanguage-link-title-langonly',
$ilLangLocalName
* @return QuickTemplate The template to be executed by outputPage
*/
protected function prepareQuickTemplate() {
- global $wgContLang, $wgScript, $wgStylePath,
- $wgMimeType, $wgJsMimeType, $wgXhtmlNamespaces, $wgHtml5Version,
+ global $wgContLang, $wgScript, $wgStylePath, $wgMimeType, $wgJsMimeType,
$wgDisableCounters, $wgSitename, $wgLogo, $wgMaxCredits,
$wgShowCreditsIfMax, $wgPageShowWatchingUsers, $wgArticlePath,
$wgScriptPath, $wgServer;
$tpl->set( 'handheld', $request->getBool( 'handheld' ) );
$tpl->setRef( 'loggedin', $this->loggedin );
$tpl->set( 'notspecialpage', !$title->isSpecialPage() );
- /* XXX currently unused, might get useful later
- $tpl->set( 'editable', ( !$title->isSpecialPage() ) );
- $tpl->set( 'exists', $title->getArticleID() != 0 );
- $tpl->set( 'watch', $user->isWatched( $title ) ? 'unwatch' : 'watch' );
- $tpl->set( 'protect', count( $title->isProtected() ) ? 'unprotect' : 'protect' );
- $tpl->set( 'helppage', $this->msg( 'helppage' )->text() );
- */
$tpl->set( 'searchaction', $this->escapeSearchLink() );
$tpl->set( 'searchtitle', SpecialPage::getTitleFor( 'Search' )->getPrefixedDBkey() );
$tpl->set( 'search', trim( $request->getVal( 'search' ) ) );
/**
* Builds an array with tab definition
*
- * @param Title $title page Where the tab links to
+ * @param Title $title Page Where the tab links to
* @param string|array $message Message key or an array of message keys (will fall back)
* @param bool $selected Display the tab as selected
* @param string $query Query string attached to tab URL
/**
* The following actions use messages which, if made particular to
* the any specific skins, would break the Ajax code which makes this
- * action happen entirely inline. Skin::makeGlobalVariablesScript
+ * action happen entirely inline. OutputPage::getJSVars
* defines a set of messages in a javascript object - and these
* messages are assumed to be global for all skins. Without making
* a change to that procedure these messages will have to remain as
/**
* an array of edit links by default used for the tabs
- * @param $content_navigation
+ * @param array $content_navigation
* @return array
*/
private function buildContentActionUrls( $content_navigation ) {
* @ingroup Skins
*/
abstract class QuickTemplate {
+
+ /** @var Config $config */
+ protected $config;
/**
- * Constructor
+ * @var Config $config
*/
- function __construct() {
+ function __construct( Config $config = null ) {
$this->data = array();
$this->translator = new MediaWikiI18N();
+ if ( $config === null ) {
+ wfDebug( __METHOD__ . ' was called with no Config instance passed to it' );
+ $config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
+ }
+ $this->config = $config;
}
/**
* Makes a link, usually used by makeListItem to generate a link for an item
* in a list used in navigation lists, portlets, portals, sidebars, etc...
*
- * @param string $key usually a key from the list you are generating this
+ * @param string $key Usually a key from the list you are generating this
* link from.
- * @param array $item contains some of a specific set of keys.
+ * @param array $item Contains some of a specific set of keys.
*
* The text of the link will be generated either from the contents of the
* "text" key in the $item array, if a "msg" key is present a message by
*
* If you don't want an accesskey, set $item['tooltiponly'] = true;
*
- * @param array $options can be used to affect the output of a link.
+ * @param array $options Can be used to affect the output of a link.
* Possible options are:
* - 'text-wrapper' key to specify a list of elements to wrap the text of
* a link in. This should be an array of arrays containing a 'tag' and