- Se crea una nueva clase HTML_Error (hay que moverla a MECONlib).
- Se arregla el alta de sistemas.
- Se hace más amigable para el usuario el manejo de errores.
- Se implementa un primer intento de lista de íconos en AI_Form.
- Se actualiza el diagrama UML.
</UML:Operation>
<UML:Operation stereotype="" package="" xmi.id="458" type="PEAR_Error" abstract="0" documentation="" name="guardar" static="0" scope="200" >
<UML:Parameter stereotype="" package="" xmi.id="1" value="" type="DB" abstract="0" documentation="DB donde guardar." name="db" static="0" scope="200" />
+ <UML:Parameter stereotype="" package="" xmi.id="2" value="false" type="bool" abstract="0" documentation="Si es true, se fuerza a guardar el Servicio como nuevo." name="nuevo" static="0" scope="200" />
</UML:Operation>
<UML:Operation stereotype="" package="" xmi.id="456" type="PEAR_Error" abstract="0" documentation="" name="borrar" static="0" scope="200" >
<UML:Parameter stereotype="" package="" xmi.id="1" value="" type="DB" abstract="0" documentation="DB de donde borrar." name="db" static="0" scope="200" />
</UML:Operation>
<UML:Operation stereotype="" package="" xmi.id="459" type="PEAR_Error" abstract="0" documentation="" name="guardar" static="0" scope="200" >
<UML:Parameter stereotype="" package="" xmi.id="1" value="" type="DB" abstract="0" documentation="DB donde guardar." name="db" static="0" scope="200" />
+ <UML:Parameter stereotype="" package="" xmi.id="2" value="false" type="bool" abstract="0" documentation="Si es true, se fuerza a guardar el servicio como nuevo." name="nuevo" static="0" scope="200" />
</UML:Operation>
<UML:Operation stereotype="" package="" xmi.id="461" type="PEAR_Error" abstract="0" documentation="" name="borrar" static="0" scope="200" >
<UML:Parameter stereotype="" package="" xmi.id="1" value="" type="DB" abstract="0" documentation="DB de donde borrar." name="db" static="0" scope="200" />
</UML:Operation>
<UML:Operation stereotype="" package="" xmi.id="497" type="PEAR_Error" abstract="0" documentation="" name="guardar" static="0" scope="200" >
<UML:Parameter stereotype="" package="" xmi.id="1" value="" type="DB" abstract="0" documentation="DB donde guardar." name="db" static="0" scope="200" />
+ <UML:Parameter stereotype="" package="" xmi.id="2" value="false" type="bool" abstract="0" documentation="Si es true, se fuerza a guardar el Grupo de Secciones como nuevo." name="nuevo" static="0" scope="200" />
</UML:Operation>
<UML:Operation stereotype="" package="" xmi.id="498" type="PEAR_Error" abstract="0" documentation="" name="borrar" static="0" scope="200" >
<UML:Parameter stereotype="" package="" xmi.id="1" value="" type="DB" abstract="0" documentation="DB de donde borrar." name="db" static="0" scope="200" />
<UML:Class stereotype="" package="" xmi.id="507" abstract="0" documentation="Formularios para el Administrador de Intranet." name="AI_Form" static="0" scope="200" >
<UML:Operation stereotype="" package="" xmi.id="509" type="void" abstract="0" documentation="Construye un formulario para el objecto especificado." name="iniciar" static="0" scope="200" >
<UML:Parameter stereotype="" package="" xmi.id="4" value="" type="&object" abstract="0" documentation="Objeto con el cual rellenar el formulario. Puede ser GrupoSecciones, Servicio o Sistema." name="obj" static="0" scope="200" />
- <UML:Parameter stereotype="" package="" xmi.id="5" value="ALTA" type="int" abstract="0" documentation="Accion que realizará el formulario a crear. Puede ser ALTA, BAJA o MODIFICACION." name="accion" static="0" scope="200" />
+ <UML:Parameter stereotype="" package="" xmi.id="5" value="AI_ALTA" type="int" abstract="0" documentation="Accion que realizará el formulario a crear. Puede ser AI_ALTA, AI_BAJA o AI_MODIFICACION." name="accion" static="0" scope="200" />
</UML:Operation>
<UML:Operation stereotype="" package="" xmi.id="510" type="void" abstract="0" documentation="Llena un objeto con los datos del formulario." name="llenarObjeto" static="0" scope="200" >
<UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&mixed" abstract="0" documentation="Objeto a llenar con los datos del formulario. Puede ser GrupoSecciones, Servicio o Sistema." name="obj" static="0" scope="200" />
<diagrams>
<diagram snapgrid="0" showattsig="1" fillcolor="#ffffc0" showgrid="0" showopsig="1" usefillcolor="1" snapx="10" snapy="10" showatts="1" xmi.id="412" documentation="" type="402" showops="1" showpackage="0" name="Clases" localid="30000" showstereotype="0" showscope="1" font="Helvetica,8,-1,5,50,0,0,0,0,0" linecolor="#ff0000" >
<widgets>
- <UML:ConceptWidget usesdiagramfillcolour="0" width="199" showattsigs="601" usesdiagramusefillcolour="0" x="270" linecolour="#ff0000" y="20" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="238" usefillcolor="1" showattributes="1" xmi.id="413" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
- <UML:ConceptWidget usesdiagramfillcolour="0" width="201" showattsigs="601" usesdiagramusefillcolour="0" x="30" linecolour="#ff0000" y="250" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="154" usefillcolor="1" showattributes="1" xmi.id="416" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
- <UML:ConceptWidget usesdiagramfillcolour="0" width="262" showattsigs="601" usesdiagramusefillcolour="0" x="243" linecolour="#ff0000" y="347" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="35" usefillcolor="1" showattributes="1" xmi.id="469" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
- <UML:ConceptWidget usesdiagramfillcolour="0" width="73" showattsigs="601" usesdiagramusefillcolour="0" x="338" linecolour="#ff0000" y="273" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="24" usefillcolor="1" showattributes="0" xmi.id="471" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
- <UML:ConceptWidget usesdiagramfillcolour="0" width="228" showattsigs="601" usesdiagramusefillcolour="0" x="30" linecolour="#ff0000" y="20" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="210" usefillcolor="1" showattributes="1" xmi.id="486" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
- <UML:ConceptWidget usesdiagramfillcolour="0" width="192" showattsigs="601" usesdiagramusefillcolour="0" x="309" linecolour="#ff0000" y="480" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="49" usefillcolor="1" showattributes="1" xmi.id="503" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
- <UML:ConceptWidget usesdiagramfillcolour="0" width="46" showattsigs="601" usesdiagramusefillcolour="0" x="382" linecolour="#ff0000" y="417" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="24" usefillcolor="1" showattributes="0" xmi.id="504" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
- <UML:ConceptWidget usesdiagramfillcolour="0" width="254" showattsigs="601" usesdiagramusefillcolour="0" x="29" linecolour="#ff0000" y="481" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="49" usefillcolor="1" showattributes="1" xmi.id="507" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
- <UML:ConceptWidget usesdiagramfillcolour="0" width="146" showattsigs="601" usesdiagramusefillcolour="0" x="83" linecolour="#ff0000" y="416" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="24" usefillcolor="1" showattributes="0" xmi.id="508" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
+ <UML:ConceptWidget usesdiagramfillcolour="0" width="277" showattsigs="601" usesdiagramusefillcolour="0" x="300" linecolour="#ff0000" y="11" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="238" usefillcolor="1" showattributes="1" xmi.id="413" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
+ <UML:ConceptWidget usesdiagramfillcolour="0" width="277" showattsigs="601" usesdiagramusefillcolour="0" x="12" linecolour="#ff0000" y="241" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="154" usefillcolor="1" showattributes="1" xmi.id="416" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
+ <UML:ConceptWidget usesdiagramfillcolour="0" width="262" showattsigs="601" usesdiagramusefillcolour="0" x="302" linecolour="#ff0000" y="338" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="35" usefillcolor="1" showattributes="1" xmi.id="469" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
+ <UML:ConceptWidget usesdiagramfillcolour="0" width="73" showattsigs="601" usesdiagramusefillcolour="0" x="397" linecolour="#ff0000" y="264" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="24" usefillcolor="1" showattributes="0" xmi.id="471" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
+ <UML:ConceptWidget usesdiagramfillcolour="0" width="277" showattsigs="601" usesdiagramusefillcolour="0" x="12" linecolour="#ff0000" y="11" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="210" usefillcolor="1" showattributes="1" xmi.id="486" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
+ <UML:ConceptWidget usesdiagramfillcolour="0" width="192" showattsigs="601" usesdiagramusefillcolour="0" x="345" linecolour="#ff0000" y="477" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="49" usefillcolor="1" showattributes="1" xmi.id="503" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
+ <UML:ConceptWidget usesdiagramfillcolour="0" width="46" showattsigs="601" usesdiagramusefillcolour="0" x="418" linecolour="#ff0000" y="414" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="24" usefillcolor="1" showattributes="0" xmi.id="504" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
+ <UML:ConceptWidget usesdiagramfillcolour="0" width="271" showattsigs="601" usesdiagramusefillcolour="0" x="24" linecolour="#ff0000" y="477" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="49" usefillcolor="1" showattributes="1" xmi.id="507" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
+ <UML:ConceptWidget usesdiagramfillcolour="0" width="146" showattsigs="601" usesdiagramusefillcolour="0" x="86" linecolour="#ff0000" y="410" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#dcdcdc" height="24" usefillcolor="1" showattributes="0" xmi.id="508" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
</widgets>
<messages/>
<associations>
<UML:AssocWidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="471" widgetaid="469" documentation="" type="500" >
<linepath>
- <startpoint startx="374" starty="347" />
- <endpoint endx="374" endy="297" />
+ <startpoint startx="433" starty="338" />
+ <endpoint endx="433" endy="288" />
</linepath>
</UML:AssocWidget>
<UML:AssocWidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="508" widgetaid="507" documentation="" type="500" >
<linepath>
- <startpoint startx="156" starty="481" />
- <endpoint endx="156" endy="440" />
+ <startpoint startx="159" starty="477" />
+ <endpoint endx="159" endy="434" />
</linepath>
</UML:AssocWidget>
<UML:AssocWidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="504" widgetaid="503" documentation="" type="500" >
<linepath>
- <startpoint startx="405" starty="480" />
- <endpoint endx="405" endy="441" />
+ <startpoint startx="441" starty="477" />
+ <endpoint endx="441" endy="438" />
</linepath>
</UML:AssocWidget>
</associations>
<listitem open="0" type="815" id="510" label="llenarObjeto" />
</listitem>
<listitem open="0" type="813" id="486" label="AI_GrupoSecciones" >
+ <listitem open="0" type="815" id="495" label="AI_GrupoSecciones" />
<listitem open="0" type="814" id="492" label="antiguedad" />
<listitem open="0" type="815" id="498" label="borrar" />
<listitem open="0" type="815" id="496" label="cargar" />
<listitem open="0" type="815" id="500" label="__clone" />
<listitem open="0" type="814" id="487" label="grupo" />
<listitem open="0" type="814" id="489" label="grupo_padre" />
- <listitem open="0" type="815" id="495" label="AI_GrupoSecciones" />
<listitem open="0" type="815" id="497" label="guardar" />
<listitem open="0" type="814" id="494" label="habilitado" />
<listitem open="0" type="814" id="490" label="hijos" />
<listitem open="0" type="814" id="491" label="secciones" />
</listitem>
<listitem open="0" type="813" id="413" label="AI_Servicio" >
+ <listitem open="0" type="815" id="465" label="AI_Servicio" />
<listitem open="0" type="815" id="456" label="borrar" />
<listitem open="0" type="815" id="457" label="cargar" />
<listitem open="0" type="815" id="463" label="cargarHijos" />
<listitem open="0" type="814" id="434" label="necesita_logueo" />
<listitem open="0" type="814" id="429" label="nombre" />
<listitem open="0" type="814" id="428" label="servicio" />
- <listitem open="0" type="815" id="465" label="AI_Servicio" />
<listitem open="0" type="814" id="452" label="servicio_padre" />
</listitem>
<listitem open="0" type="813" id="416" label="AI_Sistema" >
+ <listitem open="0" type="815" id="466" label="AI_Sistema" />
<listitem open="0" type="815" id="461" label="borrar" />
<listitem open="0" type="815" id="460" label="cargar" />
<listitem open="0" type="815" id="502" label="__clone" />
<listitem open="0" type="814" id="439" label="link" />
<listitem open="0" type="814" id="440" label="link_ayuda" />
<listitem open="0" type="814" id="437" label="sistema" />
- <listitem open="0" type="815" id="466" label="AI_Sistema" />
</listitem>
</listitem>
<listitem open="0" type="807" id="412" label="Clases" />
<listitem open="0" type="803" id="-1" label="Externo" >
<listitem open="1" type="813" id="504" label="DB" />
- <listitem open="0" type="813" id="471" label="PEAR_Error" />
<listitem open="1" type="813" id="508" label="MECON_HTML_QuickForm" />
+ <listitem open="0" type="813" id="471" label="PEAR_Error" />
</listitem>
</listitem>
<listitem open="1" type="802" id="-1" label="Use Case View" />
} // -X2C Class :AI_DB
-?>
+?>
\ No newline at end of file
* Construye un formulario para el objecto especificado.
*
* @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 AI_ALTA, AI_BAJA o AI_MODIF.
+ * @param int $accion Accion que realizar?el formulario a crear. Puede ser AI_ALTA, AI_BAJA o AI_MODIFICACION.
*
* @return void
* @access public
if ($tipo == 'servicio' or $tipo == 'sistema') {
$fLink =& $this->addElement('text', 'link', 'Enlace');
$fLinkAyuda =& $this->addElement('text', 'link_ayuda', 'Enlace de la ayuda');
- $fIcono =& $this->addElement('text', 'icono', 'Ícono');
+ //$fIcono =& $this->addElement('text', 'icono', 'Ícono');
+ $fIcono =& $this->addElement('select', 'icono', 'Ícono',
+ listaImagenes('/var/www/sistemas/ai/sistema/www/images', $tipo . '_', '\.gif'));
// Carga datos.
if ($accion & (AI_BAJA | AI_MODIF)) {
$fLink->setValue($obj->link);
} // -X2C Class :AI_Form
+function listaImagenes($dir = '.', $prepend = '', $append = '') {
+ $lista = array('' => '--');
+ $d = dir($dir);
+ while (($file = $d->read()) !== false) {
+ if (preg_match("/$prepend(.*)$append/", $file, $m)) {
+ $nombre = ucwords(join(' ', preg_split('/_/', $m[1])));
+ $lista[$file] = $nombre;
+ }
+ }
+ return $lista;
+}
+
?>
// +X2C Operation 497
/**
* @param DB $db DB donde guardar.
+ * @param bool $nuevo Si es true, se fuerza a guardar el Grupo de Secciones como nuevo.
*
* @return PEAR_Error
* @access public
*/
- function guardar($db) // ~X2C
+ function guardar($db, $nuevo = false) // ~X2C
{
$grupo = intval($this->grupo);
$where = '';
'antiguedad' => intval($this->antiguedad),
'mostrar_hijos' => $this->mostrar_hijos ? 1 : 0,
);
- if ($grupo) {
+ if ($grupo and !$nuevo) {
$accion = DB_AUTOQUERY_UPDATE;
$where = "grupo = $grupo";
} else {
$accion = DB_AUTOQUERY_INSERT;
- $grupo = $db->nextId('grupo_secciones');
- if (DB::isError($grupo)) {
- return $grupo;
+ // Si no tiene ID, le asigno uno nuevo.
+ if (!$grupo) {
+ $grupo = $db->nextId('grupo_secciones');
+ if (DB::isError($grupo)) {
+ return $grupo;
+ }
+ $this->grupo = $grupo;
}
- // Asigno el nuevo id de grupo.
- $this->grupo = $grupo;
$datos['grupo'] = $grupo;
}
$res = $db->autoExecute('grupo_secciones', $datos, $accion, $where);
} // -X2C Class :AI_GrupoSecciones
-?>
\ No newline at end of file
+?>
// +X2C Operation 458
/**
* @param DB $db DB donde guardar.
+ * @param bool $nuevo Si es true, se fuerza a guardar el Servicio como nuevo.
*
* @return PEAR_Error
* @access public
*/
- function guardar($db) // ~X2C
+ function guardar($db, $nuevo = false) // ~X2C
{
$servicio = intval($this->servicio);
$where = '';
'necesita_logueo' => $this->necesita_logueo ? 1 : 0,
'habilitado' => $this->habilitado ? 1 : 0,
);
- if ($servicio) {
+ if ($servicio and !$nuevo) {
$accion = DB_AUTOQUERY_UPDATE;
$where = "servicio = $servicio";
} else {
- $accion = DB_AUTOQUERY_INSERT;
- $servicio = $db->nextId('servicio');
- if (DB::isError($servicio)) {
- return $servicio;
+ $accion = DB_AUTOQUERY_INSERT;
+ // Si no tiene ID, le asigno uno nuevo.
+ if (!$servicio) {
+ $servicio = $db->nextId('servicio');
+ if (DB::isError($servicio)) {
+ return $servicio;
+ }
+ $this->servicio = $servicio;
}
- // Asigno el nuevo id de servicio.
- $this->servicio = $servicio;
$datos['servicio'] = $servicio;
}
$res = $db->autoExecute('servicio', $datos, $accion, $where);
// +X2C Operation 459
/**
* @param DB $db DB donde guardar.
+ * @param bool $nuevo Si es true, se fuerza a guardar el servicio como nuevo.
*
* @return PEAR_Error
* @access public
*/
- function guardar($db) // ~X2C
+ function guardar($db, $nuevo = false) // ~X2C
{
$sistema = intval($this->sistema);
$where = '';
'link_ayuda' => $this->link_ayuda,
'habilitado' => $this->habilitado ? 1 : 0,
);
- // FIXME - buscar otra forma de distinguir entre INSERT y UPDATE.
- if ($sistema) {
+ if ($sistema and !$nuevo) {
$accion = DB_AUTOQUERY_UPDATE;
$where = "sistema = $sistema";
} else {
- $accion = DB_AUTOQUERY_INSERT;
- $sistema = $db->nextId('sistema');
- if (DB::isError($sistema)) {
- return $sistema;
+ $accion = DB_AUTOQUERY_INSERT;
+ // Si no tiene ID, le asigno uno nuevo.
+ if (!$sistema) {
+ $sistema = $db->nextId('sistema');
+ if (DB::isError($sistema)) {
+ return $sistema;
+ }
+ $this->sistema = $sistema;
}
- // Asigno el nuevo id de sistema.
- $this->sistema = $sistema;
$datos['sistema'] = $sistema;
}
$res = $db->autoExecute('sistema', $datos, $accion, $where);
// Debug. {{{
require_once 'PEAR.php';
-PEAR::setErrorHandling(PEAR_ERROR_TRIGGER);
+#PEAR::setErrorHandling(PEAR_ERROR_TRIGGER);
+PEAR::setErrorHandling(PEAR_ERROR_RETURN);
+// }}}
+
+// Clase de error HTML (para mostrar errores) TODO - ver si se pasa a meconlib {{{
+class HTML_Error {
+ var $msg = '';
+ function HTML_Error($msg) {
+ $this->msg = $msg;
+ }
+ function toHtml() {
+ return '<DIV style="font-size: 11px; text-align: center; color: red">' . $this->msg . '</DIV>';
+ }
+}
// }}}
// Creo el Marco. {{{
$marco = new Marco('../conf/Marco.php');
// }}}
-// Agrego una barra al costado con el listado de objetos (XXX - va a ir en Marco). {{{
-require_once 'HTML/Table.php';
-$layout = new HTML_Table(
- array(
- 'width' => '100%',
- 'align' => 'center',
- 'valign' => 'top',
- 'border' => 0,
- 'cellspacing' => 0,
- 'cellpadding' => 0,
- )
-);
-$layout->setAutoGrow(true);
-$layout->setCellAttributes(0, 0, array('width' => '1'));
-$layout->setCellAttributes(0, 1, array('width' => '10'));
-$layout->setCellContents(0, 1, ' ');
-// }}}
-
-// Averiguo si estoy administrando algún tipo de objeto. {{{
+// Averiguo si estoy administrando algún tipo de objeto. XXX - desafear {{{
$tipo = null;
if (@$_SERVER['PATH_INFO']) {
$tmp = ltrim($_SERVER['PATH_INFO'], '/');
$clase = "AI_GrupoSecciones";
$require = 'AI/GrupoSecciones.php';
$tabla = 'grupo_secciones';
+ $nombre = "grupo de secciones";
} elseif ($tmp == 'servicio') {
$tipo = $tmp;
$clase = 'AI_Servicio';
$require = 'AI/Servicio.php';
$tabla = $tipo;
+ $nombre = $tipo;
} elseif ($tmp == 'sistema') {
$tipo = $tmp;
$clase = 'AI_Sistema';
$require = 'AI/Sistema.php';
$tabla = $tipo;
+ $nombre = $tipo;
} else { // No hay un objeto válido para administrar.
header('Location: '.$_SERVER['SCRIPT_NAME']);
}
}
// }}}
-// Si tiene un tipo, estamos editando algo. {{{
+// Si tiene un tipo, estamos administrando algun objeto. {{{
if ($tipo) {
// Creo formulario. {{{
$obj->$tipo = @$_REQUEST['id'];
// }}}
- // Verifico que la acción sea válida. {{{
+ // Verifico que la acción sea válida y si no lo es hago que sea un alta. {{{
switch(@$_REQUEST['accion']) {
case AI_BAJA:
case AI_MODIF:
}
// }}}
- // Verifico si ya se envio el formulario. {{{
+ // Modifico la acción si ya se envió el formulario. {{{
$botones = $form->getSubmitValue('botones');
if ($boton = @join('', array_keys($botones))) {
$boton = $boton . '_' . strtolower($botones[$boton]);
}
// }}}
- // Freezo de ser necesario. {{{
+ // Freezo el formulario si se está confirmando. {{{
if (@$a_confirmar) {
$form->freeze();
}
// }}}
- // Me fijo si se cargo un formulalrio y si es válido hago el ABM. {{{
+ // Si los datos del formulario son válidos, hago el ABM. {{{
if ($form->validate()) {
-
switch ($accion) {
case AI_ALTA: // {{{
$form->llenarObjeto($obj);
- $err =& $obj->guardar($db);
+ $err =& $obj->guardar($db, true);
if (PEAR::isError($err)) {
- die($err->getMessage());
+ if (DB::isError($err) and $err->getCode() == DB_ERROR_ALREADY_EXISTS) {
+ $error = new HTML_Error("Ya existe un $nombre con el identificador "
+ . $obj->$tipo);
+ } else {
+ $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
+ }
+ $marco->addBody($error);
+ } else {
+ header(sprintf('Location: %s?accion=%d&id=%d',
+ $tipo, AI_MODIF, $obj->$tipo));
+ exit;
}
- header(sprintf('Location: %s?accion=%d&id=%d',
- $tipo, AI_MODIF, $obj->$tipo));
- exit;
break;
- // }}}
+ // }}}
case AI_BAJA: // {{{
if (!@$a_confirmar) {
$form->llenarObjeto($obj);
$err =& $obj->borrar($db);
if (PEAR::isError($err)) {
- die($err->getMessage());
+ $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
+ $marco->addBody($error);
+ } else {
+ header("Location: $tipo");
+ exit;
}
- header("Location: $tipo");
- exit;
}
break;
- // }}}
+ // }}}
case AI_MODIF: // {{{
if (!@$cancelado) {
$form->llenarObjeto($obj);
$err =& $obj->guardar($db);
if (PEAR::isError($err)) {
- die($err->getMessage());
+ $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
+ $marco->addBody($error);
+ } else {
+ header(sprintf('Location: %s?accion=%d&id=%d',
+ $tipo, AI_MODIF, $obj->$tipo));
+ exit;
}
- header(sprintf('Location: %s?accion=%d&id=%d',
- $tipo, AI_MODIF, $obj->$tipo));
- exit;
}
break;
- // }}}
+ // }}}
}
}
// }}}
- // Creo el árbol con el tipo de objeto que manejo. {{{
+ // Agrego el menu y el formulario a la página. {{{
+
+ // Creo el árbol con el tipo de objeto que manejo y lo agrego a la página. {{{
require_once 'MECON/HTML/Arbol/ArbolDB.php';
$dbdata = array(
'db' => &$db,
$dbdata['id_padre'] = $tipo . '_padre';
}
$arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif');
+ $marco->addMenuVertical($arbol);
// }}}
- // 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);
+ // Agrego el formulario a la página. {{{
+ $marco->addBody($form);
// }}}
+
+ // }}}
+
// }}}
-// No se está editando nada, agrego al cuerpo de la página la pantalla de entrada {{{
+// No se está editando nada, agrego la imágen de bienvenida a la página. {{{
} else {
require_once 'HTML/Image.php';
$marco->setEspacios(false);
}
// }}}
-// Dibujo. {{{
+// Muestro la página. {{{
$marco->display();
// }}}