Nos encontramos en los pasos finales para completar nuestro módulo, ahora vamos a añadir una seccion de eBox al menú desde el cual podremos acceder a las diferentes partes configurables del módulo e insertar información acerca del servicio en la página Resumen.
Para insertar una nueva sección en el menú simplemente
tendremos que implementar el método menu
dentro de la clase del módulo que nos estemos implementando. En él
que recibimos una instancia de EBox::Menu::Root
a la que añadiremos la nueva sección ntp y las subsecciones: Servidor
NTP, Fecha/Hora y Zona Horaria. Veamos como está implementado este
método:
Ejemplo 7.16. Añadiendo entradas al menú eBox
sub menu
{
my ($self, $root) = @_;
my $folder = new EBox::Menu::Folder('name' => 'NTP',
'text' => __('NTP'));
$folder->add(new EBox::Menu::Item('url' => 'NTP/Index',
'text' => __('NTP server')));
$folder->add(new EBox::Menu::Item('url' => 'NTP/Datetime',
'text' => __('Date/time')));
$folder->add(new EBox::Menu::Item('url' => 'NTP/Timezone',
'text' => __('Time zone')));
$root->add($folder);
}Como vimos en Sección 5.3, para crearnos una
nueva sección en el menú deberemos crearnos una instancia de la clase
EBox::Menu::Folder a la que le pasamos el nombre
que deseamos que tenga.
Después simplemente le añadiremos instancias de la clase
EBox::Menu::Item a las que además de pasarles
el nombre que deseemos que tengan, tenemos que indicar la URL (como
vimos en Sección 5.1 solo es necesario pasar NTP/Index)
del CGI a ejecutar en cuanto el usuario trate de acceder a la
subsección indicada.
El módulo NTP no va a tener su propia sección en la página
"Summary", ya que no hay mucha información que mostrar. Sólamente
vamos a añadir una entrada en la tabla de la parte de arriba de la
página que informa sobre el estado de cada servicio. Para ello vamos
a implementar el método statusSummary en la
clase EBox::NTP:
Ejemplo 7.17. statusSummary en
EBox::NTP
sub statusSummary
{
my $self = shift;
return new EBox::Summary::Status('ntp', __('NTP local server'),
$self->isRunning, $self->service);
}