OSDN Git Service

BugTrack/2436 ESLint - Linting utility for JavaScript
[pukiwiki/pukiwiki.git] / plugin / menu.inc.php
index ef4e6bf..d7b0e98 100644 (file)
@@ -1,14 +1,15 @@
 <?php
-/////////////////////////////////////////////////
 // PukiWiki - Yet another WikiWikiWeb clone.
+// menu.inc.php
+// Copyright 2003-2017 PukiWiki Development Team
+// License: GPL v2 or (at your option) any later version
 //
-// $Id: menu.inc.php,v 1.6 2004/09/04 05:42:37 henoheno Exp $
-//
+// Menu plugin
 
-// ¥µ¥Ö¥á¥Ë¥å¡¼¤ò»ÈÍѤ¹¤ë
+// Use Submenu if true
 define('MENU_ENABLE_SUBMENU', FALSE);
 
-// ¥µ¥Ö¥á¥Ë¥å¡¼¤Î̾¾Î
+// Name of Submenu
 define('MENU_SUBMENUBAR', 'MenuBar');
 
 function plugin_menu_convert()
@@ -16,33 +17,43 @@ function plugin_menu_convert()
        global $vars, $menubar;
        static $menu = NULL;
 
-       if (func_num_args()) {
+       $num = func_num_args();
+       if ($num > 0) {
+               // Try to change default 'MenuBar' page name (only)
+               if ($num > 1)       return '#menu(): Zero or One argument needed';
+               if ($menu !== NULL) return '#menu(): Already set: ' . htmlsc($menu);
                $args = func_get_args();
-               if (is_page($args[0])) $menu = $args[0];
-               return '';
-       }
+               if (! is_page($args[0])) {
+                       return '#menu(): No such page: ' . htmlsc($args[0]);
+               } else {
+                       $menu = $args[0]; // Set
+                       return '';
+               }
 
-       $page = ($menu === NULL) ? $menubar : $menu;
+       } else {
+               // Output menubar page data
+               $page = ($menu === NULL) ? $menubar : $menu;
 
-       if (MENU_ENABLE_SUBMENU) {
-               $path = explode('/', strip_bracket($vars['page']));
-               while(count($path)) {
-                       $_page = join('/', $path) . '/' . MENU_SUBMENUBAR;
-                       if (is_page($_page)) {
-                               $page = $_page;
-                               break;
+               if (MENU_ENABLE_SUBMENU) {
+                       $path = explode('/', strip_bracket($vars['page']));
+                       while(! empty($path)) {
+                               $_page = join('/', $path) . '/' . MENU_SUBMENUBAR;
+                               if (is_page($_page)) {
+                                       $page = $_page;
+                                       break;
+                               }
+                               array_pop($path);
                        }
-                       array_pop($path);
                }
-       }
 
-       if (! is_page($page)) {
-               return '';
-       } else if ($vars['page'] == $page) {
-               return '<!-- #menu(): You already view ' .
-                       htmlspecialchars($page) . ' -->';
-       } else {
-               return preg_replace('/<ul[^>]*>/', '<ul>', convert_html(get_source($page)));
+               if (! is_page($page)) {
+                       return '';
+               } else if ($vars['page'] === $page) {
+                       return '<!-- #menu(): You already view ' . htmlsc($page) . ' -->';
+               } else {
+                       // Cut fixed anchors
+                       $menutext = preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/m', '$1$2', get_source($page));
+                       return convert_html($menutext);
+               }
        }
 }
-?>