X-Git-Url: https://git.llucax.com/mecon/ai.git/blobdiff_plain/6e0df7b212f1a721cf8df887c629b67957871225..55d3886138cf28e25248767f211b3d5058a788b6:/lib/AI/Form.php?ds=sidebyside diff --git a/lib/AI/Form.php b/lib/AI/Form.php index 5cc482e..dc81494 100644 --- a/lib/AI/Form.php +++ b/lib/AI/Form.php @@ -1,5 +1,5 @@ '--'); + $cargados = AI_Sistema::getSistemasArray($db); + foreach (SAMURAI_Sistema::getArraySistemas($db) as $id => $nom) { + if (!in_array($id, $cargados) + or ($accion & (AI_BAJA | AI_MODIF) and $id == $obj->$tipo)) { + $sistemas[$id] = $nom; + } + } $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 +104,14 @@ 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($db, ($tipo == 'grupo') ? 'grupo_secciones' : $tipo, + 0, $tipo, 'nombre', $tipo . '_padre', 'ASC'); + // 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]); + } + $fPadre =& $this->addElement('select', $padre, 'Padre', $tipos); $fNombre =& $this->addElement('text', 'nombre', 'Nombre'); // Validación. $this->addRule('nombre', 'Debe ingresar un nombre.', 'required'); @@ -103,22 +120,23 @@ 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', - array(1=>'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7', 'test8'), - array('multiple' => 'multiple', 'size' => 5)); + AI_GrupoSecciones::getSeccionesArray($db), + array('multiple' => 'multiple', 'size' => 8)); $fMostrarHijos =& $this->addElement('checkbox', 'mostrar_hijos', 'Mostrar hijos'); // Validación. $this->addRule('antiguedad', 'La antigüedad debe ser un número natural.', '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); } @@ -137,7 +155,9 @@ class AI_Form extends MECON_HTML_QuickForm { 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/intranet/www/images', $tipo . '_', '\.gif')); // Carga datos. if ($accion & (AI_BAJA | AI_MODIF)) { $fLink->setValue($obj->link); @@ -215,4 +235,45 @@ 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 = '   ') +{ + // 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