]> git.llucax.com Git - mecon/ai.git/blobdiff - lib/AI/Form.php
- Se ordenan la mayoría de los resultados de las DB.
[mecon/ai.git] / lib / AI / Form.php
index 582d704ef4416a5d95265574ff03cf023552f138..b74bd02ce3fbc530a2a8dbe713d4f63ec714ea24 100644 (file)
@@ -81,8 +81,10 @@ class AI_Form extends MECON_HTML_QuickForm {
         // Elementos.
         if ($tipo == 'sistema') {
             require_once 'SAMURAI/Sistema.php';
-            $sistemas = SAMURAI_Sistema::getArraySistemas(AI_DB::connect('../conf/DB.ini'));
+            $sistemas = array('' => '--') +
+                SAMURAI_Sistema::getArraySistemas(AI_DB::connect('../conf/DB.ini'));
             $fId        =& $this->addElement('select', $tipo, 'Sistema', $sistemas);
+            $this->addRule($tipo, 'Debe ingresar un sistema.', 'required');
         }
         if ($accion & (AI_BAJA | AI_MODIF)) {
             if ($tipo == 'sistema') {
@@ -94,7 +96,11 @@ class AI_Form extends MECON_HTML_QuickForm {
             $fId->freeze();
         }
         if ($tipo == 'grupo' or $tipo == 'servicio') {
-            $fPadre  =& $this->addElement('text', $padre, 'Padre');
+            $tipos = array('' => '--', '0' => 'Página Principal') +
+                arbol2array(AI_DB::connect('../conf/DB.ini'),
+                ($tipo == 'grupo') ? 'grupo_secciones' : $tipo, 0, $tipo, 'nombre',
+                $tipo . '_padre', 'ASC');
+            $fPadre  =& $this->addElement('select', $padre, 'Padre', $tipos);
             $fNombre =& $this->addElement('text', 'nombre', 'Nombre');
             // Validación.
             $this->addRule('nombre', 'Debe ingresar un nombre.', 'required');
@@ -103,14 +109,15 @@ class AI_Form extends MECON_HTML_QuickForm {
                 'regex', '/^\d*$/');
             // Carga datos.
             if ($accion & (AI_BAJA | AI_MODIF)) {
-                $fPadre->setValue($obj->$padre);
+                $fPadre->setSelected($obj->$padre);
                 $fNombre->setValue($obj->nombre);
             }
         }
         if ($tipo == 'grupo') {
-            $fAntiguedad   =& $this->addElement('text', 'antiguedad', 'Antigüedad');
+            $fAntiguedad   =& $this->addElement('select', 'antiguedad', 'Antigüedad',
+                array(3 => '3 días', 1 => '1 día', 7 => '1 semana'));
             $fSecciones    =& $this->addElement('select', 'secciones', 'Secciones',
-                AI_GrupoSecciones::getSeccionesArray(),
+                AI_GrupoSecciones::getSeccionesArray(AI_DB::connect('../conf/DB.ini')),
                 array('multiple' => 'multiple', 'size' => 5));
             $fMostrarHijos =& $this->addElement('checkbox', 'mostrar_hijos', 'Mostrar hijos');
             // Validación.
@@ -118,7 +125,7 @@ class AI_Form extends MECON_HTML_QuickForm {
                 'regex', '/^\d*$/');
             // Carga datos.
             if ($accion & (AI_BAJA | AI_MODIF)) {
-                $fAntiguedad->setValue($obj->antiguedad);
+                $fAntiguedad->setSelected($obj->antiguedad);
                 $fSecciones->setSelected($obj->secciones);
                 $fMostrarHijos->setChecked($obj->mostrar_hijos);
             }
@@ -139,7 +146,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/ai/sistema/www/images', $tipo . '_', '\.gif'));
+            listaImagenes('/var/www/sistemas/intranet/www/images', $tipo . '_', '\.gif'));
             // Carga datos.
             if ($accion & (AI_BAJA | AI_MODIF)) {
                 $fLink->setValue($obj->link);
@@ -217,7 +224,9 @@ class AI_Form extends MECON_HTML_QuickForm {
 
 } // -X2C Class :AI_Form
 
-function listaImagenes($dir = '.', $prepend = '', $append = '') {
+// FIXME - Poner esto en algun lugar mejor.
+function listaImagenes($dir = '.', $prepend = '', $append = '')
+{
     $lista = array('' => '--');
     $d = dir($dir);
     while (($file = $d->read()) !== false) {
@@ -229,4 +238,31 @@ function listaImagenes($dir = '.', $prepend = '', $append = '') {
     return $lista;
 }
 
+// FIXME - Poner esto en algun lugar mejor.
+function arbol2array(&$db, $tabla, $actual, $id, $nombre, $padre, $order = '', $indent = '   ')
+{
+    // 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