![]() |
Documentación GVHIDRA 3.1.5
|
Métodos públicos | |
IgepAccionesGenericas () | |
perform ($actionMapping, $actionForm) | |
calcularCamposDependientes () | |
abrirVentanaSeleccion () | |
buscarVentanaSeleccion () | |
focusChanged () | |
Campos de datos | |
$obj_errorNegocio | |
$comunica | |
$obj_mensaje | |
$obj_IgSmarty | |
Métodos privados | |
ordenarCursor (&$cursor, $clave, $tipo, $orden= 'asc') |
Definición en la línea 80 del archivo IgepAccionesGenericas.php.
abrirVentanaSeleccion | ( | ) |
Mtodo encargado de realizar las operaciones necesarias para la fase de apertura de una ventana de Seleccin private
Definición en la línea 523 del archivo IgepAccionesGenericas.php.
{ $datosVentana = $this->comunica->dameDatos('abrirVentanaSeleccion'); $coleccionVentanas = & IgepSession::dameVariable($datosVentana['claseManejadora'],'v_ventanasSeleccion'); if(isset($coleccionVentanas[$datosVentana['nomCampo']])){ $coleccionVentanas[$datosVentana['nomCampo']]->abrirVentanaSeleccion($datosVentana); $coleccionVentanas[$datosVentana['nomCampo']]->buscarVentanaSeleccion($datosVentana,$this->obj_errorNegocio); //Como se puede haber modificado la dependencia, grabamos el valor de la cadenaDependencia return 0; } else{ $panelVentanaSeleccion['mensaje'] = new IgepMensaje('IGEP-19',array($datosVentana['nomCampo'],$datosVentana['claseManejadora'])); IgepSession::_guardaPanelIgep('ventanaSeleccion',$panelVentanaSeleccion); return -1; } }
buscarVentanaSeleccion | ( | ) |
Mtodo encargado de realizar las operaciones necesarias para la fase de busqueda de una ventana de Seleccin private
Definición en la línea 545 del archivo IgepAccionesGenericas.php.
{ $datosVentana = $this->comunica->dameDatos('abrirVentanaSeleccion'); $coleccionVentanas = IgepSession::dameVariable($datosVentana['claseManejadora'],'v_ventanasSeleccion'); if(isset($coleccionVentanas[$datosVentana['nomCampo']])) $coleccionVentanas[$datosVentana['nomCampo']]->buscarVentanaSeleccion($datosVentana); return 0; }
calcularCamposDependientes | ( | ) |
Mtodo encargado de realizar la recarga dinamica de las listas Dependientes. private
Definición en la línea 455 del archivo IgepAccionesGenericas.php.
{ //Creamos un objeto para la gestin de javascript $this->obj_IgSmarty = new IgepSmarty(); //Recogemos los datos del comunicacion $datosCampoDependiente = $this->comunica->dameDatos('camposDependientes'); //Descomponemos el nombre del campo origen que nos viene con prefijos $descCampoOrigen = explode('___', $datosCampoDependiente['origen']); //El campo puede tener prefijo (cam__ , ins__) o no (si est en un panel de busqueda). Si tiene prefijo count(descCampoOrigen)>1 sino no if(count($descCampoOrigen)>1) $campoOrigen = $descCampoOrigen[1]; else $campoOrigen = $descCampoOrigen[0]; //Obtenemos los campos destino de la validacin $destinos = explode(",",$datosCampoDependiente['destino']); foreach($destinos as $indice => $dest) $destinosAdaptados[$indice] = str_replace($campoOrigen,trim($dest),$datosCampoDependiente['origen']); if (IgepSession::existePanel($datosCampoDependiente['claseManejadora'])){ //Hacemos la nueva conexin. $objPanel = IgepSession::damePanel($datosCampoDependiente['claseManejadora']); //si necesitamos dsn para regenerar lo obtenemos if(method_exists($objPanel,'getDSN')) $dsn = $objPanel->getDSN(); $objPanel->regenerarInstancia($dsn); $objPanel->comunica = new IgepComunicacion($objPanel->v_descCamposPanel); $objPanel->comunica->data2Arrays(); $objPanel->comunica->setOperacion('visibles'); $objPanel->comunica->posicionarEnTupla($datosCampoDependiente['registroActivo']); //Validamos los campos antes de saltar // TODO: 02-09-2009. Toni: Validacion de datos en acciones de interfaz // Este codigo permite validar los datos al entrar en una accion de interfaz. // Esta comentado porque provoca efectos no deseados. Bloque la interfaz y no // deja que se ejectuen el resto de acciondes de interfaz. /* $validacionIgep = $objPanel->comunica->checkDataTypes(); if($validacionIgep!= '0') { $jsMensajeError =IgepSmarty::getJsMensaje(new IgepMensaje('IGEP-17',array($validacionIgep))); $this->obj_IgSmarty->addPostScript($jsMensajeError); } else { */ //Si actualizamos listas, tenemos que recorrer cada uno de ellas para obtener la forma en que se cargan. $this->obj_IgSmarty->addPreScript($objPanel->_recalcularListasDependientes($destinos,$destinosAdaptados)); //Ahora comprobamos si el campo origen tiene una validacin. En este caso ejecutaremos la funcin de validacin correspondiente $this->obj_IgSmarty->addPostScript($objPanel->_accionesInterfaz($campoOrigen,$datosCampoDependiente['origen'])); //Por el paso a PHP5 tenemos que eliminar la referencia del mensaje. $objPanel->obj_mensaje=null; // } $objPanel->limpiarInstancia(); unset($objPanel); } //Arreglamos los destinos IgepSession::guardaVariable('camposDependientes','formulario',$datosCampoDependiente['formulario']); IgepSession::guardaVariable('camposDependientes','origen',$datosCampoDependiente['origen']); IgepSession::guardaVariable('camposDependientes','obj_jsOculto',$this->obj_IgSmarty); return 0; } //Fin de calcularCamposDependientes
focusChanged | ( | ) |
Definición en la línea 554 del archivo IgepAccionesGenericas.php.
{ $m_datosFocusChanged = $this->comunica->dameDatos('focusChanged'); //Provisional $composicionCampos=$m_datosFocusChanged['tipoCampo'].'___'.'campo'.'___'.$m_datosFocusChanged['idPanel'].'_0'; $this->obj_IgSmarty = new IgepSmarty(); if (IgepSession::existePanel($m_datosFocusChanged['claseManejadora'])){ //Hacemos la nueva conexin. $objPanel = IgepSession::damePanel($m_datosFocusChanged['claseManejadora']); $dsn = $objPanel->getDSN(); $objPanel->regenerarInstancia($dsn); $objPanel->comunica = new IgepComunicacion($objPanel->v_descCamposPanel); $objPanel->comunica->setOperacion('postConsultar'); //Si es un tres modos o un dos modos if(isset($objPanel->obj_ultimaEdicion)) $objPanel->comunica->setArrayOperacion($objPanel->obj_ultimaEdicion); else $objPanel->comunica->setArrayOperacion($objPanel->obj_ultimaConsulta); $objPanel->comunica->posicionarEnTupla($m_datosFocusChanged['filaActual']); $jsGenerado = $objPanel->_focusChanged($composicionCampos,$m_datosFocusChanged['filaActual'],$m_datosFocusChanged['filaProxima']); $this->obj_IgSmarty->addPostScript($jsGenerado); unset($objPanel); } //Arreglamos los destinos IgepSession::guardaVariable('camposDependientes','formulario',$m_datosFocusChanged['nomForm']); IgepSession::guardaVariable('camposDependientes','obj_jsOculto',$this->obj_IgSmarty); }
constructor. Generar a partir de los parmetros que se le pasen una conexin a al base de datos y un array de manejadores de tablas (una por cada una de las que mantenga el panel hijo).
Definición en la línea 114 del archivo IgepAccionesGenericas.php.
{ global $g_error; if(!isset($g_error)) $g_error = new IgepError(); $this->obj_errorNegocio = & $g_error; }
ordenarCursor | ( | &$ | cursor, |
$ | clave, | ||
$ | tipo, | ||
$ | orden = 'asc' |
||
) | [private] |
Funcion que ordena cursores (vectores de registros) por la clave que se indique por argumento y de forma ascedente o descendente. TODO: Si no se define el tipo en v_descCampos, se puede intentar obtener el tipo a partir del valor de la primera fila Esta funcion solo se llama desde IgepAccionesGenericas donde no se inicializa el dsn, luego de momento no se pueden obtener fechas ni numeros si no se han declarado
Definición en la línea 592 del archivo IgepAccionesGenericas.php.
{ if (count($cursor) < 2) return; //Inicializacion de variables $vectorClave = array (); $cursorOrdenado = array (); $es_numero = ($tipo==TIPO_DECIMAL OR $tipo==TIPO_ENTERO); $es_fecha = ($tipo==TIPO_FECHA OR $tipo==TIPO_FECHAHORA); if ($es_fecha) $tipoOrdenacion = SORT_REGULAR; elseif ($es_numero) $tipoOrdenacion = SORT_NUMERIC; else $tipoOrdenacion = SORT_STRING; foreach ($cursor as $fila => $valor) { $vectorClave[$fila] = $valor[$clave]; } if (strtolower($orden) == 'asc') asort($vectorClave, $tipoOrdenacion); else arsort($vectorClave, $tipoOrdenacion); //Recorremos la matriz original asignado reset($vectorClave); foreach ($vectorClave as $fila => $valor) { $cursorOrdenado[] = $cursor[$fila]; } $cursor = $cursorOrdenado; }
perform | ( | $ | actionMapping, |
$ | actionForm | ||
) |
Mtodo que se ejecuta tras el constructor y que permite seleccionar la accin a realizar. En esta clase se encuentran las siguientes acciones genricas:
<ui>camposDependientes: recalcula listas dependientes y dispara acciones de interfaz.</ui> <ui>abrirVentanaSeleccion: abre la ventana de Seleccin.</ui> <ui>buscarVentanaSeleccion: realiza la busqueda en la ventana de Seleccin.</ui>
Reimplementado de Action.
Definición en la línea 130 del archivo IgepAccionesGenericas.php.
{ //Recogemos la accion y le quitamos el prefijo que nos viene de la ventana $str_accion = $actionForm->get('action'); //Debug:Indicamos que entramos en Negocio y la accion a ejecutar IgepDebug::setDebug(5,'IgepAccionesGenericas: ejecutamos accin '.$str_accion); //creamos la instancia de IgepComunicacion $this->comunica = new IgepComunicacion(array()); switch ($str_accion) { //Accin Genrica de Igep que lanzan automticamente los plug-ins cuando se actualiza un campo que tiene otros campos dependientes. Tipicamente las listas. case 'gvHrefreshUI': $this->comunica->buildDataRefreshUI($actionForm); $resultado = $this->calcularCamposDependientes(); $actionForward = $actionMapping->get('IgepOperacionOculto'); break; case 'launchSelectionWindow': $objClase = & IgepSession::damePanel($_REQUEST['claseManejadora']); $selectionWindow = $objClase->v_ventanasSeleccion[$_REQUEST['selectionWindow']]; if(is_object($selectionWindow)) { $size = $selectionWindow->getWindowSize(); if (isset($size)) echo $size['height'].'|'.$size['width']; else echo '610|450'; } die; //Accin Genrica de Igep que se lanza al pulsar al botn que lanza la ventana de seleccin (el botn de los 3 puntos). case 'abrirVentanaSeleccion': $this->comunica->construirArrayAbrirVentanaSeleccion($actionForm); $this->abrirVentanaSeleccion(); $actionForward = $actionMapping->get('IgepOperacionOculto'); break; //Accin Genrica de Igep que se lanza al pulsar al botn de bsqueda en la ventana de seleccin (la lupa). case 'buscarVentanaSeleccion': $this->comunica->construirArrayBuscarVentanaSeleccion($actionForm); $this->buscarVentanaSeleccion(); $actionForward = $actionMapping->get('IgepOperacionOculto'); break; case 'ordenarTabla': $this->comunica->construirArrayOrdenarTabla($actionForm); $datosOrdenacion = $this->comunica->dameDatos('ordenarTabla'); $objClase = & IgepSession::damePanel($datosOrdenacion['claseManejadora']); $objClase->regenerarInstancia(); //Recuperamos el tipo de la columna de ordenacin $tipo = $objClase->v_descCamposPanel[$datosOrdenacion['columna']]['tipo']; //Recogemos los datos a ordenar $cursor = $objClase->getResultadoBusqueda(); $this->ordenarCursor($cursor,$datosOrdenacion['columna'],$tipo,$datosOrdenacion['orden']); $objClase->setResultadoBusqueda($cursor); $actionForward = $actionMapping->get('IgepOperacionOculto'); break; case 'IgepSaltoVentana': case 'IgepRegresoVentana': $nombreClase = $_REQUEST['claseManejadora']; $objClase = & IgepSession::damePanel($nombreClase); $objClase->regenerarInstancia(); //Creamos el objDatos $objClase->comunica = new IgepComunicacion($objClase->v_descCamposPanel); $objClase->comunica->data2Arrays(); $comunicaUsuario = new IgepComunicaUsuario($objClase->comunica,$objClase->v_preInsercionDatos,$objClase->v_listas); //Validamos los campos antes de saltar $validacionIgep = $objClase->comunica->checkDataTypes(); if ($validacionIgep!= '0'){ $objClase->showMensaje('IGEP-17',array($validacionIgep)); $actionForward = new ActionForward('gvHidraValidationError'); $actionForward->put('IGEPclaseManejadora',$nombreClase); return $actionForward; } //Obtenemos el objSalto if($str_accion == 'IgepSaltoVentana'){ $salto = new IgepSalto($nombreClase,$_REQUEST['idBotonSalto']); $resultadoSalto = $objClase->saltoDeVentana($comunicaUsuario, $salto); } else { $salto = IgepSession::damePanel('saltoIgep'); $salto->_setId($_REQUEST['idBotonSalto']); $resultadoSalto = $objClase->regresoAVentana($comunicaUsuario, $salto); } if($resultadoSalto==0){ //Guardamos datos del salto IgepSession::_guardaPanelIgep('saltoIgep',$salto); $actionForward = $actionMapping->get('IgepSaltoVentana'); //Si es una vuelta borramos el panel origen if($str_accion == 'IgepRegresoVentana') { IgepSession::borraPanel($nombreClase); $actionForward->put('IGEPaccionDestinoSalto',$salto->getDestinoVuelta()); } else $actionForward->put('IGEPaccionDestinoSalto',$salto->getDestinoIda()); } else{ $actionForward = new ActionForward('gvHidraValidationError'); $actionForward->put('IGEPclaseManejadora',$nombreClase); } break; case 'focusChanged': $this->comunica->construirArrayFocusChanged($actionForm); $this->focusChanged(); //Aqui tendremos dos opciones de return... de momento solo hay una //una para el error. No se recarga la pgina //otra para cuando todo ha ido bien. $actionForward = $actionMapping->get('IgepOperacionOculto'); break; case 'cambiarPanelDetalle': $nombreClaseMaestro = $_REQUEST['claseManejadora']; $nombreClaseDetalle = $_REQUEST['panelActivo']; $objClaseMaestro = & IgepSession::damePanel($nombreClaseMaestro); $objClaseMaestro->regenerarInstancia(); $objClaseMaestro->panelDetalleActivo = $nombreClaseDetalle; IgepSession::borraVariable($nombreClaseDetalle,'obj_ultimaConsulta'); $m_datos = $objClaseMaestro->getResultadoBusqueda(); $tupla[0] = $m_datos[$objClaseMaestro->int_filaActual]; $res = $objClaseMaestro->buildQueryDetails($tupla); $actionForward = $actionMapping->get('IgepOperacionOculto'); break; case 'defaultPrint': $nombreClase = $_REQUEST['claseManejadora']; $actuaSobre = $_REQUEST['actuaSobre']; $titulo = $_REQUEST['titulo']; $objClase = & IgepSession::damePanel($nombreClase); $objClase->regenerarInstancia(); if(!isset($actuaSobre)) $actuaSobre = 'tabla'; if($actuaSobre=='ficha') $data = $objClase->getResultadoEdicion(); else $data = $objClase->getResultadoBusqueda(); $num_columnas = count($data[0]); $nom_columnas = array_keys($data[0]); $total_registros = count($data); ob_end_clean(); ob_start(); $html = <<<cabecera <html> <head> <title>Impresin pgina - $titulo</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" href="igep/css/screen.css" type="text/css" media="screen" /> <link rel="stylesheet" href="igep/css/print.css" type="text/css" media="print" /> </head> cabecera; if($actuaSobre=='ficha') { $html.= "<body>\n"; $html.="<div class=\"boton\"><img src=\"igep/images/print.gif\"> <a href=\"javascript:print();\">Imprimir</a></div>\n"; $html.= "<table class=\"left\">\n"; $html.= "<tr>\n"; $html.="<td class=\"titulo\" colspan=\"2\">$titulo</td></tr>\n"; foreach($data as $index => $row) { $html.="<!-- Tantas filas como nmero de tuplas -->\n"; $html.="<!-- INI -->\n"; foreach($row as $name => $value) { $html.="<tr class=\"linea\">\n"; $html.="<td class=\"col_titulo_right\">"; if(empty($name)) $name = " "; else $name.=': '; $html.= $name; $html.="</td>"; $html.="<td class=\"col_left\">"; if(empty($value)) $value = " "; elseif(is_array($value)) $value = $value['seleccionado']; $html.=$value."<br/>"; $html.="</td>\n"; $html.="</tr>\n"; } $html.="<tr>"; $html.="<td class=\"pie\" colspan=\"2\">"; $html.= "<i>Registro ".(++$index)."</i>"; $html.="</td>\n"; $html.="</tr>\n"; $html.="<!-- FIN -->\n"; } //Contador $html.="<tr>\n"; $html.="<td class=\"pie\" colspan=\"$num_columnas\"><i>Total registros: $total_registros</i></td>\n"; $html.="</tr>\n"; $html.= "</table>\n"; $html.= "</body>\n"; $html.= "</html>\n"; } else { $html.= "<body>\n"; $html.="<div class=\"boton\"><img src=\"igep/images/print.gif\"> <a href=\"javascript:print();\">Imprimir</a></div>\n"; $html.= "<table class=\"center\">\n"; $html.= "<tr>\n"; $html.="<th colspan=\"$num_columnas\" class=\"titulo\">$titulo</th></tr>\n"; $html.="<tr>\n"; $html.="<!-- Tantas celdas como nmero de campos -->\n"; $html.="<!-- INI -->\n"; foreach($nom_columnas as $col) { if(empty($col)) $col = " "; $html.="<td class=\"col_titulo\">$col</td>\n"; } $html.="<!-- FIN -->\n"; $html.="</tr>\n"; foreach($data as $row) { $html.="<!-- Tantas filas como nmero de tuplas -->\n"; $html.="<!-- INI -->\n"; $html.="<tr class=\"linea\">\n"; foreach($row as $field) { if(empty($field)) $field = " "; elseif(is_array($field)) $field = $field['seleccionado']; $html.="<td class=\"col\">$field</td>\n"; } $html.="</tr>\n"; $html.="<!-- FIN -->\n"; } //Contador $html.="<tr>\n"; $html.="<td class=\"pie\" colspan=\"$num_columnas\"><i>Total registros: $total_registros</i></td>\n"; $html.="</tr>\n"; $html.= "</table>\n"; $html.= "</body>\n"; $html.= "</html>\n"; } print $html; die; break; case 'exportCSV': $nombreClase = $_REQUEST['claseManejadora']; $actuaSobre = $_REQUEST['actuaSobre']; $objClase = & IgepSession::damePanel($nombreClase); $objClase->regenerarInstancia(); if(!isset($actuaSobre)) $actuaSobre = 'tabla'; if($actuaSobre=='ficha') $data = $objClase->getResultadoEdicion(); else $data = $objClase->getResultadoBusqueda(); //Vaciamos la cache del navegador ob_end_clean(); ob_start(); $nombre_fich='listado-'.date('d-m-H-i-s'); $fecha_hoy=date('d/m/Y'); //Indicamos en el header que se trata de un csv header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename='.$nombre_fich.'.csv'); //Cabeceras $cabeceras = array_keys($data[0]); foreach($cabeceras as $col){ echo $col." "; } echo PHP_EOL; foreach($data as $row) { foreach($row as $field){ //Comprobacin de fechas if(is_object($field) and method_exists($field,'formatUser')) echo utf8_encode($field->formatUser()); //Comprobacin de listas elseif(is_array($field)) echo utf8_encode($field['seleccionado']); else //Quitamos retorno de carro echo utf8_encode(str_replace("\r\n",'',$field)); echo " "; } echo PHP_EOL; } //Vaciamos la cache ob_end_flush (); //Ponemos este die para que corte la ejecucin y no redireccione la pagina die; break; default: die('Error: La accin '.$str_accion.' no se reconoce.'); break; }//Fin switch return $actionForward; }// Fin de perform
object $comunica |
La instancia de IgepComunicacin para comunicarnos con la presentacin public
Definición en la línea 94 del archivo IgepAccionesGenericas.php.
$obj_errorNegocio |
Definición en la línea 87 del archivo IgepAccionesGenericas.php.
$obj_IgSmarty |
Definición en la línea 108 del archivo IgepAccionesGenericas.php.
object $obj_mensaje |
Variable que contendr el posible mensaje a enviar al panel. Tiene que ser de la clase IgepMensaje
Definición en la línea 101 del archivo IgepAccionesGenericas.php.