<?php 
namespace Jackbooted\Util; 
 
use \Jackbooted\Config\Cfg; 
use \Jackbooted\Forms\Request; 
use \Jackbooted\Forms\Response; 
use \Jackbooted\Html\JS; 
use \Jackbooted\Html\Tag; 
use \Jackbooted\Html\WebPage; 
/* 
 * @copyright Confidential and copyright (c) 2016 Jackbooted Software. All rights reserved. 
 * 
 * Written by Brett Dutton of Jackbooted Software 
 * brett at brettdutton dot com 
 */ 
 
/** 
 */ 
class MenuUtils extends WebPage { 
    const ACTIVE_MENU = 'ACTIVE_MENU'; 
 
    public static function display ( $menuClasses=null ) { 
        $id = 'MenuUtils_display' . Invocation::next(); 
        $jsLibraries = JS::libraryWithDependancies( JS::JQUERY_UI ); 
        $activeMenu = Request::get ( self::ACTIVE_MENU, 0 ); 
        $js = <<<JS 
            $().ready ( function () { 
                $( '#$id' ).show() 
                           .accordion({ 
                    collapsible: true, 
                    active: $activeMenu 
                }); 
            }); 
JS; 
 
        $html = ''; 
        $html .= Tag::div (  [ 'id' => $id, 'style' => 'font-size: 0.8em; width:250px; text-align:left; display:none;' ] ); 
        foreach ( self::getMenuItems( $menuClasses ) as $header => $menuList ) { 
            $html .= Tag::hTag( 'h3' ) . Tag::hRef( '#', $header ) . Tag::_hTag( 'h3' ) . 
                     Tag::div() . 
                       Tag::ul(); 
            foreach ( $menuList as $row ) { 
                $html .= Tag::li(); 
                if ( isset( $row['slug'] ) ) { 
                    $html .= Tag::hRef( Cfg::siteUrl() . '/menu.php?S=' . $row['slug'], $row['name'], $row['attribs'] ); 
                } 
                else { 
                    $html .= Tag::hRef( $row['url'], $row['name'], $row['attribs'] ); 
                } 
                $html .= Tag::_li(); 
            } 
            $html .=   Tag::_ul() . 
                     Tag::_div(); 
 
        } 
        $html .=  Tag::_div(); 
 
        return $jsLibraries . 
               JS::javaScript ( $js ) . 
               $html; 
    } 
 
    public static function getMenuItems ( $menuClasses=null ) { 
        if ( $menuClasses == null ) { 
            $menuClasses = Cfg::get( 'menu' ); 
        } 
 
        $menuBlock = 0; 
        $menuOptions =  []; 
        $resp = Response::factory(); 
 
        foreach ( $menuClasses as $key => $val ) { 
            $resp->set ( self::ACTIVE_MENU, $menuBlock ++ ); 
            $menuOptions[$key] = $val::menu( $resp ); 
        } 
        return $menuOptions; 
    } 
 
    public static function slugRedirect ( $slug, $menuClasses=null ) { 
        foreach ( self::getMenuItems( $menuClasses ) as $menuList ) { 
            foreach ( $menuList as $row ) { 
                if ( isset( $row['slug'] ) && $row['slug'] == $slug ) { 
                    header( 'Location: ' . Cfg::siteUrl() . '/' . $row['url'] ); 
                    exit(); 
                } 
            } 
        } 
 
        // Default 
        header( 'Location: ' . Cfg::siteUrl() ); 
        exit(); 
    } 
 
    public static function responseObject () { 
        return new Response ( self::ACTIVE_MENU ); 
    } 
} 
 
 |