function plugin_monobook_navigation($wikinote, $tabs, $background) { global $vars, $plugin, $_monobook_navigation_messages; if (!exist_plugin('monobook_getlink')) { die('monobook_getlink plugin not found'); } do_plugin_init('monobook_navigation'); $main_tabs = ''; if ($wikinote->is_effect()) { $main_tabs = str_replace(array('<ul class="wikinote">', '</ul>', "\n"), '', $wikinote->show_tabs(array(array('cmd' => 'main', 'label' => $_monobook_navigation_messages['article']), array('cmd' => 'note', 'label' => $_monobook_navigation_messages['discuss'])))); } $sub_tabs = ''; $selected_flag = FALSE; foreach ($tabs as $tab) { if ($tab === 'edit' && is_freeze($vars['page']) && !in_array('source', $tabs)) { $tab = 'source'; } if ($tab === 'edit' && $plugin === 'paraedit') { $tab = 'paraedit'; } if ($tab === 'edit' && exist_plugin('revert') && plugin_revert_getlink()) { $tab = 'revert'; } list($link, $selected) = plugin_monobook_getlink($tab, $_monobook_navigation_messages, TRUE); if (!$link) { continue; } if ($selected) { $sub_tabs .= '<li class="selected">' . $link . '</li>'; $selected_flag = TRUE; } else { $sub_tabs .= '<li>' . $link . '</li>'; } } if (!$selected_flag) { $link = plugin_monobook_getlink('nowplugin', $_monobook_navigation_messages); if (!$main_tabs) { if ($link) { $sub_tabs = '<li class="selected" id="separate">' . $link . '</li>' . $sub_tabs; } else { $sub_tabs = '<li class="selected"><a href="' . get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?') . '">' . $_monobook_navigation_messages['undefined'] . '</a></li>'; } } elseif ($main_tabs && !arg_check('read') && $link) { $sub_tabs = '<li class="selected">' . $link . '</li>' . $sub_tabs; } } return '<div id="navigator"><ul' . $background . '>' . $main_tabs . $sub_tabs . '</ul></div>' . "\n"; }
/** * @author lunt * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GPL 2 * @version $Id: monobook_getlink.inc.php 267 2007-08-03 11:25:16Z lunt $ */ function plugin_monobook_getlink($tab, $message, $check_selected = FALSE) { global $vars, $plugin, $_LINK; global $do_backup, $function_freeze, $referer, $trackback; global $defaultpage, $whatsnew, $help_page, $cantedit; static $page, $is_page, $is_pagename, $is_editable, $is_freeze; if (is_null($page)) { $page = empty($vars['page']) ? '' : $vars['page']; $is_page = is_page($page); $is_pagename = is_pagename($page); $is_editable = is_editable($page); $is_freeze = is_freeze($page); } if ($tab === 'nowplugin') { $tab = $plugin; if ($plugin === 'attach') { if (isset($vars['pcmd']) && $vars['pcmd'] === 'info') { $tab = 'attachinfo'; } elseif (isset($vars['pcmd']) && $vars['pcmd'] === 'list') { $tab = empty($vars['refer']) ? 'attachlistall' : 'attachlist'; } else { $tab = 'upload'; } } } $link = $title = ''; $selected = 0; switch ($tab) { case 'add': case 'edit': if (auth::check_role('readonly') || !$is_editable) { break; } $link = $_LINK[$tab]; $title = $message[$tab]; break; case 'attach': case 'upload': if (auth::check_role('readonly') || !ini_get('file_uploads') || !$is_page || !$is_editable) { break; } $link = $_LINK['upload']; $title = $message['upload']; if ($plugin === 'attach' && isset($vars['pcmd']) && $vars['pcmd'] === 'upload') { $selected = 1; } break; case 'attachinfo': $link = get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?'); $title = $message['attachinfo']; $selected = 1; break; case 'attachlist': if ($is_pagename) { $link = get_script_uri() . '?plugin=attach&pcmd=list&refer=' . rawurlencode($page); } elseif ($plugin === 'attach' && isset($vars['pcmd']) && $vars['pcmd'] === 'list' && !empty($vars['refer'])) { $link = get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?'); $selected = 1; } $title = $message['attachlist']; break; case 'attachlistall': $link = get_script_uri() . '?plugin=attach&pcmd=list'; $title = $message['attachlistall']; if ($plugin === 'attach' && isset($vars['pcmd']) && $vars['pcmd'] === 'list' && empty($vars['refer'])) { $selected = 1; } break; case 'backlink': case 'related': if (!$is_pagename) { break; } $link = get_script_uri() . '?plugin=related&page=' . rawurlencode($page); $title = $message['related']; $tab = 'related'; break; case 'backup': if (!$do_backup || !$is_pagename) { break; } $link = $_LINK['backup']; $title = $message['backup']; break; case 'copy': case 'template': if (auth::check_role('readonly')) { break; } if ($is_page) { $link = $_LINK['copy']; } elseif ($plugin === 'template') { $link = get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?'); } $title = $message['copy']; $tab = 'template'; break; case 'diff': if (!$is_pagename) { break; } $link = $_LINK['diff']; $title = $message['diff']; break; case 'filelist': case 'help': case 'list': case 'rdf': case 'recent': case 'rss': case 'rss10': case 'rss20': case 'search': case 'top': $link = $_LINK[$tab]; $title = $message[$tab]; break; case 'freeze': case 'unfreeze': if (auth::check_role('readonly') || !$function_freeze || !$is_page || in_array($page, $cantedit)) { break; } $tab = $is_freeze ? 'unfreeze' : 'freeze'; $link = $_LINK[$tab]; $title = $message[$tab]; break; case 'new': case 'newpage': if (auth::check_role('readonly')) { break; } $link = $_LINK['new']; $title = $message['new']; $tab = 'newpage'; break; case 'paraedit': $link = get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?'); $title = $message['edit']; break; case 'read': $link = $_LINK['reload']; $title = $message['article']; break; case 'refer': case 'referer': if (!$referer || !$is_pagename) { break; } $link = $_LINK['refer']; $title = $message['refer']; $tab = 'referer'; break; case 'reload': if (!$page) { break; } $link = $_LINK['reload']; $title = $message['reload']; break; case 'rename': if (auth::check_role('readonly')) { break; } if ($is_page && $is_editable) { $link = $_LINK['rename']; } elseif ($plugin === 'rename') { $link = get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?'); } $title = $message['rename']; break; case 'revert': $link = plugin_revert_getlink(); $link = $link ? $link : get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?'); $title = $message['revert']; break; case 'source': if (!$is_page || PKWK_SAFE_MODE) { break; } $link = get_script_uri() . '?cmd=source&page=' . rawurlencode($page); $title = $message['source']; break; case 'trackback': if (!$trackback || !$is_pagename) { break; } $link = $_LINK['trackback']; $title = $message['trackback'] . ' (' . tb_count($page) . ')'; break; case 'yetlist': if (auth::check_role('readonly')) { break; } $link = get_script_uri() . '?plugin=yetlist'; $title = $message['yetlist']; break; } if ($link) { $link = '<a href="' . $link . '">' . $title . '</a>'; } if (!$check_selected) { return $link; } if ($plugin !== 'attach' && $plugin === $tab || $page === $defaultpage && $tab === 'top' || $page === $whatsnew && $tab === 'recent' || $page === $help_page && $tab === 'help') { $selected = 1; } return array($link, $selected); }