diff options
| author | 2017-12-10 15:04:01 +0100 | |
|---|---|---|
| committer | 2017-12-10 15:04:01 +0100 | |
| commit | 1b7cc49d2253caf6f2ea9e3bbc5d380aeaff4ea1 (patch) | |
| tree | f31bbc219593b80023d5ec2e9d024ce7c017f784 | |
| parent | 84c78098d27de624319df37ffb1a522318ec6778 (diff) | |
refactored ReadingModes to Model
| -rw-r--r-- | app/Models/ReadingMode.php | 136 | ||||
| -rw-r--r-- | app/layout/nav_menu.phtml | 37 |
2 files changed, 145 insertions, 28 deletions
diff --git a/app/Models/ReadingMode.php b/app/Models/ReadingMode.php new file mode 100644 index 000000000..06170a468 --- /dev/null +++ b/app/Models/ReadingMode.php @@ -0,0 +1,136 @@ +<?php + +/** + * Manage the reading modes in FreshRSS. + */ +class FreshRSS_ReadingMode { + + /** + * @var string + */ + protected $name; + /** + * @var string + */ + protected $title; + /** + * @var string[] + */ + protected $urlParams; + /** + * @var bool + */ + protected $isActive = false; + + /** + * ReadingMode constructor. + * @param string $name + * @param string $title + * @param string[] $urlParams + * @param bool $active + */ + public function __construct($name, $title, $urlParams, $active) { + $this->name = $name; + $this->title = $title; + $this->urlParams = $urlParams; + $this->isActive = $active; + } + + /** + * @return string + */ + public function getName() { + return $this->name; + } + + /** + * @param string $name + * @return FreshRSS_ReadingMode + */ + public function setName($name) { + $this->name = $name; + return $this; + } + + /** + * @return string + */ + public function getTitle() { + return $this->title; + } + + /** + * @param string $title + * @return FreshRSS_ReadingMode + */ + public function setTitle($title) { + $this->title = $title; + return $this; + } + + /** + * @return string + */ + public function getUrlParams() { + return $this->urlParams; + } + + /** + * @param string $urlParams + * @return FreshRSS_ReadingMode + */ + public function setUrlParams($urlParams) { + $this->urlParams = $urlParams; + return $this; + } + + /** + * @return bool + */ + public function isActive() { + return $this->isActive; + } + + /** + * @param bool $isActive + * @return FreshRSS_ReadingMode + */ + public function setIsActive($isActive) { + $this->isActive = $isActive; + return $this; + } + + /** + * Returns the built-in reading modes. + * return ReadingMode[] + */ + public static function getReadingModes() { + $actualView = Minz_Request::actionName(); + $defaultCtrl = Minz_Request::defaultControllerName(); + $isDefaultCtrl = Minz_Request::controllerName() == $defaultCtrl; + $urlOutput = Minz_Request::currentRequest(); + + $readingModes = array( + new FreshRSS_ReadingMode( + _i("view-normal"), + _t('index.menu.normal_view'), + array_merge($urlOutput, array('c' => $defaultCtrl, 'a' => 'normal')), + ($isDefaultCtrl && $actualView === 'normal') + ), + new FreshRSS_ReadingMode( + _i("view-global"), + _t('index.menu.global_view'), + array_merge($urlOutput, array('c' => $defaultCtrl, 'a' => 'global')), + ($isDefaultCtrl && $actualView === 'global') + ), + new FreshRSS_ReadingMode( + _i("view-reader"), + _t('index.menu.reader_view'), + array_merge($urlOutput, array('c' => $defaultCtrl, 'a' => 'reader')), + ($isDefaultCtrl && $actualView === 'reader') + ), + ); + + return $readingModes; + } +} diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml index c0141e8a4..403ac5cd6 100644 --- a/app/layout/nav_menu.phtml +++ b/app/layout/nav_menu.phtml @@ -132,36 +132,17 @@ <?php $url_output = Minz_Request::currentRequest(); ?> <div class="stick" id="nav_menu_views"> <?php - $readingModes = array( - 'normal' => array( - 'name' => _i("view-normal"), - 'title' => _t('index.menu.normal_view'), - 'url' => array_merge($url_output, array('c' => Minz_Request::defaultControllerName(), 'a' => 'normal')), - 'active' => (Minz_Request::controllerName() == Minz_Request::defaultControllerName() && $actual_view == 'normal'), - ), - 'global' => array( - 'name' => _i("view-global"), - 'title' => _t('index.menu.global_view'), - 'url' => array_merge($url_output, array('c' => Minz_Request::defaultControllerName(), 'a' => 'global')), - 'active' => (Minz_Request::controllerName() == Minz_Request::defaultControllerName() && $actual_view == 'global'), - ), - 'reader' => array( - 'name' => _i("view-reader"), - 'title' => _t('index.menu.reader_view'), - 'url' => array_merge($url_output, array('c' => Minz_Request::defaultControllerName(), 'a' => 'reader')), - 'active' => (Minz_Request::controllerName() == Minz_Request::defaultControllerName() && $actual_view == 'reader'), - ), - ); - + $readingModes = FreshRSS_ReadingMode::getReadingModes(); $readingModes = Minz_ExtensionManager::callHook('nav_reading_modes', $readingModes); - foreach($readingModes as $key => $mode) { - ?> - <a class="view_normal btn <?php if ($mode['active']) { echo 'active'; } ?>" title="<?php echo $mode['title']; ?>" href="<?php echo Minz_Url::display($mode['url']); ?>"> - <?php echo $mode['name']; ?> - </a> - <?php - } + /** @var FreshRSS_ReadingMode $mode */ + foreach($readingModes as $mode) { + ?> + <a class="view_normal btn <?php if ($mode->isActive()) { echo 'active'; } ?>" title="<?php echo $mode->getTitle(); ?>" href="<?php echo Minz_Url::display($mode->getUrlParams()); ?>"> + <?php echo $mode->getName(); ?> + </a> + <?php + } ?> <?php |
