aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Kevin Papst <kpapst@gmx.net> 2017-12-10 15:04:01 +0100
committerGravatar Kevin Papst <kpapst@gmx.net> 2017-12-10 15:04:01 +0100
commit1b7cc49d2253caf6f2ea9e3bbc5d380aeaff4ea1 (patch)
treef31bbc219593b80023d5ec2e9d024ce7c017f784
parent84c78098d27de624319df37ffb1a522318ec6778 (diff)
refactored ReadingModes to Model
-rw-r--r--app/Models/ReadingMode.php136
-rw-r--r--app/layout/nav_menu.phtml37
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