viernes, 4 de abril de 2008

TIP 1: Menú con elementos anidados

Dentro del grupo de usuarios de p4a en español, Eddie nos ha colaborado con esta manera de hacer un menú con un array, permitiendo la mantención y legibilidad del código.

class Program extends P4A {

public function __construct() {
parent::_construct();

$menu =& $this->build("P4A_Menu", "menu");

$items = array(
"catalogos" => array("Catálogos", array(
"seguridad" => array(null, array(
"usuarios" => array(null, null),
"perfiles" => array(null, null),
"modulos" => array("Módulos", null),
"elementos" => array(null, null),
"-" => array(null, null),
"bitacora" => array("Bitácora", null))),
"plantilla" => array(null, array(
"careas" => array("Áreas", null),
"departamentos" => array(null, null),
"niveles" => array(null, null),
"plazas" => array(null, null),
"- " => array(null, null),
"puestos" => array(null, null))),
"nomina" => array("Nómina", array(
"periodos" => array(null, null),
"empleados" => array(null, null))),
"-" => array(null, null),
"tipos" => array(null, array(
"t_areas" => array("Áreas", null),
"nominas" => array("Nóminas", null),
"t_periodos" => array("Periodos", null),
"t_eventos" => array("Eventos", null))))),
"herramientas" => array(null, null),
"procesos" => array(null, null),
"reportes" => array(null, array(
"r_plantilla" => array("Plantilla de Personal (resumen)", null))));

$this->agregaMenu($menu, $items);
}

private function agregaMenu($menu, $items) {
foreach ($items as $nombre => $propiedades) {
$item =& $menu->addItem($nombre);
if($nombre === "-") {
$item->setLabel(str_repeat("-", 20));
} else {
if ($propiedades[0]) {
$item->setLabel($propiedades[0]);
}

if (is_array($propiedades[1])) {
$this->agregaMenu($item, $propiedades[1]);
}
else {
$item->implement("onClick", $this, "muestraMascara");
}
}
}
}

public function muestraMascara() {
$this->openMask($this->active_object->getName());
}
}
Puedes ver el código en la siguiente dirección:

http://p4aenespanol.pastebin.com/m64682c5c

Creo que el código se explica bastante bien, esperamos que sea útil.
Y esperamos sus comentarios !!!

Saludos.

No hay comentarios: