El menú en el interfaz de la administración es dinámicamente
generado, permitiendo a todos los módulos instalados añadir nuevos
objetos y carpetas a él. Hay un juego de clases bajo el espacio de
nombres EBox::Menu que pueden ser utilizadas
para construir las estructuras del menú. Las importantes son
EBox::Menu::Item y
EBox::Menu::Folder.
El constructor para EBox::Menu::Item toma
dos argumentos nombrados text y
url. url debería ser
relativo a la ruta raíz para el interfaz de configuración, por
ejemplo, la página de filtrado de paquetes del firewall tiene
Firewall/Filter como su url.
El constructor de EBox::Menu::Folder no
toma el argumento url, pero toma el
name. El nombre es utilizado internamente como
un identificador en la implementación del menú javascript.
Ambos elementos y carpetas tienen un argumento opcional
order en sus constructores, que debería ser un
entero entre 1 y 10. Los elementos del menú están ordenador desde los
valores más bajos a los más altos. El valor por defecto es 5.
Una carpeta puede contener elementos, por lo que se pueden
añadir instancias de EBox::Menu::Item a
EBox::Menu::Folder.
Finalmente, la forma de añadir elementos del menú y/o carpetas
al menú es simplemente implementar la función
menu en el módulo. Esta función toma una
instancia EBox::Menu::Root como argumento, y
puede añadir tantos elementos y carpetas como se quieran. Ésta es la
función menu para el módulo firewall:
Ejemplo 5.15. Añadiendo carpetas y elementos al menú
sub menu
{
my ($self, $root) = @_;
my $folder = new EBox::Menu::Folder('name' => 'Firewall',
'text' => __('Firewall'),
'order' => 4);
$folder->add(new EBox::Menu::Item('url' => 'Firewall/Filter',
'text' => __('Packet Filter')));
$folder->add(new EBox::Menu::Item('url' => 'Firewall/Redirects',
'text' => __('Redirects')));
$root->add($folder);
}