<?php
-// vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
+// vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker:
// +--------------------------------------------------------------------+
// | Ministerio de Economía |
// | AI (Administrador de Intranet) |
// $Id$
//
+// Requires. {{{
require_once 'MECON/HTML/Arbol/ArbolDB.php';
-require_once 'MECON/HTML/QuickForm.php';
+require_once 'AIForm.php';
require_once 'Servicio.php';
+// }}}
-// Dibujo el menu de arbol.
+// Creo el árbol con los servicios. {{{
$dbdata = array(
- 'db' => &$db,
+ 'db' => &$DB,
'tabla' => 'servicio',
'id' => 'servicio',
'nombre' => 'nombre',
'id_padre' => 'servicio_padre',
- 'prepend_link' => 'servicios?id='
+ 'prepend_link' => 'servicios?accion='.MODIFICACION.'&id='
);
$arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif');
+// }}}
-// Creo el formulario.
-$form =& new MECON_HTML_QuickForm();
-$form->setRendererOpts(array('width' => '400'));
-$form->addElement('header','cabecera', 'Agregar Servicio');
-$fServicio =& $form->addElement('static' ,'servicio' , 'Identificador' );
-$fPadre =& $form->addElement('text' ,'padre' , 'Servicio padre' );
-$fNombre =& $form->addElement('text' ,'nombre' , 'Nombre' );
-$fDescripcion =& $form->addElement('text' ,'descripcion' , 'Descripción' );
-$fLink =& $form->addElement('text' ,'link' , 'Enlace' );
-$fLinkAyuda =& $form->addElement('text' ,'linkayuda' , 'Enlace de la ayuda' );
-$fIcono =& $form->addElement('text' ,'icono' , 'Ícono' );
-$fLogueo =& $form->addElement('checkbox' ,'logueo' , 'Necesita login' );
-$fHabilitado =& $form->addElement('checkbox' ,'habilitado' , 'Está habilitado', '', array('checked' => 'checked'));
-$fBtnAceptar =& HTML_QuickForm::createElement('submit' , 'aceptar' , 'Aceptar' );
-$fBtnDeshacer =& HTML_QuickForm::createElement('reset' , 'deshacer', 'Deshacer');
-$fBtnCancelar =& HTML_QuickForm::createElement('submit' , 'cancelar', 'Cancelar');
-$grupo = array(
- &$fBtnAceptar,
- &$fBtnDeshacer,
- &$fBtnCancelar,
-);
-$form->addGroup($grupo, 'botones');
-// Agrego reglas de validación.
-$form->addRule('padre' , 'Debe ingresar un servicio padre.' , 'required');
-$form->addRule('nombre' , 'Debe ingresar un nombre.' , 'required');
-$form->addRule('descripcion', 'Debe ingresar una descripción.' , 'required');
-#$form->addRule('link' , 'Debe ingresar un enlace.' , 'required');
-$form->addRule('padre' , 'El servicio padre debe ser un número natural.' , 'regex' , '/^\d*$/');
-
-// Creo un servicio.
+// Creo un servicio y seteo su id. {{{
$servicio = new Servicio;
+$servicio->servicio = @$_REQUEST['id'];
+// }}}
-// Si viene un servicio por REQUEST, lo cargo.
-if (@$_REQUEST['id']) {
- $servicio->servicio = $_REQUEST['id'];
- $err =& $servicio->cargar($db);
+// Creo formulario. {{{
+$form =& new AIForm;
+// }}}
+
+// Verifico que la accion sea válida. {{{
+switch(@$_REQUEST['accion']) {
+ case BAJA:
+ case MODIFICACION:
+ $accion = $_REQUEST['accion'];
+ break;
+ default:
+ $accion = ALTA;
+}
+// }}}
+
+// Verifico si ya se envio el formulario. {{{
+$botones = $form->getSubmitValue('botones');
+if ($boton = @join('', array_keys($botones))) {
+ $boton = $boton . '_' . strtolower($botones[$boton]);
+}
+switch ($boton) {
+ case 'aceptar_agregar':
+ $accion = ALTA;
+ break;
+ case 'modificar_borrar':
+ // Viene de modificar, hay que confirmar primero.
+ $a_confirmar = true;
+ case 'aceptar_borrar':
+ $accion = BAJA;
+ $servicio->servicio = $form->getSubmitValue('servicio');
+ break;
+ case 'borrar_cancelar':
+ // Indico que viene de un formulario cancelado.
+ $cancelado = true;
+ case 'aceptar_modificar':
+ $accion = MODIFICACION;
+ $servicio->servicio = $form->getSubmitValue('servicio');
+ break;
+}
+// }}}
+
+// Inicio el formulario, cargando datos de ser necesario. {{{
+if ($accion & (BAJA | MODIFICACION)) {
+ $err =& $servicio->cargar($DB);
if (PEAR::isError($err)) {
die($err->getMessage());
}
- $fServicio->setValue($servicio->servicio);
- $fPadre->setValue($servicio->padre);
- $fNombre->setValue($servicio->nombre);
- $fDescripcion->setValue($servicio->descripcion);
- $fLink->setValue($servicio->link);
- $fLinkAyuda->setValue($servicio->linkAyuda);
- $fIcono->setValue($servicio->icono);
- $fLogueo->setValue($servicio->necesitaLogueo);
- $fHabilitado->setValue($servicio->habilitado);
+ $form->iniciar($servicio, $accion);
+} else {
+ $accion = ALTA;
+ $form->iniciar($servicio);
+}
+// }}}
+
+// Freezo de ser necesario. {{{
+if (@$a_confirmar) {
+ $form->freeze();
+}
+// }}}
+
+// Me fijo si se cargo un formulalrio y si es válido. {{{
+if ($form->validate()) {
+ switch ($accion) {
+ case ALTA:
+ $form->llenarObjeto($servicio);
+ $err =& $servicio->guardar($DB);
+ if (PEAR::isError($err)) {
+ die($err->getMessage());
+ }
+ header(sprintf('Location: servicios?accion=%d&id=%d',
+ MODIFICACION, $servicio->servicio));
+ exit;
+ break;
+ case BAJA:
+ if (!@$a_confirmar) {
+ $form->llenarObjeto($servicio);
+ $err =& $servicio->borrar($DB);
+ if (PEAR::isError($err)) {
+ die($err->getMessage());
+ }
+ header('Location: servicios');
+ exit;
+ }
+ break;
+ case MODIFICACION:
+ if (!@$cancelado) {
+ $form->llenarObjeto($servicio);
+ $err =& $servicio->guardar($DB);
+ if (PEAR::isError($err)) {
+ die($err->getMessage());
+ }
+ header(sprintf('Location: servicios?accion=%d&id=%d',
+ MODIFICACION, $servicio->servicio));
+ exit;
+ }
+ break;
+ }
}
+$body =& $form;
+// }}}
-// Dibujo.
+// Dibujo. {{{
$LAYOUT->setCellContents(0, 0, $arbol);
-$LAYOUT->setCellContents(0, 2, $form->toHtml());
+$LAYOUT->setCellContents(0, 2, $body);
$MARCO->addBody($LAYOUT);
$MARCO->display();
+// }}}
?>