]> git.llucax.com Git - mecon/ai.git/commitdiff
- Se usa el nuevo método de ArbolDB para indicar qué elemento se está editando.
authorLeandro Lucarella <llucax@gmail.com>
Fri, 25 Jul 2003 21:35:09 +0000 (21:35 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 25 Jul 2003 21:35:09 +0000 (21:35 +0000)
- Se separan librerias locales de generales.

12 files changed:
Makefile
TODO
doc/Doxyfile
doc/local_lib/uml.xmi [new file with mode: 0644]
doc/local_lib/xmi2code.config [new file with mode: 0644]
doc/uml.xmi
lib/AI/Error.php
lib/AI/Sistema.php
sistema/local_lib/AI/DB.php [moved from lib/AI/DB.php with 86% similarity]
sistema/local_lib/AI/Form.php [moved from lib/AI/Form.php with 86% similarity]
sistema/local_lib/general.php [new file with mode: 0644]
sistema/www/index.php

index 2279eedb5613a383673ce410343798f858836229..c61d490704dd03709e6029c99a944de03c948794 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -5,9 +5,11 @@
 
 code:
        @cd doc && xmi2code
+       @cd doc/local_lib && xmi2code
 
 code-clean:
        @find lib -name '*.bak' | xargs rm -fv
+       @find sistema/local_lib -name '*.bak' | xargs rm -fv
 
 clean-readme:
        find -name README | xargs svn rm
diff --git a/TODO b/TODO
index a7fe8c3626e3ee4cb506c4fa5b87fd8171b7ec7b..1cefc3d3c117e1030b88d4b4721ac15cdc54977e 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,10 +1,8 @@
 $Id$
 
-- Mover listarImagenes() y arbol2array() de Form.php a un lugar más apropiado y
-  con un nombre más apropiado.
 - Ordenar todo mejor (index.php no da más).
-- No crear una DB on-the-fly en Form.php.
 - Agregar links para agregar un elemento nuevo sin tener que tocar en el
   ícono de la sección que es poco intuitivo.
 - Ver que se hace con sistemas borrados de SAMURAI con baja lógica.
 - Resolver tema de JOIN con SAMURAI.
+- Hacer que filtre los no habilitados para gonzalo.
index 26760fa42ce005107aad9a7af25438ace59894ae..1eecf536872e6501daae6a95e78da31f12ceb6f3 100644 (file)
@@ -83,7 +83,7 @@ WARN_LOGFILE           = doxygen.warnings
 #---------------------------------------------------------------------------
 # configuration options related to the input files
 #---------------------------------------------------------------------------
-INPUT                  = ../sistema/local_lib
+INPUT                  = ../sistema/local_lib ../lib
 FILE_PATTERNS          = *.php
 RECURSIVE              = YES
 EXCLUDE                = 
diff --git a/doc/local_lib/uml.xmi b/doc/local_lib/uml.xmi
new file mode 100644 (file)
index 0000000..142832e
--- /dev/null
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XMI xmlns:UML="org.omg/standards/UML" verified="false" timestamp="" xmi.version="1.2" >
+ <XMI.header>
+  <XMI.documentation>
+   <XMI.exporter>umbrello uml modeller http://uml.sf.net</XMI.exporter>
+   <XMI.exporterVersion>1.1</XMI.exporterVersion>
+  </XMI.documentation>
+  <XMI.model xmi.name="uml" href="/home/luca/public_html/ai/doc/local_lib/uml.xmi" />
+  <XMI.metamodel xmi.name="UML" href="UML.xml" xmi.version="1.3" />
+ </XMI.header>
+ <XMI.content>
+  <docsettings viewid="412" documentation="" uniqueid="533" />
+  <umlobjects>
+   <UML:Class stereotype="" package="AI_Local" xmi.id="503" abstract="0" documentation="Base de datos del Administrador de Intranet." name="AI_DB" static="0" scope="200" >
+    <UML:Operation stereotype="" package="" xmi.id="506" type="&amp;mixed" abstract="0" documentation="" name="connect" static="0" scope="200" >
+     <UML:Parameter stereotype="" package="" xmi.id="1" value="''" type="string" abstract="0" documentation="Archivo de configuración de la base de datos. Si no se especifica se toma uno por defecto del directorio de configuración." name="confFile" static="0" scope="200" />
+    </UML:Operation>
+   </UML:Class>
+   <UML:Class stereotype="" package="" xmi.id="504" abstract="0" documentation="x2c:extern" name="DB" static="0" scope="200" />
+   <UML:Class stereotype="" package="AI_Local" 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="&amp;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="" 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:Parameter stereotype="" package="" xmi.id="6" value="" type="HTML_Arbol" abstract="0" documentation="Árbol de donde sacar los padres." name="arbol" static="0" scope="200" />
+     <UML:Parameter stereotype="" package="" xmi.id="7" value="" type="DB" abstract="0" documentation="Base de datos." name="db" 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="&amp;mixed" abstract="0" documentation="Objeto a llenar con los datos del formulario. Puede ser GrupoSecciones, Servicio o Sistema." name="obj" static="0" scope="200" />
+    </UML:Operation>
+   </UML:Class>
+   <UML:Class stereotype="" package="" xmi.id="508" abstract="0" documentation="x2c:extern" name="MECON_HTML_QuickForm" static="0" scope="200" />
+   <UML:Class stereotype="" package="AI_Local" xmi.id="532" abstract="0" documentation="Funciones generales.
+x2c:noclass" name="general" static="0" scope="200" >
+    <UML:Operation stereotype="" package="" xmi.id="533" type="array" abstract="0" documentation="Lista archivos devolviendo un array apropiado para un SELECT." name="listarArchivos" static="0" scope="200" >
+     <UML:Parameter stereotype="" package="" xmi.id="1" value="'.'" type="string" abstract="0" documentation="Directorio donde estan las imagenes." name="dir" static="0" scope="200" />
+     <UML:Parameter stereotype="" package="" xmi.id="2" value="''" type="string" abstract="0" documentation="Prefijo del archivo." name="prepend" static="0" scope="200" />
+     <UML:Parameter stereotype="" package="" xmi.id="3" value="''" type="string" abstract="0" documentation="Postfijo del archivo." name="append" static="0" scope="200" />
+    </UML:Operation>
+   </UML:Class>
+  </umlobjects>
+  <diagrams>
+   <diagram snapgrid="0" showattsig="1" fillcolor="#ffffc0" showgrid="1" 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="210" showattsigs="601" usesdiagramusefillcolour="0" x="23" linecolour="#ff0000" y="100" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="35" 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="105" linecolour="#ff0000" y="30" 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="358" showattsigs="601" usesdiagramusefillcolour="0" x="250" linecolour="#ff0000" y="100" 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="356" linecolour="#ff0000" y="30" 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="410" showattsigs="601" usesdiagramusefillcolour="0" x="81" linecolour="#ff0000" y="183" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="35" usefillcolor="1" showattributes="1" xmi.id="532" showoperations="1" 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="508" widgetaid="507" documentation="" type="500" >
+      <linepath>
+       <startpoint startx="429" starty="100" />
+       <endpoint endx="429" endy="54" />
+      </linepath>
+     </UML:AssocWidget>
+     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="504" widgetaid="503" documentation="" type="500" >
+      <linepath>
+       <startpoint startx="128" starty="100" />
+       <endpoint endx="128" endy="54" />
+      </linepath>
+     </UML:AssocWidget>
+    </associations>
+   </diagram>
+  </diagrams>
+  <listview>
+   <listitem open="1" type="800" id="-1" label="Views" >
+    <listitem open="1" type="801" id="-1" label="Logical View" >
+     <listitem open="1" type="803" id="-1" label="AI Local" >
+      <listitem open="0" type="813" id="503" label="AI_DB" >
+       <listitem open="0" type="815" id="506" label="connect" />
+      </listitem>
+      <listitem open="0" type="813" id="507" label="AI_Form" >
+       <listitem open="0" type="815" id="509" label="iniciar" />
+       <listitem open="0" type="815" id="510" label="llenarObjeto" />
+      </listitem>
+      <listitem open="0" type="813" id="532" label="general" >
+       <listitem open="0" type="815" id="533" label="listarArchivos" />
+      </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="1" type="813" id="508" label="MECON_HTML_QuickForm" />
+     </listitem>
+    </listitem>
+    <listitem open="1" type="802" id="-1" label="Use Case View" />
+   </listitem>
+  </listview>
+ </XMI.content>
+</XMI>
diff --git a/doc/local_lib/xmi2code.config b/doc/local_lib/xmi2code.config
new file mode 100644 (file)
index 0000000..7dab2dd
--- /dev/null
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ! vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
+ ! **********************************************************************
+ ! *                      Ministerio de Economía                        *
+ ! *                  AI (Administrador de Intranet)                    *
+ ! **********************************************************************
+ ! * This file is part of AI.                                           *
+ ! *                                                                    *
+ ! * AI is free software; you can redistribute it and/or modify         *
+ ! * it under the terms of the GNU General Public License as published  *
+ ! * by the Free Software Foundation; either version 2 of the License,  *
+ ! * or (at your option) any later version.                             *
+ ! *                                                                    *
+ ! * AI is distributed in the hope that it will be useful, but          *
+ ! * WITHOUT ANY WARRANTY; without even the implied warranty of         *
+ ! * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   *
+ ! * General Public License for more details.                           *
+ ! *                                                                    *
+ ! * You should have received a copy of the GNU General Public License  *
+ ! * along with Hooks; if not, write to the Free Software Foundation,   *
+ ! * Inc., 59 Temple Place, Suite 330, Boston, MA  02111*1307  USA      *
+ ! **********************************************************************
+ ! * Creado: lun jun 23 15:21:18 ART 2003                               *
+ ! * Autor:  Leandro Lucarella <llucar@mecon.gov.ar>                    *
+ ! **********************************************************************
+ ! 
+ ! $Id$
+ ! 
+ !-->
+
+<xmi2code>
+  <option key="target" value="*"/>
+  <option key="xmi-input" value="uml.xmi"/>
+  <option key="config-file" value="xmi2code.config"/>
+  <option key="config-file-set" value="false"/>
+  <option key="handler" value="umbrello"/>
+  <option key="generator-path" value="../../sistema/local_lib"/>
+  <option key="use-package-as-dir" value="false"/>
+  <option key="use-underscores-as-dirs" value="true"/>
+  <option key="indent" value="    "/>
+  <option key="files-case" value="preserve"/>
+  <option key="generator" value="php.pear"/>
+  <option key="template-path" value=".."/>
+  <option key="php.template" value="xmi2code.tpl.php"/>
+  <option key="php.default-code" value="trigger_error('Not implemented!', E_USER_WARNING);"/>
+  <option key="php.pear.use-package-in-classnames" value="false"/>
+  <option key="php.pear.underscore-in-nonpublic" value="true"/>
+</xmi2code>
index c881dfdc74d275b0fad8fa339a8d10294faea961..87fe249cfc3e4caf74d9b0b30a2622e2315c8ab4 100644 (file)
      <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="DB" abstract="0" documentation="Base de datos de la cual obtener los sistemas." name="db" static="0" scope="200" />
      <UML:Parameter stereotype="" package="" xmi.id="2" value="''" type="string" abstract="0" documentation="Clausula WHERE para filtrar resultados." name="where" static="0" scope="200" />
     </UML:Operation>
-    <UML:Attribute stereotype="" package="" xmi.id="437" value="0" type="int" abstract="0" documentation="ID del sistema (ID en SAMURAI).
-FIXME - preguntar a gonzalo si le sirve." name="sistema" static="0" scope="200" />
-    <UML:Attribute stereotype="" package="" xmi.id="513" value="''" type="string" abstract="0" documentation="Nombre del sistema (sólo de lectura, extraído de SAMURAI).
-FIXME - preguntar a gonzalo si le sirve." name="nombre" static="0" scope="200" />
+    <UML:Attribute stereotype="" package="" xmi.id="437" value="0" type="int" abstract="0" documentation="ID del sistema (ID en SAMURAI)." name="sistema" static="0" scope="200" />
+    <UML:Attribute stereotype="" package="" xmi.id="513" value="''" type="string" abstract="0" documentation="Nombre del sistema (sólo de lectura, extraído de SAMURAI)." name="nombre" static="0" scope="200" />
     <UML:Attribute stereotype="" package="" xmi.id="514" value="''" type="string" abstract="0" documentation="Descripción del sistema (sólo de lectura, extraído de SAMURAI)." name="descripcion" static="0" scope="200" />
     <UML:Attribute stereotype="" package="" xmi.id="438" value="''" type="string" abstract="0" documentation="Ícono del sistema." name="icono" static="0" scope="200" />
     <UML:Attribute stereotype="" package="" xmi.id="439" value="''" type="string" abstract="0" documentation="Enlace a donde se encuentra el sistema." name="link" static="0" scope="200" />
     <UML:Attribute stereotype="" package="" xmi.id="440" value="''" type="string" abstract="0" documentation="Enlace a la ayuda del sistema." name="link_ayuda" static="0" scope="200" />
     <UML:Attribute stereotype="" package="" xmi.id="445" value="true" type="bool" abstract="0" documentation="Indica si esta habilitado." name="habilitado" static="0" scope="200" />
    </UML:Class>
-   <UML:Class stereotype="" package="" xmi.id="469" abstract="0" documentation="" name="AI_Error" static="0" scope="200" >
+   <UML:Class stereotype="" package="AI" xmi.id="469" abstract="0" documentation="" name="AI_Error" static="0" scope="200" >
     <UML:Operation stereotype="" package="" xmi.id="470" type="void" abstract="0" documentation="" name="AI_Error" static="0" scope="200" >
      <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="int" abstract="0" documentation="Código de error." name="codigo" static="0" scope="200" />
      <UML:Parameter stereotype="" package="" xmi.id="2" value="''" type="string" abstract="0" documentation="Mensaje para mostrar" name="mensaje" static="0" scope="200" />
@@ -91,25 +89,6 @@ x2c:include: PEAR.php" name="PEAR_Error" static="0" scope="200" />
     <UML:Attribute stereotype="" package="" xmi.id="493" value="false" type="bool" abstract="0" documentation="True si hay que mostrar los grupos hijos (?? FIXME)." name="mostrar_hijos" static="0" scope="200" />
     <UML:Attribute stereotype="" package="" xmi.id="494" value="true" type="bool" abstract="0" documentation="Indica si esta habilitado." name="habilitado" static="0" scope="200" />
    </UML:Class>
-   <UML:Class stereotype="" package="" xmi.id="503" abstract="0" documentation="Base de datos del Administrador de Intranet." name="AI_DB" static="0" scope="200" >
-    <UML:Operation stereotype="" package="" xmi.id="506" type="&amp;mixed" abstract="0" documentation="" name="connect" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="Archivo de configuración de la base de datos." name="confFile" static="0" scope="200" />
-    </UML:Operation>
-    <UML:Operation stereotype="" package="" xmi.id="511" type="bool" abstract="0" documentation="Verifica si un objeto es un error." name="isError" static="0" scope="200" >
-     <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="&amp;mixed" abstract="0" documentation="Variable a chequear si es un error." name="var" static="0" scope="200" />
-    </UML:Operation>
-   </UML:Class>
-   <UML:Class stereotype="" package="" xmi.id="504" abstract="0" documentation="x2c:extern" 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="&amp;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="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="&amp;mixed" abstract="0" documentation="Objeto a llenar con los datos del formulario. Puede ser GrupoSecciones, Servicio o Sistema." name="obj" static="0" scope="200" />
-    </UML:Operation>
-   </UML:Class>
-   <UML:Class stereotype="" package="" xmi.id="508" abstract="0" documentation="x2c:extern" name="MECON_HTML_QuickForm" static="0" scope="200" />
    <UML:Class stereotype="" package="AI" xmi.id="516" abstract="1" documentation="Objecto con capacidad de guardarse, cargarse y borrarse de una base de datos." name="AI_DBObject" static="0" scope="200" >
     <UML:Operation stereotype="" package="" xmi.id="519" type="void" abstract="0" documentation="" name="AI_DBObject" static="0" scope="200" >
      <UML:Parameter stereotype="" package="" xmi.id="1" value="0" type="int" abstract="0" documentation="Identificador del objeto a cargar." name="id" static="0" scope="200" />
@@ -147,60 +126,44 @@ x2c:get" name="hijos" static="0" scope="202" />
   <diagrams>
    <diagram snapgrid="0" showattsig="1" fillcolor="#ffffc0" showgrid="1" 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="170" showattsigs="601" usesdiagramusefillcolour="0" x="267" linecolour="#ff0000" y="310" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="168" 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="287" showattsigs="601" usesdiagramusefillcolour="0" x="30" linecolour="#ff0000" y="139" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="168" 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="410" linecolour="#ff0000" y="543" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="49" 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="505" linecolour="#ff0000" y="487" 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="450" linecolour="#ff0000" y="296" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="182" 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="53" linecolour="#ff0000" y="379" 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="126" linecolour="#ff0000" y="316" 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="16" linecolour="#ff0000" y="529" 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="78" linecolour="#ff0000" y="454" 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="346" showattsigs="601" usesdiagramusefillcolour="0" x="145" linecolour="#ff0000" y="6" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="98" usefillcolor="1" showattributes="1" xmi.id="516" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
-     <UML:ConceptWidget usesdiagramfillcolour="0" width="297" showattsigs="601" usesdiagramusefillcolour="0" x="324" linecolour="#ff0000" y="139" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="70" usefillcolor="1" showattributes="1" xmi.id="524" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="0" width="170" showattsigs="601" usesdiagramusefillcolour="0" x="309" linecolour="#ff0000" y="360" showopsigs="600" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="168" 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="287" showattsigs="601" usesdiagramusefillcolour="0" x="29" linecolour="#ff0000" y="162" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="168" 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="30" linecolour="#ff0000" y="441" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="49" 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="125" linecolour="#ff0000" y="385" 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="492" linecolour="#ff0000" y="360" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="182" 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="346" showattsigs="601" usesdiagramusefillcolour="0" x="144" linecolour="#ff0000" y="29" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="98" usefillcolor="1" showattributes="1" xmi.id="516" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,8,-1,5,50,0,0,0,0,0" />
+     <UML:ConceptWidget usesdiagramfillcolour="0" width="297" showattsigs="601" usesdiagramusefillcolour="0" x="350" linecolour="#ff0000" y="162" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="70" usefillcolor="1" showattributes="1" xmi.id="524" showoperations="1" 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="541" starty="543" />
-       <endpoint endx="541" endy="511" />
-      </linepath>
-     </UML:AssocWidget>
-     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="508" widgetaid="507" documentation="" type="500" >
-      <linepath>
-       <startpoint startx="151" starty="529" />
-       <endpoint endx="151" endy="478" />
+       <startpoint startx="161" starty="441" />
+       <endpoint endx="161" endy="409" />
       </linepath>
      </UML:AssocWidget>
      <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="3" indexb="1" widgetbid="516" widgetaid="416" documentation="" type="500" >
       <linepath>
-       <startpoint startx="173" starty="139" />
-       <endpoint endx="260" endy="104" />
+       <startpoint startx="172" starty="162" />
+       <endpoint endx="259" endy="127" />
       </linepath>
      </UML:AssocWidget>
      <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="516" widgetaid="524" documentation="" type="500" >
       <linepath>
-       <startpoint startx="472" starty="139" />
-       <endpoint endx="375" endy="104" />
-      </linepath>
-     </UML:AssocWidget>
-     <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="504" widgetaid="503" documentation="" type="500" >
-      <linepath>
-       <startpoint startx="149" starty="379" />
-       <endpoint endx="149" endy="340" />
+       <startpoint startx="498" starty="162" />
+       <endpoint endx="374" endy="127" />
       </linepath>
      </UML:AssocWidget>
      <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="524" widgetaid="486" documentation="" type="500" >
       <linepath>
-       <startpoint startx="588" starty="296" />
-       <endpoint endx="522" endy="209" />
+       <startpoint startx="630" starty="360" />
+       <endpoint endx="548" endy="232" />
       </linepath>
      </UML:AssocWidget>
      <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="3" indexb="1" widgetbid="524" widgetaid="413" documentation="" type="500" >
       <linepath>
-       <startpoint startx="352" starty="310" />
-       <endpoint endx="423" endy="209" />
+       <startpoint startx="394" starty="360" />
+       <endpoint endx="449" endy="232" />
       </linepath>
      </UML:AssocWidget>
     </associations>
@@ -210,10 +173,6 @@ x2c:get" name="hijos" static="0" scope="202" />
    <listitem open="1" type="800" id="-1" label="Views" >
     <listitem open="1" type="801" id="-1" label="Logical View" >
      <listitem open="1" type="803" id="-1" label="AI" >
-      <listitem open="0" type="813" id="503" label="AI_DB" >
-       <listitem open="0" type="815" id="506" label="connect" />
-       <listitem open="0" type="815" id="511" label="isError" />
-      </listitem>
       <listitem open="0" type="813" id="516" label="AI_DBObject" >
        <listitem open="0" type="815" id="519" label="AI_DBObject" />
        <listitem open="0" type="815" id="522" label="borrar" />
@@ -228,14 +187,10 @@ x2c:get" name="hijos" static="0" scope="202" />
        <listitem open="0" type="815" id="527" label="cargarHijos" />
        <listitem open="0" type="814" id="525" label="hijos" />
       </listitem>
-      <listitem open="1" type="813" id="469" label="AI_Error" >
+      <listitem open="0" type="813" id="469" label="AI_Error" >
        <listitem open="0" type="815" id="470" label="AI_Error" />
        <listitem open="0" type="815" id="530" label="isError" />
       </listitem>
-      <listitem open="0" type="813" id="507" label="AI_Form" >
-       <listitem open="0" type="815" id="509" label="iniciar" />
-       <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" />
@@ -278,9 +233,7 @@ x2c:get" name="hijos" static="0" scope="202" />
       </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="1" type="813" id="508" label="MECON_HTML_QuickForm" />
+     <listitem open="1" type="803" id="-1" label="Externo" >
       <listitem open="0" type="813" id="471" label="PEAR_Error" />
      </listitem>
     </listitem>
index 556c1493c43d4d0921d7acfc6ae938d4319c5cb4..a7fa1a3d391290354ba3adfa901392325f408068 100644 (file)
@@ -50,6 +50,7 @@ define('AI_ERROR_TIENE_HIJOS', 2);
 
 // +X2C Class 469 :AI_Error
 /**
+ * @package AI
  * @access public
  */
 class AI_Error extends PEAR_Error {
index 17a4d02a2bad6bc8ba871ca138fbcf92ac0595a3..6211577c1dbf8e9c48c4ec1a280d2f61e510d9fa 100644 (file)
@@ -50,7 +50,6 @@ define('AI_SISTEMA_CONFFILE', dirname(__FILE__).'/Sistema.ini');
 class AI_Sistema extends AI_DBObject {
     /**
      * ID del sistema (ID en SAMURAI).
-FIXME - preguntar a gonzalo si le sirve.
      *
      * @var    int $sistema
      * @access public
@@ -59,7 +58,6 @@ FIXME - preguntar a gonzalo si le sirve.
 
     /**
      * Nombre del sistema (slo de lectura, extra?o de SAMURAI).
-FIXME - preguntar a gonzalo si le sirve.
      *
      * @var    string $nombre
      * @access public
@@ -222,4 +220,4 @@ FIXME - preguntar a gonzalo si le sirve.
 
 } // -X2C Class :AI_Sistema
 
-?>
+?>
\ No newline at end of file
similarity index 86%
rename from lib/AI/DB.php
rename to sistema/local_lib/AI/DB.php
index 4c40826f309b4b2d331f731b076d1fcdc7f47b49..32a0dfd7db8b0570d3bb084b28cb739d400a91ba 100644 (file)
@@ -35,6 +35,7 @@ require_once 'DB.php';
 /**
  * Base de datos del Administrador de Intranet.
  *
+ * @package AI_Local
  * @access public
  */
 class AI_DB extends DB {
@@ -42,32 +43,21 @@ class AI_DB extends DB {
 
     // +X2C Operation 506
     /**
-     * @param  string $confFile Archivo de configuracin de la base de datos.
+     * @param  string $confFile Archivo de configuracin de la base de datos. Si no se especifica se toma uno por defecto del directorio de configuracin.
      *
      * @return &mixed
      * @access public
      */
-    function &connect($confFile) // ~X2C
+    function &connect($confFile = '') // ~X2C
     {
+        if (!$confFile) {
+            $confFile = dirname(realpath(__FILE__)).'../conf/DB.ini';
+        }
         $conf = parse_ini_file($confFile, true);
         return DB::connect($conf['dsn'], $conf['opciones']);
     }
     // -X2C
 
-    // +X2C Operation 511
-    /**
-     * Verifica si un objeto es un error.
-     *
-     * @param  mixed &$var Variable a chequear si es un error.
-     *
-     * @return bool
-     * @access public
-     */
-    function isError(&$var) // ~X2C
-    {
-        return is_a($var, 'ai_error');
-    }
-    // -X2C
 
 } // -X2C Class :AI_DB
 
similarity index 86%
rename from lib/AI/Form.php
rename to sistema/local_lib/AI/Form.php
index dc81494ec869448ddea72bf28bd4583785083c21..804ed27148d8c401d2e9993a98f060c2c83a9896 100644 (file)
@@ -31,6 +31,8 @@
 require_once 'MECON/HTML/QuickForm.php';
 // ~X2C
 
+require_once 'general.php';
+
 // Definicion de acciones.
 define('AI_ALTA',   1);
 define('AI_BAJA',   2);
@@ -40,6 +42,7 @@ define('AI_MODIF',  4);
 /**
  * Formularios para el Administrador de Intranet.
  *
+ * @package AI_Local
  * @access public
  */
 class AI_Form extends MECON_HTML_QuickForm {
@@ -51,14 +54,14 @@ class AI_Form extends MECON_HTML_QuickForm {
      *
      * @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_MODIFICACION.
+     * @param  HTML_Arbol $arbol ?bol de donde sacar los padres.
+     * @param  DB $db Base de datos.
      *
      * @return void
      * @access public
      */
-    function iniciar(&$obj, $accion = AI_ALTA) // ~X2C
+    function iniciar(&$obj, $accion, $arbol, $db) // ~X2C
     {
-        # FIXME - Tomar la db desde afuera.
-        $db = AI_DB::connect('../conf/DB.ini');
         $tipo   = substr(get_class($obj), 3);
         $s_tipo = ucfirst($tipo);
         if ($tipo == 'gruposecciones') {
@@ -105,8 +108,7 @@ class AI_Form extends MECON_HTML_QuickForm {
         }
         if ($tipo == 'grupo' or $tipo == 'servicio') {
             $tipos = array('' => '--', '0' => 'Página Principal')
-                + arbol2array($db, ($tipo == 'grupo') ? 'grupo_secciones' : $tipo,
-                    0, $tipo, 'nombre', $tipo . '_padre', 'ASC');
+                + $arbol->toArray();
             // Saco el elemento actual si hay uno cargado (no puede ser padre de si mismo).
             if ($accion & (AI_BAJA | AI_MODIF)) {
                 unset($tipos[$obj->$tipo]);
@@ -157,7 +159,7 @@ class AI_Form extends MECON_HTML_QuickForm {
             $fLinkAyuda =& $this->addElement('text', 'link_ayuda', 'Enlace de la ayuda');
             //$fIcono     =& $this->addElement('text', 'icono', 'Ícono');
             $fIcono     =& $this->addElement('select', 'icono', 'Ícono',
-            listaImagenes('/var/www/sistemas/intranet/www/images', $tipo . '_', '\.gif'));
+                listarArchivos('/var/www/sistemas/intranet/www/images', $tipo . '_', '\.gif'));
             // Carga datos.
             if ($accion & (AI_BAJA | AI_MODIF)) {
                 $fLink->setValue($obj->link);
@@ -235,45 +237,4 @@ class AI_Form extends MECON_HTML_QuickForm {
 
 } // -X2C Class :AI_Form
 
-// FIXME - Poner esto en algun lugar mejor.
-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;
-}
-
-// FIXME - Poner esto en algun lugar mejor.
-function arbol2array(&$db, $tabla, $actual, $id, $nombre, $padre, $order = '', $indent = '&nbsp;&nbsp;&nbsp;')
-{
-    // Para llevar el nivel de indentación
-    static $nivel = 0;
-    $nivel++;
-    $sql = "SELECT $id, $nombre
-            FROM $tabla";
-    if (!is_null($padre)) {
-        $sql .= " WHERE $padre = ".$db->quote($actual);
-    }
-    if ($order) {
-        $sql .= " ORDER BY $nombre $order";
-    }
-    $array = $db->getAssoc($sql);
-    if (DB::isError($array)) {
-        return $array;
-    }
-    $ret = array();
-    foreach ($array as $key => $val) {
-        $ret[$key] = str_repeat($indent, $nivel) . $val;
-        $ret += arbol2array($db, $tabla, $key, $id, $nombre, $padre, $order, $indent);
-    }
-    $nivel--;
-    return $ret;
-}
-
 ?>
\ No newline at end of file
diff --git a/sistema/local_lib/general.php b/sistema/local_lib/general.php
new file mode 100644 (file)
index 0000000..883551e
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+// vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+// +--------------------------------------------------------------------+
+// |                      Ministerio de Economía                        |
+// |                  AI (Administrador de Intranet)                    |
+// +--------------------------------------------------------------------+
+// | This file is part of AI.                                           |
+// |                                                                    |
+// | AI is free software; you can redistribute it and/or modify         |
+// | it under the terms of the GNU General Public License as published  |
+// | by the Free Software Foundation; either version 2 of the License,  |
+// | or (at your option) any later version.                             |
+// |                                                                    |
+// | AI is distributed in the hope that it will be useful, but          |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   |
+// | General Public License for more details.                           |
+// |                                                                    |
+// | You should have received a copy of the GNU General Public License  |
+// | along with Hooks; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      |
+// +--------------------------------------------------------------------+
+// | Creado: Thu Jul 24 20:17:47 2003                                   |
+// | Autor:  Leandro Lucarella <llucar@mecon.gov.ar>                    |
+// +--------------------------------------------------------------------+
+//
+// $Id$
+//
+
+// +X2C Class 532 :general
+/**
+ * Funciones generales.
+ *
+ * @package AI_Local
+ * @access public
+ */
+    // ~X2C
+
+    // +X2C Operation 533
+    /**
+     * Lista archivos devolviendo un array apropiado para un SELECT.
+     *
+     * @param  string $dir Directorio donde estan las imagenes.
+     * @param  string $prepend Prefijo del archivo.
+     * @param  string $append Postfijo del archivo.
+     *
+     * @return array
+     */
+    function listarArchivos($dir = '.', $prepend = '', $append = '') // ~X2C
+    {
+        $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
+
+// -X2C Class :general
+?>
\ No newline at end of file
index d68fe8ec920900257b7f196e92861cb9f7457d6a..438f132adc73c0dc88e1b1fc5f41b498c08a1f30 100644 (file)
@@ -28,6 +28,8 @@
 //
 
 require_once 'MECON/HTML/Error.php';
+require_once 'MECON/general.php';
+prepend_include_path('/var/www/sistemas/ai/sistema/local_lib');
 
 // Debug. {{{
 require_once 'PEAR.php';
@@ -130,16 +132,44 @@ if ($tipo) {
     }
     // }}}
 
+    // 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,
+        'tabla'         => $tabla,
+        'id'            => $tipo,
+        'nombre'        => 'nombre',
+        'order'         => 'asc',
+    );
+    // Activo el id del objeto que estamos modificando.
+    if ($accion & (AI_BAJA | AI_MODIF)) {
+        $dbdata['id_activo'] = $obj->$tipo;
+    }
+    if ($tipo == 'grupo' or $tipo == 'servicio') {
+        $dbdata['id_padre'] = $tipo . '_padre';
+    } elseif ($tipo == 'sistema') { // FIXME - horrible!!!
+        $dbdata =
+            array(
+                'tabla'         => "intranet.$tabla as A, samurai.sistema as S",
+                'id'            => "A.$tipo",
+                'nombre'        => 'S.nombre_sistema',
+                'where'         => 'S.id_sistema = A.sistema AND S.estado = 1',
+            )
+            + $dbdata;
+    }
+    $arbol = new HTML_ArbolDB($dbdata, $arbol, $tipo.'?accion='.AI_MODIF.'&id=');
+    // }}}
+
     // Inicio el formulario, cargando datos de ser necesario. {{{
     if ($accion & (AI_BAJA | AI_MODIF)) {
         $err =& $obj->cargar($db);
         if (PEAR::isError($err)) {
             die($err->getMessage());
         }
-        $form->iniciar($obj, $accion);
+        $form->iniciar($obj, $accion, $arbol, $db);
     } else {
         $accion = AI_ALTA;
-        $form->iniciar($obj);
+        $form->iniciar($obj, $accion, $arbol, $db);
     }
     // }}}
 
@@ -213,40 +243,11 @@ if ($tipo) {
     }
     // }}}
 
-    // 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,
-        'tabla'         => $tabla,
-        'id'            => $tipo,
-        'nombre'        => 'nombre',
-        'prepend_link'  => $tipo.'?accion='.AI_MODIF.'&id=',
-        'order'         => 'asc',
-    );
-    if ($tipo == 'grupo' or $tipo == 'servicio') {
-        $dbdata['id_padre'] = $tipo . '_padre';
-    } elseif ($tipo == 'sistema') { // FIXME - horrible!!!
-        $dbdata =
-            array(
-                'tabla'         => "intranet.$tabla as A, samurai.sistema as S",
-                'id'            => "A.$tipo",
-                'nombre'        => 'S.nombre_sistema',
-                'where'         => 'S.id_sistema = A.sistema AND S.estado = 1',
-            )
-            + $dbdata;
-    }
-    $arbol = new HTML_ArbolDB($dbdata, $arbol);
+    // Agrego el menu y formulario a la página. {{{
     $marco->addMenuVertical($arbol);
-    // }}}
-
-    // Agrego el formulario a la página. {{{
     $marco->addBody($form);
     // }}}
 
-    // }}}
-
 // }}}
 
 // No se está editando nada, agrego la imágen de bienvenida a la página. {{{