Added functionality to pre-activate a specific area/subarea of the menu.
git-svn-id: file:///svn-source/pmgr/branches/pre_0.1_work_20090819@752 97e9348a-65ac-dc4b-aefc-98561f571b83
This commit is contained in:
@@ -38,7 +38,7 @@ class AppController extends Controller {
|
|||||||
var $helpers = array('Html', 'Form', 'Javascript', 'Format', 'Time', 'Grid');
|
var $helpers = array('Html', 'Form', 'Javascript', 'Format', 'Time', 'Grid');
|
||||||
var $components = array('DebugKit.Toolbar');
|
var $components = array('DebugKit.Toolbar');
|
||||||
|
|
||||||
var $sidemenu_areas = array('SITE' => false, 'CONTROLLER' => false, 'ACTION' => false);
|
var $sidemenu = array('areas' => array('SITE' => false, 'CONTROLLER' => false, 'ACTION' => false));
|
||||||
var $std_area = 10;
|
var $std_area = 10;
|
||||||
var $new_area = 20;
|
var $new_area = 20;
|
||||||
var $op_area = 30;
|
var $op_area = 30;
|
||||||
@@ -61,7 +61,7 @@ class AppController extends Controller {
|
|||||||
|
|
||||||
function sideMenuAreaVerify(&$area, $subarea, $priority = null) {
|
function sideMenuAreaVerify(&$area, $subarea, $priority = null) {
|
||||||
$area = strtoupper($area);
|
$area = strtoupper($area);
|
||||||
if (!array_key_exists($area, $this->sidemenu_areas))
|
if (!array_key_exists($area, $this->sidemenu['areas']))
|
||||||
$this->INTERNAL_ERROR("Sidemenu link '{$area}': Unknown");
|
$this->INTERNAL_ERROR("Sidemenu link '{$area}': Unknown");
|
||||||
|
|
||||||
if ($area == 'SITE')
|
if ($area == 'SITE')
|
||||||
@@ -71,9 +71,9 @@ class AppController extends Controller {
|
|||||||
elseif ($area == 'ACTION')
|
elseif ($area == 'ACTION')
|
||||||
$name = Inflector::humanize(Inflector::singularize($this->params['controller']));
|
$name = Inflector::humanize(Inflector::singularize($this->params['controller']));
|
||||||
|
|
||||||
if (empty($this->sidemenu_areas[$area]))
|
if (empty($this->sidemenu['areas'][$area]))
|
||||||
$this->sidemenu_areas[$area]
|
$this->sidemenu['areas'][$area]
|
||||||
= array('enable' => true, 'name' => $name, 'subarea' => array());
|
= array('enable' => true, 'name' => $name, 'subareas' => array());
|
||||||
|
|
||||||
if (empty($subarea))
|
if (empty($subarea))
|
||||||
return;
|
return;
|
||||||
@@ -94,15 +94,15 @@ class AppController extends Controller {
|
|||||||
else
|
else
|
||||||
$subname .= '-' . $subarea;
|
$subname .= '-' . $subarea;
|
||||||
|
|
||||||
if (empty($this->sidemenu_areas[$area]['subarea'][$subarea]))
|
if (empty($this->sidemenu['areas'][$area]['subareas'][$subarea]))
|
||||||
$this->sidemenu_areas[$area]['subarea'][$subarea]
|
$this->sidemenu['areas'][$area]['subareas'][$subarea]
|
||||||
= array('enable' => true, 'name' => $subname, 'priorities' => array());
|
= array('enable' => true, 'name' => $subname, 'priorities' => array());
|
||||||
|
|
||||||
if (empty($priority))
|
if (empty($priority))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (empty($this->sidemenu_areas[$area]['subarea'][$subarea]['priorities'][$priority]))
|
if (empty($this->sidemenu['areas'][$area]['subareas'][$subarea]['priorities'][$priority]))
|
||||||
$this->sidemenu_areas[$area]['subarea'][$subarea]['priorities'][$priority]
|
$this->sidemenu['areas'][$area]['subareas'][$subarea]['priorities'][$priority]
|
||||||
= array();
|
= array();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,9 +117,22 @@ class AppController extends Controller {
|
|||||||
function sideMenuAreaName($name, $area, $subarea = null) {
|
function sideMenuAreaName($name, $area, $subarea = null) {
|
||||||
$this->sideMenuAreaVerify($area, $subarea);
|
$this->sideMenuAreaVerify($area, $subarea);
|
||||||
if (empty($subarea))
|
if (empty($subarea))
|
||||||
$this->sidemenu_areas[$area]['name'] = $name;
|
$this->sidemenu['areas'][$area]['name'] = $name;
|
||||||
else
|
else
|
||||||
$this->sidemenu_areas[$area]['subarea'][$subarea]['name'] = $name;
|
$this->sidemenu['areas'][$area]['subareas'][$subarea]['name'] = $name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************
|
||||||
|
**************************************************************************
|
||||||
|
* function: sideMenuAreaActivate
|
||||||
|
* - Sets the selected area/subarea to be active when the
|
||||||
|
* page is first loaded.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function sideMenuAreaActivate($area, $subarea = null) {
|
||||||
|
$this->sidemenu['active'] = compact('area', 'subarea');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -133,9 +146,9 @@ class AppController extends Controller {
|
|||||||
function sideMenuEnable($area, $subarea = null, $enable = true) {
|
function sideMenuEnable($area, $subarea = null, $enable = true) {
|
||||||
$this->sideMenuAreaVerify($area, $subarea);
|
$this->sideMenuAreaVerify($area, $subarea);
|
||||||
if (isset($subarea))
|
if (isset($subarea))
|
||||||
$this->sidemenu_areas[$area]['subarea'][$subarea]['enable'] = $enable;
|
$this->sidemenu['areas'][$area]['subareas'][$subarea]['enable'] = $enable;
|
||||||
else
|
else
|
||||||
$this->sidemenu_areas[$area]['enable'] = $enable;
|
$this->sidemenu['areas'][$area]['enable'] = $enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -150,7 +163,7 @@ class AppController extends Controller {
|
|||||||
if (empty($subarea))
|
if (empty($subarea))
|
||||||
$subarea = $this->std_area;
|
$subarea = $this->std_area;
|
||||||
$this->sideMenuAreaVerify($area, $subarea);
|
$this->sideMenuAreaVerify($area, $subarea);
|
||||||
$this->sidemenu_areas[$area]['subarea'][$subarea]['priorities'][$priority][]
|
$this->sidemenu['areas'][$area]['subareas'][$subarea]['priorities'][$priority][]
|
||||||
= array('name' => $name, 'url' => $url) + (empty($extra) ? array() : $extra);
|
= array('name' => $name, 'url' => $url) + (empty($extra) ? array() : $extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -280,24 +293,36 @@ class AppController extends Controller {
|
|||||||
$this->params['admin'] = false;
|
$this->params['admin'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($this->sidemenu_areas AS &$area) {
|
foreach ($this->sidemenu['areas'] AS &$area) {
|
||||||
if (empty($area['enable']))
|
if (empty($area['enable']))
|
||||||
$area = array();
|
$area = array();
|
||||||
if (empty($area['subarea']))
|
if (empty($area['subareas']))
|
||||||
continue;
|
continue;
|
||||||
ksort($area['subarea']);
|
ksort($area['subareas']);
|
||||||
|
|
||||||
foreach ($area['subarea'] AS &$subarea) {
|
foreach ($area['subareas'] AS &$subarea) {
|
||||||
if (empty($subarea['enable']))
|
if (empty($subarea['enable']))
|
||||||
$subarea = array();
|
$subarea = array();
|
||||||
if (empty($subarea['priorities']))
|
if (empty($subarea['priorities']))
|
||||||
continue;
|
continue;
|
||||||
ksort($subarea['priorities']);
|
ksort($subarea['priorities']);
|
||||||
}
|
}
|
||||||
|
unset($subarea);
|
||||||
|
}
|
||||||
|
unset($area);
|
||||||
|
|
||||||
|
// Activate a default section (unless already specified)
|
||||||
|
foreach (array_reverse($this->sidemenu['areas']) AS $area_name => $area) {
|
||||||
|
if (empty($area))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (empty($this->sidemenu['active']) ||
|
||||||
|
empty($this->sidemenu['areas'][$this->sidemenu['active']['area']]))
|
||||||
|
$this->sideMenuAreaActivate($area_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
//pr($this->sidemenu_areas);
|
//pr($this->sidemenu);
|
||||||
$this->set('sidemenu', $this->sidemenu_areas);
|
$this->set('sidemenu', $this->sidemenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -375,6 +400,7 @@ class AppController extends Controller {
|
|||||||
|
|
||||||
function gridView($title, $action = null, $element = null) {
|
function gridView($title, $action = null, $element = null) {
|
||||||
$this->sideMenuEnable('SITE', $this->op_area);
|
$this->sideMenuEnable('SITE', $this->op_area);
|
||||||
|
$this->sideMenuAreaActivate('CONTROLLER');
|
||||||
$this->set('title', $title);
|
$this->set('title', $title);
|
||||||
// The resulting page will contain a grid, which will
|
// The resulting page will contain a grid, which will
|
||||||
// use ajax to obtain the actual data for this action
|
// use ajax to obtain the actual data for this action
|
||||||
|
|||||||
@@ -13,15 +13,29 @@
|
|||||||
|
|
||||||
echo('<DIV ID="sidemenu">' . "\n");
|
echo('<DIV ID="sidemenu">' . "\n");
|
||||||
|
|
||||||
foreach ($menu AS $area) {
|
$section = 0;
|
||||||
if (empty($area['subarea']))
|
$active_section = null;
|
||||||
|
foreach ($menu['areas'] AS $area_name => $area) {
|
||||||
|
if (empty($area['subareas']))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
foreach ($area['subarea'] AS $subarea) {
|
foreach ($area['subareas'] AS $subarea_name => $subarea) {
|
||||||
if (empty($subarea['priorities']))
|
if (empty($subarea['priorities']))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
echo('<H3 class="sidemenu-header">' . $subarea['name'] . "</H3>\n");
|
if (!isset($active_section) &&
|
||||||
|
!empty($menu['active']['area']) && $area_name == $menu['active']['area'] &&
|
||||||
|
(empty($menu['active']['subarea']) || $subarea_name == $menu['active']['subarea']))
|
||||||
|
$active_section = $section;
|
||||||
|
|
||||||
|
++$section;
|
||||||
|
|
||||||
|
echo('<H3' .
|
||||||
|
//' id="sidemenu-section-'.$area_name.'-'.$subarea_name.'"' .
|
||||||
|
' class="sidemenu-header">' .
|
||||||
|
$subarea['name'] .
|
||||||
|
"</H3>\n");
|
||||||
|
|
||||||
echo('<DIV class="sidemenu-content">' . "\n");
|
echo('<DIV class="sidemenu-content">' . "\n");
|
||||||
foreach ($subarea['priorities'] AS $priority) {
|
foreach ($subarea['priorities'] AS $priority) {
|
||||||
foreach ($priority AS $item) {
|
foreach ($priority AS $item) {
|
||||||
@@ -40,13 +54,16 @@ foreach ($menu AS $area) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
echo('</DIV>' . "\n");
|
echo('</DIV>' . "\n");
|
||||||
|
//pr(compact('section', 'active_section'));
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<script type="text/javascript"><!--
|
<script type="text/javascript"><!--
|
||||||
jQuery(document).ready(function(){
|
jQuery(document).ready(function(){
|
||||||
jQuery('#sidemenu').accordion
|
jQuery('#sidemenu').accordion
|
||||||
({ fillSpace : true,
|
({ fillSpace : true,
|
||||||
event: 'mouseover',
|
event : 'mouseover',
|
||||||
|
<?php if (isset($active_section)) echo "active : $active_section,\n"; ?>
|
||||||
<?php /* REVISIT <AP>: 20090823
|
<?php /* REVISIT <AP>: 20090823
|
||||||
* Prevent animation until we can figure out why we
|
* Prevent animation until we can figure out why we
|
||||||
* get animation width jitter */ ?>
|
* get animation width jitter */ ?>
|
||||||
|
|||||||
Reference in New Issue
Block a user