X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/extensions/CiteThisPage/CiteThisPage.hooks.php diff --git a/extensions/CiteThisPage/CiteThisPage.hooks.php b/extensions/CiteThisPage/CiteThisPage.hooks.php new file mode 100644 index 00000000..7f7572f7 --- /dev/null +++ b/extensions/CiteThisPage/CiteThisPage.hooks.php @@ -0,0 +1,62 @@ +getTitle(); + if ( self::shouldAddLink( $title ) && $revid !== 0 && !empty( $revid ) ) { + $nav_urls['citethispage'] = [ + 'text' => $skintemplate->msg( 'citethispage-link' )->text(), + 'href' => SpecialPage::getTitleFor( 'CiteThisPage' ) + ->getLocalURL( [ 'page' => $title->getPrefixedDBkey(), 'id' => $revid ] ), + 'id' => 't-cite', + # Used message keys: 'tooltip-citethispage', 'accesskey-citethispage' + 'single-id' => 'citethispage', + ]; + } + + return true; + } + + /** + * Checks, if the "cite this page" link should be added. By default the link is added to all + * pages in the main namespace, and additionally to pages, which are in one of the namespaces + * named in $wgCiteThisPageAddiotionalNamespaces. + * + * @param Title $title + * @return bool + */ + private static function shouldAddLink( Title $title ) { + global $wgCiteThisPageAdditionalNamespaces; + + return $title->isContentPage() || + ( + isset( $wgCiteThisPageAdditionalNamespaces[$title->getNamespace()] ) && + $wgCiteThisPageAdditionalNamespaces[$title->getNamespace()] + ); + } + + /** + * @param BaseTemplate $baseTemplate + * @param array $toolbox + * @return bool + */ + public static function onBaseTemplateToolbox( BaseTemplate $baseTemplate, array &$toolbox ) { + if ( isset( $baseTemplate->data['nav_urls']['citethispage'] ) ) { + $toolbox['citethispage'] = $baseTemplate->data['nav_urls']['citethispage']; + } + + return true; + } +}