/**
* Add specific styles for this skin
*
- * @param $out OutputPage
+ * @param OutputPage $out
*/
function setupSkinUserCss( OutputPage $out ) {
$out->addModuleStyles( array(
* and eventually it spits out some HTML. Should have interface
* roughly equivalent to PHPTAL 0.7.
*
- * @param $classname String
- * @param string $repository subdirectory where we keep template files
- * @param $cache_dir string
+ * @param string $classname
+ * @param string $repository Subdirectory where we keep template files
+ * @param string $cache_dir
* @return QuickTemplate
* @private
*/
/**
* initialize various variables and generate the template
*
- * @param $out OutputPage
+ * @param OutputPage $out
*/
function outputPage( OutputPage $out = null ) {
wfProfileIn( __METHOD__ );
* initialize various variables and generate the template
*
* @since 1.23
- * @return QuickTemplate the template to be executed by outputPage
+ * @return QuickTemplate The template to be executed by outputPage
*/
protected function prepareQuickTemplate() {
global $wgContLang, $wgScript, $wgStylePath,
* an error object of the appropriate type.
* For the base class, assume strings all around.
*
- * @param $str Mixed
+ * @param string $str
* @private
*/
function printOrError( $str ) {
/**
* Builds an array with tab definition
*
- * @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 boolean $selected display the tab as selected
- * @param string $query query string attached to tab URL
- * @param boolean $checkEdit check if $title exists and mark with .new if one doesn't
+ * @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
+ * @param bool $checkEdit Check if $title exists and mark with .new if one doesn't
*
* @return array
*/
$content_navigation['namespaces'][$talkId]['context'] = 'talk';
if ( $userCanRead ) {
+ $isForeignFile = $title->inNamespace( NS_FILE ) && $this->canUseWikiPage() &&
+ $this->getWikiPage() instanceof WikiFilePage && !$this->getWikiPage()->isLocal();
+
// Adds view view link
- if ( $title->exists() ) {
+ if ( $title->exists() || $isForeignFile ) {
$content_navigation['views']['view'] = $this->tabAction(
$isTalk ? $talkPage : $subjectPage,
array( "$skname-view-view", 'view' ),
$content_navigation['views']['view']['redundant'] = true;
}
+ // If it is a non-local file, show a link to the file in its own repository
+ if ( $isForeignFile ) {
+ $file = $this->getWikiPage()->getFile();
+ $content_navigation['views']['view-foreign'] = array(
+ 'class' => '',
+ 'text' => wfMessageFallback( "$skname-view-foreign", 'view-foreign' )->
+ setContext( $this->getContext() )->
+ params( $file->getRepo()->getDisplayName() )->text(),
+ 'href' => $file->getDescriptionUrl(),
+ 'primary' => false,
+ );
+ }
+
wfProfileIn( __METHOD__ . '-edit' );
// Checks if user can edit the current page if it exists or create it otherwise
&& ( ( $isTalk && $this->isRevisionCurrent() ) || $out->showNewSectionLink() );
$section = $request->getVal( 'section' );
- $msgKey = $title->exists() || ( $title->getNamespace() == NS_MEDIAWIKI && $title->getDefaultMessageText() !== false ) ?
- 'edit' : 'create';
+ if ( $title->exists() || ( $title->getNamespace() == NS_MEDIAWIKI && $title->getDefaultMessageText() !== false ) ) {
+ $msgKey = $isForeignFile ? 'edit-local' : 'edit';
+ } else {
+ $msgKey = $isForeignFile ? 'create-local' : 'create';
+ }
$content_navigation['views']['edit'] = array(
'class' => ( $isEditing && ( $section !== 'new' || !$showNewSection ) ? 'selected' : '' ) . $isTalkClass,
'text' => wfMessageFallback( "$skname-view-$msgKey", $msgKey )->setContext( $this->getContext() )->text(),
'href' => $title->getLocalURL( $this->editUrlOptions() ),
- 'primary' => true, // don't collapse this in vector
+ 'primary' => !$isForeignFile, // don't collapse this in vector
);
// section link
/**
* Sets the value $value to $name
- * @param $name
- * @param $value
+ * @param string $name
+ * @param mixed $value
*/
public function set( $name, $value ) {
$this->data[$name] = $value;
}
/**
- * @param $name
- * @param $value
+ * @param string $name
+ * @param mixed $value
*/
public function setRef( $name, &$value ) {
$this->data[$name] =& $value;
}
/**
- * @param $t
+ * @param MediaWiki_I18N $t
*/
public function setTranslator( &$t ) {
$this->translator = &$t;
/**
* @private
+ * @param string $str
+ * @return string
*/
function text( $str ) {
echo htmlspecialchars( $this->data[$str] );
/**
* @private
+ * @param string $str
+ * @return string
*/
function html( $str ) {
echo $this->data[$str];
/**
* @private
+ * @param string $str
+ * @return string
*/
function msg( $str ) {
echo htmlspecialchars( $this->translator->translate( $str ) );
/**
* @private
+ * @param string $str
+ * @return string
*/
function msgHtml( $str ) {
echo $this->translator->translate( $str );
/**
* An ugly, ugly hack.
* @private
+ * @param string $str
+ * @return string
*/
function msgWiki( $str ) {
global $wgOut;
/**
* @private
+ * @param string $str
* @return bool
*/
function haveData( $str ) {
/**
* @private
*
+ * @param string $str
* @return bool
*/
function haveMsg( $str ) {
/**
* Get the Skin object related to this object
*
- * @return Skin object
+ * @return Skin
*/
public function getSkin() {
return $this->data['skin'];
* Fetch the output of a QuickTemplate and return it
*
* @since 1.23
- * @return String
+ * @return string
*/
public function getHTML() {
ob_start();
/**
* Get a Message object with its context set
*
- * @param string $name message name
+ * @param string $name Message name
* @return Message
*/
public function getMsg( $name ) {
/**
* Generates a list item for a navigation, portlet, portal, sidebar... list
*
- * @param $key string, usually a key from the list you are generating this link from.
- * @param $item array, of list item data containing some of a specific set of keys.
+ * @param string $key Usually a key from the list you are generating this link from.
+ * @param array $item Array of list item data containing some of a specific set of keys.
* The "id", "class" and "itemtitle" keys will be used as attributes for the list item,
* if "active" contains a value of true a "active" class will also be appended to class.
*
- * @param $options array
+ * @param array $options
*
* If you want something other than a "<li>" you can pass a tag name such as
* "tag" => "span" in the $options array to change the tag used.
* in the list of footer icons. This is mostly useful for skins which only
* display the text from footericons instead of the images and don't want a
* duplicate copyright statement because footerlinks already rendered one.
- * @return
+ * @return string
*/
function getFooterIcons( $option = null ) {
// Generate additional footer icons