From 90ed6468e23dfac4ec436bdd02d16e1ab10817b0 Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Sun, 15 Apr 2018 16:54:51 -0700 Subject: [PATCH] Split MenuEntry to its own file Change-Id: I2114141bf8f6d67671e063fae8c44044184688bd --- includes/skins/MenuBuilder.php | 66 -------------------------- includes/skins/MenuEntry.php | 84 ++++++++++++++++++++++++++++++++++ skin.json | 2 +- 3 files changed, 85 insertions(+), 67 deletions(-) create mode 100644 includes/skins/MenuEntry.php diff --git a/includes/skins/MenuBuilder.php b/includes/skins/MenuBuilder.php index 5ff581b..6ce1874 100644 --- a/includes/skins/MenuBuilder.php +++ b/includes/skins/MenuBuilder.php @@ -116,69 +116,3 @@ class MenuBuilder { return $entry; } } - -/** - * Model for a menu entry. - */ -class MenuEntry { - private $name; - private $isJSOnly; - private $components; - - /** - * @param string $name - * @param bool $isJSOnly Whether the entry works without JS - */ - public function __construct( $name, $isJSOnly ) { - $this->name = $name; - $this->isJSOnly = $isJSOnly; - $this->components = []; - } - - /** - * @return string - */ - public function getName() { - return $this->name; - } - - /** - * Gets whether the entry should only be shown if JavaScript is disabled - * in the client. - * - * @return bool - */ - public function isJSOnly() { - return $this->isJSOnly; - } - - /** - * @return array - */ - public function getComponents() { - return $this->components; - } - - /** - * Add a link to the entry. - * - * An entry can have zero or more links. - * - * @param string $label - * @param string $url - * @param string $className Any additional CSS classes that should added to the output, - * separated by spaces - * @param array $attrs Additional data that can be associated with the component - * - * @return MenuEntry - */ - public function addComponent( $label, $url, $className = '', $attrs = [] ) { - $this->components[] = [ - 'text' => $label, - 'href' => $url, - 'class' => $className, - ] + $attrs; - - return $this; - } -} diff --git a/includes/skins/MenuEntry.php b/includes/skins/MenuEntry.php new file mode 100644 index 0000000..2e2206d --- /dev/null +++ b/includes/skins/MenuEntry.php @@ -0,0 +1,84 @@ +name = $name; + $this->isJSOnly = $isJSOnly; + $this->components = []; + } + + /** + * @return string + */ + public function getName() { + return $this->name; + } + + /** + * Gets whether the entry should only be shown if JavaScript is disabled + * in the client. + * + * @return bool + */ + public function isJSOnly() { + return $this->isJSOnly; + } + + /** + * @return array + */ + public function getComponents() { + return $this->components; + } + + /** + * Add a link to the entry. + * + * An entry can have zero or more links. + * + * @param string $label + * @param string $url + * @param string $className Any additional CSS classes that should added to the output, + * separated by spaces + * @param array $attrs Additional data that can be associated with the component + * + * @return MenuEntry + */ + public function addComponent( $label, $url, $className = '', $attrs = [] ) { + $this->components[] = [ + 'text' => $label, + 'href' => $url, + 'class' => $className, + ] + $attrs; + + return $this; + } +} diff --git a/skin.json b/skin.json index 078e628..f5379ca 100644 --- a/skin.json +++ b/skin.json @@ -8,7 +8,7 @@ "SkinMinervaNeue": "includes/skins/SkinMinerva.php", "ICustomizableSkin": "includes/skins/ICustomizableSkin.php", "MediaWiki\\Minerva\\MenuBuilder": "includes/skins/MenuBuilder.php", - "MediaWiki\\Minerva\\MenuEntry": "includes/skins/MenuBuilder.php", + "MediaWiki\\Minerva\\MenuEntry": "includes/skins/MenuEntry.php", "MediaWiki\\Minerva\\ResourceLoaderLessVarFileModule": "includes/ResourceLoaderLessVarFileModule.php", "MediaWiki\\Minerva\\SkinUserPageHelper": "includes/skins/SkinUserPageHelper.php" },