7.5. Mostrando el módulo en el menú y la página Resumen

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);
}