From: Leandro Lucarella Date: Fri, 4 Jul 2003 20:00:42 +0000 (+0000) Subject: Se termina la primera versión funcional de servicios. X-Git-Tag: svn_import~63 X-Git-Url: https://git.llucax.com/mecon/ai.git/commitdiff_plain/7b2d6f36cb02c419179c837bd2465ba4ae1031aa Se termina la primera versión funcional de servicios. --- diff --git a/doc/uml.xmi b/doc/uml.xmi index d93cc46..6b1092c 100644 --- a/doc/uml.xmi +++ b/doc/uml.xmi @@ -9,7 +9,7 @@ - + @@ -101,9 +101,11 @@ x2c:get" name="hijos" static="0" scope="202" /> - - + + + + @@ -113,32 +115,32 @@ x2c:get" name="hijos" static="0" scope="202" /> - - + + - - - - + + + + - - + + - - + + - - + + @@ -156,6 +158,7 @@ x2c:get" name="hijos" static="0" scope="202" /> + diff --git a/sistema/local_lib/AIForm.php b/sistema/local_lib/AIForm.php index b84837f..6eff1b0 100644 --- a/sistema/local_lib/AIForm.php +++ b/sistema/local_lib/AIForm.php @@ -31,12 +31,7 @@ require_once 'MECON/HTML/QuickForm.php'; // ~X2C -// Tipo de elementos a manipular. -define('GRUPO', 1); -define('SERVICIO', 2); -define('SISTEMA', 4); - -// Acciones. +// Definicion de acciones. define('ALTA', 1); define('BAJA', 2); define('MODIFICACION', 4); @@ -54,27 +49,16 @@ class AIForm extends MECON_HTML_QuickForm { /** * Construye un formulario para el objecto especificado. * - * @param int $tipo Tipo de formulario a crear. Puede ser GRUPO, SERVICIO o SISTEMA. - * @param int $accion Accion que realizar?el formulario a crear. Puede ser ALTA, BAJA o MODIFICACION. * @param object &$obj Objeto con el cual rellenar el formulario. Puede ser GrupoSecciones, Servicio o Sistema. + * @param int $accion Accion que realizar?el formulario a crear. Puede ser ALTA, BAJA o MODIFICACION. * * @return void * @access public */ - function iniciar($tipo, $accion, &$obj) // ~X2C + function iniciar(&$obj, $accion = ALTA) // ~X2C { - switch ($tipo) { - case GRUPO: - $s_tipo = 'grupo'; - break; - case SERVICIO: - $s_tipo = 'servicio'; - break; - case SISTEMA: - $s_tipo = 'sistema'; - break; - } - $s_padre = $s_tipo.'_padre'; + $clase = get_class($obj); + $padre = $clase.'_padre'; switch ($accion) { case BAJA: $s_accion = 'Borrar'; @@ -91,25 +75,25 @@ class AIForm extends MECON_HTML_QuickForm { $this->addElement('header','cabecera', "$s_accion Servicio"); // Elementos. if ($accion & (BAJA | MODIFICACION)) { - $fId =& $this->addElement('text', $s_tipo, 'Identificador'); - $fId->setValue($obj->servicio); + $fId =& $this->addElement('text', $clase, 'Identificador'); + $fId->setValue($obj->$clase); $fId->freeze(); } - if ($tipo & (GRUPO | SERVICIO)) { - $fPadre =& $this->addElement('text', $s_padre, 'Servicio padre'); + if ($clase == 'grupo' or $clase == 'servicio') { + $fPadre =& $this->addElement('text', $padre, 'Servicio padre'); $fNombre =& $this->addElement('text', 'nombre', 'Nombre'); // Validación. $this->addRule('nombre','Debe ingresar un nombre.', 'required'); - $this->addRule($s_padre, 'Debe ingresar un servicio padre.', 'required'); - $this->addRule($s_padre, 'El servicio padre debe ser un número natural.', + $this->addRule($padre, 'Debe ingresar un servicio padre.', 'required'); + $this->addRule($padre, 'El servicio padre debe ser un número natural.', 'regex', '/^\d*$/'); // Carga datos. if ($accion & (BAJA | MODIFICACION)) { - $fPadre->setValue($obj->$s_padre); + $fPadre->setValue($obj->$padre); $fNombre->setValue($obj->nombre); } } - if ($tipo & SERVICIO) { + if ($clase == 'servicio') { $fDescripcion =& $this->addElement('text', 'descripcion', 'Descripción'); $fLogueo =& $this->addElement('checkbox','logueo', 'Necesita login'); // Validación @@ -120,7 +104,7 @@ class AIForm extends MECON_HTML_QuickForm { $fLogueo->setValue($obj->necesita_logueo); } } - if ($tipo & (SERVICIO | SISTEMA)) { + if ($clase == 'servicio' or $clase == 'sistema') { $fLink =& $this->addElement('text', 'link', 'Enlace'); $fLinkAyuda =& $this->addElement('text', 'link_ayuda', 'Enlace de la ayuda'); $fIcono =& $this->addElement('text', 'icono', 'Ícono'); @@ -140,14 +124,11 @@ class AIForm extends MECON_HTML_QuickForm { // Botones. $fBtnAccion =& parent::createElement('submit', 'aceptar' , $s_accion); if ($accion & MODIFICACION) { - $fBtnCancelar =& parent::createElement('submit', 'cancelar' , 'Borrar'); - $fBtnCancelar =& parent::createElement('submit', 'cancelar' , 'Borrar'); - } - if ($accion & ALTA) { - $fBtnCancelar =& parent::createElement('reset', 'cancelar', 'Limpiar'); - } - if ($accion & BAJA) { - $fBtnCancelar =& parent::createElement('submit', 'cancelar', 'Cancelar'); + $fBtnCancelar =& parent::createElement('submit', 'modificar' , 'Borrar'); + } elseif ($accion & ALTA) { + $fBtnCancelar =& parent::createElement('reset', 'agregar', 'Limpiar'); + } elseif ($accion & BAJA) { + $fBtnCancelar =& parent::createElement('submit', 'borrar', 'Cancelar'); } $grupo = array( &$fBtnAccion, @@ -157,6 +138,38 @@ class AIForm extends MECON_HTML_QuickForm { } // -X2C + // +X2C Operation 510 + /** + * Llena un objeto con los datos del formulario. + * + * @param mixed &$obj Objeto a llenar con los datos del formulario. Puede ser GrupoSecciones, Servicio o Sistema. + * + * @return void + * @access public + */ + function llenarObjeto(&$obj) // ~X2C + { + $clase = get_class($obj); + $padre = $clase.'_padre'; + // Elementos. + $obj->$clase = $this->getSubmitValue($clase); + $obj->habilitado = $this->getSubmitValue('habilitado'); + if ($clase == 'grupo' or $clase == 'servicio') { + $obj->$padre = $this->getSubmitValue($padre); + $obj->nombre = $this->getSubmitValue('nombre'); + } + if ($clase == 'servicio') { + $obj->descripcion = $this->getSubmitValue('descripcion'); + $obj->necesita_logueo = $this->getSubmitValue('logueo'); + } + if ($clase == 'servicio' or $clase == 'sistema') { + $obj->link = $this->getSubmitValue('link'); + $obj->link_ayuda = $this->getSubmitValue('link_ayuda'); + $obj->icono = $this->getSubmitValue('icono'); + } + } + // -X2C + } // -X2C Class :AIForm ?> diff --git a/sistema/www/servicios.php b/sistema/www/servicios.php index d4087eb..417dd2a 100644 --- a/sistema/www/servicios.php +++ b/sistema/www/servicios.php @@ -1,5 +1,5 @@ &$DB, 'tabla' => 'servicio', @@ -41,12 +43,18 @@ $dbdata = array( 'prepend_link' => 'servicios?accion='.MODIFICACION.'&id=' ); $arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif'); +// }}} -// Creo un servicio y seteo su id. +// Creo un servicio y seteo su id. {{{ $servicio = new Servicio; $servicio->servicio = @$_REQUEST['id']; +// }}} -// Verifico que la accion sea válida. +// Creo formulario. {{{ +$form =& new AIForm; +// }}} + +// Verifico que la accion sea válida. {{{ switch(@$_REQUEST['accion']) { case BAJA: case MODIFICACION: @@ -55,100 +63,99 @@ switch(@$_REQUEST['accion']) { default: $accion = ALTA; } +// }}} -// Creo formulario. -$form =& new AIForm; - -// Verifico si ya se envio el formulario. -$freeze = false; -switch (@strtolower(join('', ($form->getSubmitValue('botones'))))) { - case 'agregar': +// 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 'borrar': + case 'modificar_borrar': + // Viene de modificar, hay que confirmar primero. + $a_confirmar = true; + case 'aceptar_borrar': $accion = BAJA; $servicio->servicio = $form->getSubmitValue('servicio'); - // Es la primera "llamada" a borrar asi que indico que hay que - // freezarlo primero para confirmar. - $freeze = true; break; - case 'modificar': - case 'cancelar': + case 'borrar_cancelar': + // Indico que viene de un formulario cancelado. + $cancelado = true; + case 'aceptar_modificar': $accion = MODIFICACION; $servicio->servicio = $form->getSubmitValue('servicio'); break; } +// }}} -// Cargo datos de ser necesario. +// Inicio el formulario, cargando datos de ser necesario. {{{ if ($accion & (BAJA | MODIFICACION)) { $err =& $servicio->cargar($DB); if (PEAR::isError($err)) { die($err->getMessage()); } - $form->iniciar(SERVICIO, $accion, $servicio); + $form->iniciar($servicio, $accion); } else { $accion = ALTA; - $form->iniciar(SERVICIO, ALTA, $servicio); + $form->iniciar($servicio); } +// }}} -// Freezo de ser necesario. -if ($freeze) { +// Freezo de ser necesario. {{{ +if (@$a_confirmar) { $form->freeze(); } +// }}} -// Me fijo si se cargo un formulalrio y si es válido. +// Me fijo si se cargo un formulalrio y si es válido. {{{ if ($form->validate()) { -/* $botones =& $form->getElement('botones'); - $botones =& $botones->getElements(); - $btnAceptar =& $botones[0]; - $btnCancelar =& $botones[1]; - $body = $btnAceptar->getValue() . '
' . $btnCancelar->getValue() . '
'; - switch (strtolower($btnAceptar->getValue())) { - case 'agregar': - $body .= 'Tengo que agregar!!!'; - break; - case 'modificar': - if (strtolower($btnCancelar->getValue()) == 'borrar') { - $body .= 'Tengo que poner confirmación para borrar!!!'; - } else { - $body .= 'Tengo que modificar!!!'; - } - break; - case 'borrar': - if (strtolower($btnCancelar->getValue()) == 'cancelar') { - $body .= 'Tengo que poner para modificar de nuevo!!!'; - } else { - $body .= 'Tengo que borrar!!!'; - } - break; - }*/ switch ($accion) { case ALTA: - $form->freeze(); - $body = 'Tengo que agregar!!!' . $form->toHtml(); + $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 ($form->isFrozen()) { - $form->freeze(); - $body = 'Tengo que borrar!!!' . $form->toHtml(); - } else { - $form->freeze(); - $body =& $form; + if (!@$a_confirmar) { + $form->llenarObjeto($servicio); + $err =& $servicio->borrar($DB); + if (PEAR::isError($err)) { + die($err->getMessage()); + } + header('Location: servicios'); + exit; } break; case MODIFICACION: - $form->freeze(); - $body = 'Tengo que modificar!!!' . $form->toHtml(); + 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; } -} else { - $body =& $form; } +$body =& $form; +// }}} -// Dibujo. +// Dibujo. {{{ $LAYOUT->setCellContents(0, 0, $arbol); $LAYOUT->setCellContents(0, 2, $body); $MARCO->addBody($LAYOUT); $MARCO->display(); +// }}} ?>