El framework proporcionará una instancia de esta clase en todas las acciones de interfaz. * Mediante los métodos que proporciona el programador podrá hacer operaciones sobre la IU * y el FW se encargará de traducirlas en el Javascript pertinente.

* * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License v.2 * @version $Id: IgepComunicaIU.php,v 1.33 2018-08-11 11:22:49 belenguer_jor Exp $ * @author David Pascual * @author Keka Bermejo * @author Vero Navarro * @author Raquel Borjabad * @author Toni Felix * @author Jorge Belenguer * * @package gvHidra */ class IgepComunicaIU extends IgepComunicaUsuario { /** * Contiene el código JS que se va a ejecutar. * @access protected * @var string */ protected $script; /** * Prefijo para obtener los campos adaptado sen pantalla. * @access protected * @var string */ protected $_prefijoAdaptacion; /** * Prefijo para obtener los campos adaptados en pantalla. * @access protected * @var string */ protected $_sufijoAdaptacion; /** * Variable que contiene el nombre del campo que dispara la acción en el caso de las acciones de interfaz * @access protected * @var string */ protected $_campoDisparador; /** * Constructor. Recibe como parámetro una instancia viva de la clase * IgepComunicacion. * * @param IgepComunicacion $comunica * @param array $datosPreinsertados * @param gvHidraList[] $listasPanel * @param string $campoOrigen */ public function __construct( & $comunica, & $datosPreinsertados, & $listasPanel, $campoOrigen ) { parent::__construct( $comunica, $datosPreinsertados, $listasPanel ); $this->script = ''; //Almacenamos los destinosAdaptados en un array indexado por el nombre del campo $this->_prefijoAdaptacion = ''; $this->_sufijoAdaptacion = ''; $auxDestino = $campoOrigen; $v_auxDestino = explode( '___', $auxDestino, 3 ); if( count($v_auxDestino) > 2 ) { $this->_prefijoAdaptacion = "{$v_auxDestino[0]}___"; $this->_sufijoAdaptacion = "___{$v_auxDestino[2]}"; } } //Fin del constructor /** * Devuelve el nombre del campo en formato HTML. * * @access private * @param string $nombreCampo * @return string */ private function destinosAdaptados( $nombreCampo ) { return( $this->_prefijoAdaptacion . $nombreCampo . $this->_sufijoAdaptacion ); } //Fin de destinosAdaptados /** * Devuelve el nombre de un check en HTML. * * @access private * @param string $nombreCampo Nombre del campo. * @return string Devuelve el id del check en formato HTML. */ private function getCheckName( $nombreCampo ) { //Panel fil /*if($this->_prefijoAdaptacion=='') return 'chkbfil_'.$nombreCampo; //Panel modo edi elseif($this->_prefijoAdaptacion == 'cam___') return 'ccam___'.$nombreCampo.$this->_sufijoAdaptacion; //Panel modo ins else return 'cins___'.$nombreCampo.$this->_sufijoAdaptacion;*/ if( $this->_prefijoAdaptacion == '') { return $nombreCampo; } return( $this->_prefijoAdaptacion . $nombreCampo . $this->_sufijoAdaptacion ); } //Fin de getCheckName /** * Devuelve el nombre del hidden de un check. * * @access private * @param string $nombreCampo Nombre del campo. * @return string Devuelve el campo en formato HTML. */ private function getCheckHiddenName( $nombreCampo ) { if( $this->_prefijoAdaptacion == '' ) { //Panel fil return $nombreCampo; } elseif( $this->_prefijoAdaptacion == 'cam___' ) { //Panel modo edi return "cam___{$nombreCampo}{$this->_sufijoAdaptacion}"; } else { //Panel modo ins return "hins___{$nombreCampo}{$this->_sufijoAdaptacion}"; } } //Fin de getCheckHiddenName /** * Establece el valor de un campo de texto en una accion de interfaz. * * @param string $nombreCampo Nombre del campo en la TPL. * @param string $valor nuevo valor del campo. * @param string $parametroOperacion (Opcional) El tipo de operación: insertar, borrar, actualizar, ... hay que dar una lista fija y clara. */ public function setValue( $nombreCampo, $valor, $parametroOperacion='' ) { //Recogemos el tipo $tipo = $this->comunica->descCampoPanel[$nombreCampo]['tipo']; //Recogemos la parte decimal (si exite) para adaptar la presentación $parteDecimal = $this->comunica->descCampoPanel[$nombreCampo]['parteDecimal']; $nombreDestino = $nombreCampo; $campoDestino = $nombreCampo; if( $parametroOperacion != 'external' ) { $campoDestino = $this->destinosAdaptados( $nombreCampo ); } $valor = IgepComunicaUsuario::prepararPresentacion( $valor, $tipo, $parteDecimal ); $campoOrigen = $this->_campoDisparador; $this->script .= IgepSmarty::getJsSetCampoTexto( $campoDestino, $nombreDestino, $campoOrigen, $valor ); } // Fin de setValue /** * Establece el foco sobre el elemento elegido en una accion de interfaz. * * @param string $nombreCampo Nombre del campo en la TPL. * @param string $parametroOperacion (Opcional) El tipo de operación: insertar, borrar, actualizar, ... hay que dar una lista fija y clara. */ public function setFocus( $nombreCampo, $parametroOperacion='' ) { $nombreDestino = $nombreCampo; $campoDestino = $nombreCampo; if( $parametroOperacion != 'external' ) { $campoDestino = $this->destinosAdaptados( $nombreCampo ); } $campoOrigen = $this->_campoDisparador; $this->script .= IgepSmarty::getJsSetFocus( $campoDestino, $nombreDestino, $campoOrigen ); } //Fin de setFocus /** * Establece el atributo src de una imagen. * * @param string $nombreCampo Nombre del campo en la TPL. * @param string $valor Nuevo valor del campo. * @param string $parametroOperacion (Opcional) El tipo de operación: insertar, borrar, actualizar, ... hay que dar una lista fija y clara. */ public function setSrcImg( $nombreCampo, $valor, $parametroOperacion='' ) { //Recogemos el tipo $tipo = $this->comunica->descCampoPanel[$nombreCampo]['tipo']; //Recogemos la parte decimal (si exite) para adaptar la presentación $parteDecimal = $this->comunica->descCampoPanel[$nombreCampo]['parteDecimal']; $nombreDestino = $nombreCampo; $campoDestino = $nombreCampo; if( $parametroOperacion != 'external' ) { $campoDestino = $this->destinosAdaptados( $nombreCampo ); } $valor = IgepComunicaUsuario::prepararPresentacion( $valor, $tipo, $parteDecimal ); $campoOrigen = $this->_campoDisparador; $this->script .= IgepSmarty::getJsSetSrcImg( $campoDestino, $nombreDestino, $campoOrigen, $valor ); $this->script .= IgepSmarty::getJsSetEstadoModificado( $campoDestino, $nombreDestino, $campoOrigen ); } //Fin de setSrcImg /** * Establece el icono de un CWLabel en una accion de interfaz. * * @param string $nombreCampo Nombre del campo en la TPL. * @param string $valor Nuevo valor del campo. * @param string $parametroOperacion (Opcional) El tipo de operación: insertar, borrar, actualizar, ... hay que dar una lista fija y clara. */ public function setIcon( $nombreCampo, $valor, $parametroOperacion='' ) { $campoDestino = $nombreCampo; if( $parametroOperacion != 'external' ) { $campoDestino = $this->destinosAdaptados( $nombreCampo ); } $this->script .= IgepSmarty::getJsSetIcon( $campoDestino, $valor ); } //Fin de setIcon /** * Establece el class(css) de un CWLabel en una accion de interfaz. * * @param string $nombreCampo Nombre del campo en la TPL. * @param string $valor Nuevo valor del campo. * @param string $parametroOperacion (Opcional) El tipo de operación: insertar, borrar, actualizar, ... hay que dar una lista fija y clara. */ public function setLabelClass( $nombreCampo, $valor, $parametroOperacion='' ) { $campoDestino = $nombreCampo; if( $parametroOperacion != 'external' ) { $campoDestino = $this->destinosAdaptados( $nombreCampo ); } $this->script .= IgepSmarty::getJsSetLabelClass( $campoDestino, $valor ); $this->script .= IgepSmarty::getJsSetEstadoModificado( $campoDestino ); } //End de setLabelClass /** * Establece el valor de una lista en una acción de interfaz. * *

Este metodo se debe utilizar si se quiere cambiar el valor seleccionado de una lista.

* * @param string $nombreCampo Nombre del campo. * @param string $valor Valor del campo. * @param string $parametroOperacion (Opcional) El tipo de operación: insertar, borrar, actualizar, ... hay que dar una lista fija y clara. */ public function setSelected( $nombreCampo, $valor, $parametroOperacion='' ) { $campoDestino = $this->destinosAdaptados( $nombreCampo ); $this->script .= IgepSmarty::getJsSetSelected( $campoDestino, $valor ); $this->script .= IgepSmarty::getJsSetEstadoModificado( $campoDestino ); } //End de setSelected /** * Establece el contenido de una lista en una accion de interfaz. * *

Este metodo se debe utilizar si se quiere cambiar el contenido entero de una lista. * Suele venir combinado con la obtencion de la lista con el metodo getList. *

* * @param string $nombreCampo Nombre del componente lista. * @param gvHidraList $objListaStruc Estructura de la lista. * @param string $parametroOperacion (Opcional) El tipo de operación: insertar, borrar, actualizar, ... hay que dar una lista fija y clara. */ public function setList( $nombreCampo, $objListaStruc, $parametroOperacion= '' ) { $v_lista = $objListaStruc->getEstructuraListaIgep(); $campoDestino = $this->destinosAdaptados( $nombreCampo ); $this->script .= IgepSmarty::getJsLista( $campoDestino, $v_lista ); //$this->script .= IgepSmarty::getJsSetEstadoModificado( $campoDestino ); } //Fin de setList /** * Estalece el valor del un check en una accion de interfaz. * * @param string $nombreCampo Nombre del campo check. * @param boolean $check Checked sí o no. */ public function setChecked( $nombreCampo, $check, $parametroOperacion='' ) { $idCheck = $this->getCheckName( $nombreCampo ); $hiddenName = $this->getCheckHiddenName( $nombreCampo ); //Seleccionamos el valor dependiendo si esta seleccionado $desc = $this->comunica->descCampoPanel[$idCheck]; $value = ($check ? $desc['valueChecked'] : $desc['valueUnchecked']); $this->script.= IgepSmarty::getJsSetCheck( $idCheck, $check, $hiddenName, $value ); } //Fin de setChecked /** * Establece la visibilidad de un componente en una accion de interfaz. * * @param string $nombreCampo Nombre del campo/componente. * @param boolean $valor Indica si se quiere ver o no. */ public function setVisible( $nombreCampo, $valor ) { //Obtenemos el tipo de widget $desc = $this->comunica->descCampoPanel[$nombreCampo]; if( $desc['component'] == 'CheckBox' ) { $campoDestino = $this->getCheckName( $nombreCampo ); } else { $campoDestino = $this->destinosAdaptados( $nombreCampo ); } $this->script .= IgepSmarty::getJsSetVisible( $campoDestino, $valor ); } //Fin de setVisible /** * setEnable metodo que permite modificar la accesibilidad de un componente en una accion de interfaz. * * @param string $nombreCampo Nombre del campo/componente. * @param boolean $valor Indica si es editable o no. */ public function setEnable( $nombreCampo, $valor ) { //Obtenemos el tipo de widget $desc = $this->comunica->descCampoPanel[$nombreCampo]; $tipoComponente = null; $campoDestino = $this->destinosAdaptados($nombreCampo); if ($desc['component'] == 'CheckBox') { $tipoComponente = 'CheckBox'; $campoDestino = $this->getCheckName( $nombreCampo ); } elseif( $desc['radio'] ) { $tipoComponente = 'Radio'; } $this->script .= IgepSmarty::getJsSetEnable( $campoDestino, $valor, $tipoComponente ); } //Fin de setEnable /** * Establece si un botón es dependiente del estado del panel o no * * @param string $nombreCampo Nombre del campo botón. * @param boolean $valor Booleano que indica si es dependiente o no. */ public function setDependPanel( $nombreCampo, $valor ) { $campoDestino = $this->destinosAdaptados( $nombreCampo ); $this->script .= IgepSmarty::getJsSetDependPanel( $campoDestino, $valor ); } //Fin de setDependPanel /** * Establece el tabindex de un componente de pantalla de forma dinámica. * * @param string $nombreCampo Nombre del campo/componente. * @param boolean $value Valor asignado. */ public function setTabIndex( $nombreCampo, $value ) { $campoDestino = $this->destinosAdaptados( $nombreCampo ); $this->script .= IgepSmarty::getJsSetOrder( $campoDestino, $value ); } //Fin de setTabIndex /** * Establece el estado del boton Tooltip correspondiente a activado (true) o desactivado (false). * * @param string $idPanel Indica el panel sobre el que se sitúa el botonTooltip ||| * @param string $nameBttl Nombre del boton tooltip. * @param boolean $on True para activar, false para desahabilitar. */ public function setBttlState( $idPanel, $nameBttl, $on ) { $this->script .= IgepSmarty::getJsSetBttlState( $idPanel, $nameBttl, $on ); } //Fin de setBttlState /** * Establece el nombre del campo que dispara la acción en las acciones de interfaz. * * @param string $nombreCampo Nombre del campo/componente. */ public function setTriggerField( $nombreCampo ) { $this->_campoDisparador = $nombreCampo; } //Fin de setTriggerField /** * Devuelve el nombre del campo que dispara la acción en las acciones de interfaz. * * @return string */ public function getTriggerField() { return $this->_campoDisparador; } //return getTriggerField /** * Establece la posición (índice) de la ficha activa * * @param integer $indiceFila */ public function posicionarEnFicha( $indiceFila ) { if( $this->_sufijoAdaptacion != '' ) { $v_auxUno = explode( '___', $this->_sufijoAdaptacion ); $v_auxDos = explode( '_', $v_auxUno[1] ); $this->_sufijoAdaptacion = "___{$v_auxDos[0]}_{$indiceFila}"; } $this->comunica->posicionarEnTupla( $indiceFila ); } //Fin de posicionarEnFicha /** * Devuelve el modo activo para una acción de interfaz dada. * *

Los modos posibles son

*
    *
  • fil : Filtro o modo de búsqueda ,
  • *
  • lis : Listado o modo de tabla ,
  • *
  • strong>edi : Edición o modo de ficha .
  • *
* @return string */ public function getActiveMode() { return $this->comunica->getPanel(); } //Fin de getActiveMode /** * Método getScript */ // //PROVISIONAL // public function getScript() { if(! empty($this->script) ) { var_dump( libxml_use_internal_errors(true) ); $dom = new DOMDocument(); @$dom->loadHTML( $this->script ); $script = @$dom->getElementsByTagName( 'script' ); $remove = array(); foreach( $script as $item ) { $remove[] = $item; } if( count($remove) > 0 ) { foreach( $remove as $item ) { $cadenaBorrable = $item->nodeValue; $this->script=str_replace( $cadenaBorrable, '', $this->script ); } $this->script = str_replace( '', '', $this->script ); $this->script = str_replace( '', '', $this->script ); } libxml_clear_errors(); } return $this->script; } //Fin de getScript /** * {@inheritDoc} * @see IgepComunicaUsuario::getForward() */ public function getForward( $name ) { die( 'Error: no se puede hacer uso de esta funcionalidad desde una acción de interfaz.' ); } //Fin de getForward } //End IgepComunicaIU