Пример #1
0
/**
 * Draws menu with sections and subsections
 */
function osc_draw_admin_menu()
{
    // actual url
    $actual_url = urldecode($_SERVER['QUERY_STRING']);
    $actual_page = Params::getParam('page');
    $something_selected = false;
    $adminMenu = AdminMenu::newInstance();
    $aMenu = $adminMenu->get_array_menu();
    $current_menu_id = osc_current_menu();
    $is_moderator = osc_is_moderator();
    // Remove hook admin_menu when osclass 4.0 be released
    // hack, compatibility with menu plugins.
    ob_start();
    osc_run_hook('admin_menu');
    $plugins_out = ob_get_contents();
    ob_end_clean();
    // clean old menus (remove h3 element)
    $plugins_out = preg_replace('|<h3><a .*>(.*)</a></h3>|', '<li class="submenu-divide">$1</li>', $plugins_out);
    $plugins_out = preg_replace('|<ul>|', '', $plugins_out);
    $plugins_out = preg_replace('|</ul>|', '', $plugins_out);
    // -----------------------------------------------------
    $sub_current = false;
    $sMenu = '<!-- menu -->' . PHP_EOL;
    $sMenu .= '<div id="sidebar">' . PHP_EOL;
    $sMenu .= '<ul class="oscmenu">' . PHP_EOL;
    // find current menu section
    $current_menu = '';
    $priority = 0;
    $urlLenght = 0;
    foreach ($aMenu as $key => $value) {
        // --- submenu section
        if (array_key_exists('sub', $value)) {
            $aSubmenu = $value['sub'];
            foreach ($aSubmenu as $aSub) {
                $credential_sub = $aSub[4];
                if (!$is_moderator || $is_moderator && $credential_sub == 'moderator') {
                    // show
                    $url_submenu = $aSub[1];
                    $url_submenu = str_replace(osc_admin_base_url(true) . '?', '', $url_submenu);
                    $url_submenu = str_replace(osc_admin_base_url(), '', $url_submenu);
                    if (strpos($actual_url, $url_submenu, 0) === 0 && $priority <= 2 && $url_menu != '') {
                        if ($urlLenght < strlen($url_submenu)) {
                            $urlLenght = strlen($url_submenu);
                            $sub_current = true;
                            $current_menu = $value[2];
                            $priority = 2;
                        }
                    } else {
                        if ($actual_page == $value[2] && $priority < 1) {
                            $sub_current = true;
                            $current_menu = $value[2];
                            $priority = 1;
                        }
                    }
                }
            }
        }
        // --- menu section
        $url_menu = $value[1];
        $url_menu = str_replace(osc_admin_base_url(true) . '?', '', $url_menu);
        $url_menu = str_replace(osc_admin_base_url(), '', $url_menu);
        if (@strpos($actual_url, $url_menu) === 0 && $priority <= 2 && $url_menu != '') {
            if ($urlLenght < strlen($url_menu)) {
                $urlLenght = strlen($url_menu);
                $sub_current = true;
                $current_menu = $value[2];
                $priority = 2;
            }
        } else {
            if ($actual_page == $value[2] && $priority < 1) {
                $sub_current = true;
                $current_menu = $value[2];
                $priority = 1;
            } else {
                if ($url_menu == $actual_page) {
                    $sub_current = true;
                    $current_menu = $value[2];
                    $priority = 0;
                }
            }
        }
    }
    $value = array();
    foreach ($aMenu as $key => $value) {
        $sSubmenu = "";
        $credential = $value[3];
        if (!$is_moderator || $is_moderator && $credential == 'moderator') {
            // show
            $class = '';
            if (array_key_exists('sub', $value)) {
                // submenu
                $aSubmenu = $value['sub'];
                if ($aSubmenu) {
                    $sSubmenu .= "<ul>" . PHP_EOL;
                    foreach ($aSubmenu as $aSub) {
                        $credential_sub = $aSub[4];
                        if (!$is_moderator || $is_moderator && $credential_sub == 'moderator') {
                            // show
                            $sSubmenu .= '<li><a id="' . $aSub[2] . '" href="' . $aSub[1] . '">' . $aSub[0] . '</a></li>' . PHP_EOL;
                        }
                    }
                    // hardcoded plugins/themes under menu plugins
                    if ($key == 'plugins' && !$is_moderator) {
                        $sSubmenu .= $plugins_out;
                    }
                    $sSubmenu .= '<li class="arrow"></li>' . PHP_EOL;
                    $sSubmenu .= "</ul>" . PHP_EOL;
                }
            }
            $class = osc_apply_filter('current_admin_menu_' . $value[2], $class);
            $icon = '';
            if (isset($value[4])) {
                $icon = '<div class="ico ico-48" style="background-image:url(\'' . $value[4] . '\');">';
            } else {
                $icon = '<div class="ico ico-48 ico-' . $value[2] . '">';
            }
            if ($current_menu == $value[2]) {
                $class = 'current';
            }
            $sMenu .= '<li id="menu_' . $value[2] . '" class="' . $class . '">' . PHP_EOL;
            $sMenu .= '<h3><a id="' . $value[2] . '" href="' . $value[1] . '">' . $icon . '</div>' . $value[0] . '</a></h3>' . PHP_EOL;
            $sMenu .= $sSubmenu;
            $sMenu .= '</li>' . PHP_EOL;
        }
    }
    $sMenu .= '</ul>' . PHP_EOL;
    $sMenu .= '<div id="show-more">' . PHP_EOL;
    $sMenu .= '<h3><a id="stats" href="#"><div class="ico ico-48 ico-more"></div>' . __('Show more') . '</a></h3>' . PHP_EOL;
    $sMenu .= '<ul id="hidden-menus">' . PHP_EOL;
    $sMenu .= '</ul>' . PHP_EOL;
    $sMenu .= '</div>' . PHP_EOL;
    $sMenu .= '<div class="osc_switch_mode"><a id="osc_toolbar_switch_mode" href="' . osc_admin_base_url(true) . '?page=ajax&action=runhook&hook=compactmode"><div class="background"></div><div class="skin"></div><div class="trigger"></div></a><h3>' . __('Compact') . '</h3></div>' . PHP_EOL;
    $sMenu .= '</div>' . PHP_EOL;
    $sMenu .= '<!-- menu end -->' . PHP_EOL;
    echo $sMenu;
}
Пример #2
0
/**
 * Draws menu with sections and subsections
 */
function osc_draw_admin_menu()
{
    $something_selected = false;
    $adminMenu = AdminMenu::newInstance();
    $aMenu = $adminMenu->get_array_menu();
    $current_menu_id = osc_current_menu();
    $is_moderator = osc_is_moderator();
    // Remove hook admin_menu when osclass 4.0 be released
    // hack, compatibility with menu plugins.
    ob_start();
    osc_run_hook('admin_menu');
    $plugins_out = ob_get_contents();
    ob_end_clean();
    // clean old menus (remove h3 element)
    $plugins_out = preg_replace('|<h3><a .*>(.*)</a></h3>|', '<li class="submenu-divide">$1</li>', $plugins_out);
    $plugins_out = preg_replace('|<ul>|', '', $plugins_out);
    $plugins_out = preg_replace('|</ul>|', '', $plugins_out);
    // -----------------------------------------------------
    $sMenu = '<!-- menu -->' . PHP_EOL;
    $sMenu .= '<div id="sidebar">' . PHP_EOL;
    $sMenu .= '<ul class="oscmenu">' . PHP_EOL;
    foreach ($aMenu as $key => $value) {
        $sSubmenu = "";
        $credential = $value[3];
        if (!$is_moderator || $is_moderator && $credential == 'moderator') {
            // show
            if (array_key_exists('sub', $value)) {
                // submenu
                $aSubmenu = $value['sub'];
                if ($aSubmenu) {
                    $sSubmenu .= "<ul>" . PHP_EOL;
                    foreach ($aSubmenu as $aSub) {
                        $credential_sub = $aSub[4];
                        if (!$is_moderator || $is_moderator && $credential_sub == 'moderator') {
                            // show
                            $sSubmenu .= '<li><a id="' . $aSub[2] . '" href="' . $aSub[1] . '">' . $aSub[0] . '</a></li>' . PHP_EOL;
                        }
                    }
                    // hardcoded plugins/themes under menu plugins
                    if ($key == 'plugins' && !$is_moderator) {
                        // preprocess plugin_out, remove all tags unless
                        // <li> tags
                        $sSubmenu .= $plugins_out;
                    }
                    $sSubmenu .= '<li class="arrow"></li>' . PHP_EOL;
                    $sSubmenu .= "</ul>" . PHP_EOL;
                }
            }
            $class = '';
            if ($current_menu_id == $value[2]) {
                $class = 'current';
                $something_selected = true;
            }
            $icon = '';
            if (isset($value[4])) {
                $icon = '<div class="ico ico-48" style="background-image:url(\'' . $value[4] . '\');">';
            } else {
                $icon = '<div class="ico ico-48 ico-' . $value[2] . '">';
            }
            $sMenu .= '<li id="menu_' . $value[2] . '" class="' . $class . '">' . PHP_EOL;
            $sMenu .= '<h3><a id="' . $value[2] . '" href="' . $value[1] . '">' . $icon . '</div>' . $value[0] . '</a></h3>' . PHP_EOL;
            $sMenu .= $sSubmenu;
            $sMenu .= '</li>' . PHP_EOL;
        }
    }
    $sMenu .= '</ul>' . PHP_EOL;
    $sMenu .= '<div id="show-more">' . PHP_EOL;
    $sMenu .= '<h3><a id="stats" href="#"><div class="ico ico-48 ico-more"></div>' . __('Show more') . '</a></h3>' . PHP_EOL;
    $sMenu .= '<ul id="hidden-menus">' . PHP_EOL;
    $sMenu .= '</ul>' . PHP_EOL;
    $sMenu .= '</div>' . PHP_EOL;
    $sMenu .= '<div class="osc_switch_mode"><a id="osc_toolbar_switch_mode" href="' . osc_admin_base_url(true) . '?page=ajax&action=runhook&hook=compactmode"><div class="background"></div><div class="skin"></div><div class="trigger"></div></a><h3>' . __('Compact') . '</h3></div>' . PHP_EOL;
    $sMenu .= '</div>' . PHP_EOL;
    $sMenu .= '<!-- menu end -->' . PHP_EOL;
    echo $sMenu;
}