for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace SBL;
use SMW\ApplicationFactory;
use OutputPage;
use Action;
use Title;
/**
* @license GNU GPL v2+
* @since 1.0
*
* @author mwjames
*/
class SkinTemplateOutputModifier {
* @var HtmlBreadcrumbLinksBuilder
private $htmlBreadcrumbLinksBuilder;
* @param HtmlBreadcrumbLinksBuilder $htmlBreadcrumbLinksBuilder
public function __construct( HtmlBreadcrumbLinksBuilder $htmlBreadcrumbLinksBuilder ) {
$this->htmlBreadcrumbLinksBuilder = $htmlBreadcrumbLinksBuilder;
}
* @param OutputPage $output
* @return boolean
public function modifyOutput( OutputPage $output ) {
return $this->canModifyOutput( $output ) ? $this->doModifyOutput( $output ) : true;
* @param &$template
public function modifyTemplate( &$template ) {
// Always set subtitle to be empty when SBL is used to avoid any output
// distraction
$template->data['subtitle'] = '';
private function canModifyOutput( OutputPage $output ) {
if ( !$this->isEnabled( $output->getTitle() ) ) {
return false;
if ( Action::getActionName( $output->getContext() ) !== 'view' ) {
return true;
private function doModifyOutput( OutputPage $output ) {
$this->htmlBreadcrumbLinksBuilder->buildBreadcrumbs( $output->getTitle() );
$this->htmlBreadcrumbLinksBuilder->setRTLDirectionalityState(
$output->getTitle()->getPageLanguage()->isRTL()
);
$output->prependHTML( $this->htmlBreadcrumbLinksBuilder->getHtml() );
private function isEnabled( Title $title ) {
return $title->isKnown() &&
!$title->isSpecialPage() &&
ApplicationFactory::getInstance()->getNamespaceExaminer()->isSemanticEnabled( $title->getNamespace() );