Procházet zdrojové kódy

added new extension hook
using hook for reading modes in navigation

Kevin Papst před 8 roky
rodič
revize
84c78098d2
2 změnil soubory, kde provedl 34 přidání a 12 odebrání
  1. 30 12
      app/layout/nav_menu.phtml
  2. 4 0
      lib/Minz/ExtensionManager.php

+ 30 - 12
app/layout/nav_menu.phtml

@@ -131,20 +131,38 @@
 
 	<?php $url_output = Minz_Request::currentRequest(); ?>
 	<div class="stick" id="nav_menu_views">
-		<?php $url_output['a'] = 'normal'; ?>
-		<a class="view_normal btn <?php echo $actual_view == 'normal'? 'active' : ''; ?>" title="<?php echo _t('index.menu.normal_view'); ?>" href="<?php echo Minz_Url::display($url_output); ?>">
-			<?php echo _i("view-normal"); ?>
-		</a>
+		<?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'),
+			),
+		);
 
-		<?php $url_output['a'] = 'global'; ?>
-		<a class="view_global btn <?php echo $actual_view == 'global'? 'active' : ''; ?>" title="<?php echo _t('index.menu.global_view'); ?>" href="<?php echo Minz_Url::display($url_output); ?>">
-			<?php echo _i("view-global"); ?>
-		</a>
+		$readingModes = Minz_ExtensionManager::callHook('nav_reading_modes', $readingModes);
 
-		<?php $url_output['a'] = 'reader'; ?>
-		<a class="view_reader btn <?php echo $actual_view == 'reader'? 'active' : ''; ?>" title="<?php echo _t('index.menu.reader_view'); ?>" href="<?php echo Minz_Url::display($url_output); ?>">
-			<?php echo _i("view-reader"); ?>
-		</a>
+		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
+			}
+		?>
 
 		<?php
 			$url_output['a'] = 'rss';

+ 4 - 0
lib/Minz/ExtensionManager.php

@@ -31,6 +31,10 @@ class Minz_ExtensionManager {
 			'list' => array(),
 			'signature' => 'NoneToNone',
 		),
+		'nav_reading_modes' => array(  // function($readingModes = array) -> array | null
+			'list' => array(),
+			'signature' => 'OneToOne',
+		),
 	);
 	private static $ext_to_hooks = array();