* 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. *

* * @version $Id: IgepComunicaIU.php,v 1.32 2010-02-03 11:22:49 afelixf Exp $ * @author David: * @author Keka: * @author Vero: * @author Raquel: * @author Toni: * @package gvHIDRA */ class IgepComunicaIU extends IgepComunicaUsuario { /* * Contiene el código JS que se va a ejecutar * @access private * @var string */ var $script; /* * Prefijo para obtener los campos adaptados * en pantalla * @access private * @var string */ var $prefijoAdaptacion; /* * Prefijo para obtener los campos adaptados * en pantalla * @access private * @var string */ var $sufijoAdaptacion; /* * Variable que contiene el nombre del campo que dispara la acción en el caso de las acciones de interfaz * @access private * @var string */ var $_campoDisparador; /** * Constructor. Recibe como parámetro una instancia viva de la clase * IgepComunicacion * * @access public * @param object $comunica */ 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]; } } /** * destinosAdaptados. 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); } /** * Método que 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; else return ($this->prefijoAdaptacion.$nombreCampo.$this->sufijoAdaptacion); } /** * Método que 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) { //Panel fil if($this->prefijoAdaptacion=='') return $nombreCampo; //Panel modo edi elseif($this->prefijoAdaptacion == 'cam___') return 'cam___'.$nombreCampo.$this->sufijoAdaptacion; //Panel modo ins else return 'hins___'.$nombreCampo.$this->sufijoAdaptacion; } /** * setValue método que fija el valor de un campo de texto en una accion de interfaz. * * @access public * @param string $nombreCampo Nombre del campo en la TPL * @param string $valor nuevo valor del campo * @return none */ public function setValue($campo, $valor, $parametroOperacion='') { //Recogemos el tipo $tipo = $this->comunica->descCampoPanel[$campo]['tipo']; //Recogemos la parte decimal (si exite) para adaptar la presentación $parteDecimal = $this->comunica->descCampoPanel[$campo]['parteDecimal']; $nombreDestino = $campo; if ($parametroOperacion == 'external') $campoDestino = $campo; else $campoDestino = $this->destinosAdaptados($campo); $valor = IgepComunicaUsuario::prepararPresentacion($valor, $tipo, $parteDecimal); $campoOrigen = $this->_campoDisparador; $this->script.= IgepSmarty::getJsSetCampoTexto($campoDestino, $nombreDestino, $campoOrigen, $valor); $this->script .= IgepSmarty::getJsSetEstadoModificado($campoDestino,$nombreDestino, $campoOrigen); } /** * setFocus método que fija el foco sobre el elemento elegiso en una accion de interfaz. * * @access public * @param string $nombreCampo Nombre del campo en la TPL * @return none */ public function setFocus($campo, $parametroOperacion='') { $nombreDestino = $campo; if ($parametroOperacion == 'external') { $campoDestino = $campo; } else { $campoDestino = $this->destinosAdaptados($campo); } $campoOrigen = $this->_campoDisparador; $this->script.= IgepSmarty::getJsSetFocus($campoDestino, $nombreDestino, $campoOrigen); }//Fin setFocus /** * setSrcImg método que fija el atributo src de una imagen * * @access public * @param string $nombreCampo Nombre del campo en la TPL * @param string $valor nuevo valor del campo * @return none */ public function setSrcImg($campo, $valor, $parametroOperacion='') { //Recogemos el tipo $tipo = $this->comunica->descCampoPanel[$campo]['tipo']; //Recogemos la parte decimal (si exite) para adaptar la presentación $parteDecimal = $this->comunica->descCampoPanel[$campo]['parteDecimal']; $nombreDestino = $campo; if ($parametroOperacion == 'external') $campoDestino = $campo; else $campoDestino = $this->destinosAdaptados($campo); $valor = IgepComunicaUsuario::prepararPresentacion($valor, $tipo, $parteDecimal); $campoOrigen = $this->_campoDisparador; $this->script.= IgepSmarty::getJsSetSrcImg($campoDestino, $nombreDestino, $campoOrigen, $valor); $this->script .= IgepSmarty::getJsSetEstadoModificado($campoDestino,$nombreDestino, $campoOrigen); } /** * setIcon método que fija el icono de un CWLabel en una accion de interfaz. * * @access public * @param string $nombreCampo Nombre del campo en la TPL * @param string $valor nuevo valor del campo * @return none */ public function setIcon($campo, $valor, $parametroOperacion='') { if ($parametroOperacion == 'external') $campoDestino = $campo; else $campoDestino = $this->destinosAdaptados($campo); $this->script.= IgepSmarty::getJsSetIcon($campoDestino, $valor); } /** * setFilterRules método que fija la reglas a aplicar en CWFilter. * * @access public * @param string $nombreFiltro Nombre del filtro en la TPL * @param string $rule regla a fijar * @return none */ public function setFilterRules($campo, $rule, $parametroOperacion='') { if ($parametroOperacion == 'external') $campoDestino = $campo; else $campoDestino = $this->destinosAdaptados($campo); $this->script.= IgepSmarty::getJsSetFilterRules($campoDestino, $rule); } /** * setLabelClass método que fija el class(css) de un CWLabel en una accion de interfaz. * * @access public * @param string $nombreCampo Nombre del campo en la TPL * @param string $valor nuevo valor del campo * @return none */ public function setLabelClass($campo, $valor, $parametroOperacion='') { if ($parametroOperacion == 'external') $campoDestino = $campo; else $campoDestino = $this->destinosAdaptados($campo); $this->script.= IgepSmarty::getJsSetLabelClass($campoDestino, $valor); $this->script .= IgepSmarty::getJsSetEstadoModificado($campoDestino); } /** * setSelected fija 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.

* * @access public * @param string $campo Nombre del campo * @param string $valor Valor del campo * @return none */ public function setSelected($campo, $valor, $parametroOperacion='') { $campoDestino = $this->destinosAdaptados($campo); $this->script.= IgepSmarty::getJsSetSelected($campoDestino, $valor); $this->script .= IgepSmarty::getJsSetEstadoModificado($campoDestino); } /** * setList cambia 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. *

* * @access public * @param string $campo nombre del componente lista * @param string $objListaStruc estructura de la lista * @return none */ public function setList($campo, $objListaStruc, $parametroOperacion= '') { $v_lista = $objListaStruc->getEstructuraListaIgep(); $campoDestino = $this->destinosAdaptados($campo); $this->script.= IgepSmarty::getJsLista($campoDestino, $v_lista); $this->script .= IgepSmarty::getJsSetEstadoModificado($campoDestino); } /** * setChecked metodo que permite modificar el valor del un check en una accion de interfaz. * * @access public * @param string name nombre del check * @param boolean check Checked si o no * @return none */ public function setChecked($name, $check, $parametroOperacion='') { $idCheck = $this->getCheckName($name); $hiddenName = $this->getCheckHiddenName($name); //Seleccionamos el valor dependiendo si esta seleccionado $desc = $this->comunica->descCampoPanel[$name]; ($check)?$value=$desc['valueChecked']:$value=$desc['valueUnchecked']; $this->script.= IgepSmarty::getJsSetCheck($idCheck, $check, $hiddenName, $value); } /** * setVisible metodo que permite modificar la visibilidad de un componente en una accion de interfaz. * * @access public * @param string $name nombre del componente * @param boolean $valor booleano que indica si se quiere ver o no. * @return none */ public function setVisible($campo, $valor) { //Obtenemos el tipo de widget $desc = $this->comunica->descCampoPanel[$campo]; if($desc['component'] == 'CheckBox') $campoDestino = $this->getCheckName($campo); else $campoDestino = $this->destinosAdaptados($campo); $this->script.= IgepSmarty::getJsSetVisible($campoDestino, $valor); } /** * setEneble metodo que permite modificar la accesibilidad de un componente en una accion de interfaz. * * @access public * @param string $name nombre del componente * @param boolean $valor booleano que indica si es editable o no * @return none */ public function setEnable($campo, $valor) { //Obtenemos el tipo de widget $desc = $this->comunica->descCampoPanel[$campo]; $tipoComponente = null; $campoDestino = $this->destinosAdaptados($campo); if ($desc['component'] == 'CheckBox') { $tipoComponente = 'CheckBox'; $campoDestino = $this->getCheckName($campo); } else if ($desc['radio']==true) { $tipoComponente = 'Radio'; } $this->script.= IgepSmarty::getJsSetEnable($campoDestino, $valor, $tipoComponente); } /** * setTabIndex metodo que permite modificar el tabindex de un componente de pantalla de forma dinamica. * * @access public * @param string $name nombre del componente * @param boolean $value valor asignado * @return none */ public function setTabIndex($name, $value) { $campoDestino = $this->destinosAdaptados($name); $this->script.= IgepSmarty::getJsSetOrder($campoDestino, $value); } /** * setBttlState Establece el estado del boton Tooltip correspondiente a activado (true) o desactivado (false) * Botón situado en la barra superior del panel * * @access public * @param String $panel 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 * @return void */ public function setBttlState($idPanel, $nameBttl, $on) { $this->script.=IgepSmarty::getJsSetBttlState($idPanel, $nameBttl, $on); } /** * _setCampoDisparador método interno para fijar el nombre del campo que dispara la acción en las acciones de interfaz * * @access private * @param string $nombreCampo * @return none */ function _setCampoDisparador($nombreCampo) { $this->_campoDisparador = $nombreCampo; } /** * getTriggerField método para obtener el nombre del campo que dispara la acción en las acciones de interfaz * * @access public * @return string */ public function getTriggerField(){ return $this->_campoDisparador; } /** * posicionarEnFicha permite cambiar la ficha activa * * @access private * @return none */ 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); } /** * getActiveMode obtenemos 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.
  • *
  • edi : Edición o modo de ficha.
  • *
* @access public * @return string */ public function getActiveMode() { return $this->comunica->damePanelActivo(); } //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; } //REVIEW: Toni Para poder conseguir que las acciones de negocio tengan acceso a mapeos diferentes a los ya especificados por gvHidra public function getForward($name){ die('Error: no se puede hacer uso de esta funcionalidad desde una acción de interfaz.'); } } ?>