function iniciar(&$obj, $accion = ALTA) // ~X2C
{
$clase = get_class($obj);
+ $s_clase = ucfirst($clase);
+ if ($clase == 'gruposecciones') {
+ $s_clase = 'Grupo de Secciones';
+ }
$padre = $clase.'_padre';
switch ($accion) {
case BAJA:
}
// Construyo con el padre y seteos generales.
$this->setRendererOpts(array('width' => '400'));
- $this->addElement('header','cabecera', "$s_accion Servicio");
+ $this->addElement('header','cabecera', $s_accion . ' ' . $s_clase);
// Elementos.
if ($accion & (BAJA | MODIFICACION)) {
$fId =& $this->addElement('text', $clase, 'Identificador');
$fId->setValue($obj->$clase);
$fId->freeze();
}
- if ($clase == 'grupo' or $clase == 'servicio') {
- $fPadre =& $this->addElement('text', $padre, 'Servicio padre');
+ if ($clase == 'gruposecciones' or $clase == 'servicio') {
+ $fPadre =& $this->addElement('text', $padre, 'Padre');
$fNombre =& $this->addElement('text', 'nombre', 'Nombre');
// Validación.
$this->addRule('nombre','Debe ingresar un nombre.', 'required');
- $this->addRule($padre, 'Debe ingresar un servicio padre.', 'required');
- $this->addRule($padre, 'El servicio padre debe ser un número natural.',
+ $this->addRule($padre, 'Debe ingresar un padre.', 'required');
+ $this->addRule($padre, 'El padre debe ser un número natural.',
'regex', '/^\d*$/');
// Carga datos.
if ($accion & (BAJA | MODIFICACION)) {
<?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$
//
-require_once 'HTML/Image.php';
+// Requires generales. {{{
+require_once 'MECON/HTML/Arbol/ArbolDB.php';
+require_once 'AIForm.php';
+// }}}
-$MARCO->setEspacios(false);
-$MARCO->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet'));
+// Averiguo si estoy administrando algún tipo de objeto. {{{
+$tipo = null;
+if (@$_SERVER['PATH_INFO']) {
+ $tmp = ltrim($_SERVER['PATH_INFO'], '/');
+ if ($tmp == 'grupo') {
+ $tipo = $tmp;
+ $clase = 'GrupoSecciones';
+ $tabla = 'grupo_secciones';
+ } elseif ($tmp == 'servicio') {
+ $tipo = $tmp;
+ $clase = 'Servicio';
+ $tabla = $tipo;
+ } elseif ($tmp == 'sistema') {
+ $tipo = $tmp;
+ $clase = 'Sistema';
+ $tabla = $tipo;
+ } else { // No hay un objeto válido para administrar.
+ header('Location: '.$_SERVER['SCRIPT_NAME']);
+ }
+}
+// }}}
+
+// Si tiene una clase, estamos editando algo. {{{
+if ($tipo) {
+ // Creo el árbol con los servicios. {{{
+ $dbdata = array(
+ 'db' => &$DB,
+ 'tabla' => $tabla,
+ 'id' => $tipo,
+ 'nombre' => $tipo,
+ 'prepend_link' => $tipo . '?accion='.MODIFICACION.'&id='
+ );
+ if ($tipo == 'grupo' or $tipo == 'servicio') {
+ $dbdata['nombre'] = 'nombre';
+ $dbdata['id_padre'] = $tipo . '_padre';
+ }
+ $arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif');
+ // }}}
+
+ // Creo un objeto y seteo su id. {{{
+ require_once "$clase.php";
+ $obj = new $clase;
+ $obj->$tipo = @$_REQUEST['id'];
+ // }}}
+
+ // Creo formulario. {{{
+ $form =& new AIForm;
+ // }}}
+
+ // Verifico que la acción 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;
+ $obj->$tipo = $form->getSubmitValue($tipo);
+ break;
+ case 'borrar_cancelar':
+ // Indico que viene de un formulario cancelado.
+ $cancelado = true;
+ case 'aceptar_modificar':
+ $accion = MODIFICACION;
+ $obj->$tipo = $form->getSubmitValue($tipo);
+ break;
+ }
+ // }}}
+
+ // Inicio el formulario, cargando datos de ser necesario. {{{
+ if ($accion & (BAJA | MODIFICACION)) {
+ $err =& $obj->cargar($DB);
+ if (PEAR::isError($err)) {
+ die($err->getMessage());
+ }
+ $form->iniciar($obj, $accion);
+ } else {
+ $accion = ALTA;
+ $form->iniciar($obj);
+ }
+ // }}}
+
+ // 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($obj);
+ $err =& $obj->guardar($DB);
+ if (PEAR::isError($err)) {
+ die($err->getMessage());
+ }
+ header(sprintf('Location: %s?accion=%d&id=%d',
+ $tipo, MODIFICACION, $obj->$tipo));
+ exit;
+ break;
+ // }}}
+ case BAJA: // {{{
+ if (!@$a_confirmar) {
+ $form->llenarObjeto($obj);
+ $err =& $obj->borrar($DB);
+ if (PEAR::isError($err)) {
+ die($err->getMessage());
+ }
+ header("Location: $tipo");
+ exit;
+ }
+ break;
+ // }}}
+ case MODIFICACION: // {{{
+ if (!@$cancelado) {
+ $form->llenarObjeto($obj);
+ $err =& $obj->guardar($DB);
+ if (PEAR::isError($err)) {
+ die($err->getMessage());
+ }
+ header(sprintf('Location: %s?accion=%d&id=%d',
+ $tipo, MODIFICACION, $obj->$tipo));
+ exit;
+ }
+ break;
+ // }}}
+ }
+ }
+ // }}}
+
+ // Agrego al cuerpo de la página las cosas que voy a dibujar. {{{
+ $LAYOUT->setCellContents(0, 0, $arbol);
+ $LAYOUT->setCellContents(0, 2, $form);
+ $MARCO->addBody($LAYOUT);
+ // }}}
+// }}}
+
+// No se está editando nada, agrego al cuerpo de la página la pantalla de entrada {{{
+} else {
+ require_once 'HTML/Image.php';
+ $MARCO->setEspacios(false);
+ $MARCO->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet'));
+}
+// }}}
+
+// Dibujo. {{{
$MARCO->display();
+// }}}
?>
<?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$
//
-$MARCO->addBody("SISTEMAS");
+// Requires. {{{
+require_once 'MECON/HTML/Arbol/ArbolDB.php';
+require_once 'AIForm.php';
+require_once 'Sistema.php';
+// }}}
+
+// Creo el árbol con los servicios. {{{
+$dbdata = array(
+ 'db' => &$DB,
+ 'tabla' => 'sistema',
+ 'id' => 'sistema',
+ 'nombre' => 'sistema',
+ 'prepend_link' => 'sistema?accion='.MODIFICACION.'&id='
+);
+$arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif');
+// }}}
+
+// Creo un servicio y seteo su id. {{{
+$sistema = new Sistema;
+$sistema->sistema = @$_REQUEST['id'];
+// }}}
+
+// 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;
+ $sistema->sistema = $form->getSubmitValue('sistema');
+ break;
+ case 'borrar_cancelar':
+ // Indico que viene de un formulario cancelado.
+ $cancelado = true;
+ case 'aceptar_modificar':
+ $accion = MODIFICACION;
+ $sistema->sistema = $form->getSubmitValue('sistema');
+ break;
+}
+// }}}
+
+// Inicio el formulario, cargando datos de ser necesario. {{{
+if ($accion & (BAJA | MODIFICACION)) {
+ $err =& $sistema->cargar($DB);
+ if (PEAR::isError($err)) {
+ die($err->getMessage());
+ }
+ $form->iniciar($sistema, $accion);
+} else {
+ $accion = ALTA;
+ $form->iniciar($sistema);
+}
+// }}}
+
+// 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($sistema);
+ $err =& $sistema->guardar($DB);
+ if (PEAR::isError($err)) {
+ die($err->getMessage());
+ }
+ header(sprintf('Location: sistema?accion=%d&id=%d',
+ MODIFICACION, $sistema->sistema));
+ exit;
+ break;
+ case BAJA:
+ if (!@$a_confirmar) {
+ $form->llenarObjeto($sistema);
+ $err =& $sistema->borrar($DB);
+ if (PEAR::isError($err)) {
+ die($err->getMessage());
+ }
+ header('Location: sistema');
+ exit;
+ }
+ break;
+ case MODIFICACION:
+ if (!@$cancelado) {
+ $form->llenarObjeto($sistema);
+ $err =& $sistema->guardar($DB);
+ if (PEAR::isError($err)) {
+ die($err->getMessage());
+ }
+ header(sprintf('Location: sistema?accion=%d&id=%d',
+ MODIFICACION, $sistema->sistema));
+ exit;
+ }
+ break;
+ }
+}
+$body =& $form;
+// }}}
+
+// Dibujo. {{{
+$LAYOUT->setCellContents(0, 0, $arbol);
+$LAYOUT->setCellContents(0, 2, $body);
+$MARCO->addBody($LAYOUT);
$MARCO->display();
+// }}}
?>