瀏覽代碼

refactored ReadingModes to Model

Kevin Papst 8 年之前
父節點
當前提交
1b7cc49d22
共有 2 個文件被更改,包括 145 次插入28 次删除
  1. 136 0
      app/Models/ReadingMode.php
  2. 9 28
      app/layout/nav_menu.phtml

+ 136 - 0
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;
+	}
+}

+ 9 - 28
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