* @author Vero: * @author Toni: * @author Jorge Belenguer * * @package gvHidra **/ class IgepSmarty { public $preScript; public $v_eventosPesos; public $v_eventos; public $postScript; public $scriptLoadIgep; public $scriptLoadUsuario; public $scriptUnLoadIgep; public $scriptUnLoadUsuario; public function __construct() { $this->IgepSmarty(); } //FIN constructor public function IgepSmarty() { $this->preScript=''; $this->postScript=''; $this->v_eventos = array(); $this->v_eventosPesos = array(); $configuration = ConfigFramework::getConfig(); $customDirname = $configuration->getCustomDirName(); /*define("APP_PATH",''); define("IMG_PATH_CUSTOM",APP_PATH.'custom/'.$customDirname.'/images/');*/ } //FIN constructor public function addPreScript($script) { $this->preScript .= $script."\n"; } //FIN addPreScript public function getPreScript($conCabecera=true) { $retorno =''; if ($this->preScript!='') { if ($conCabecera) { $retorno.="\n"; } else { $retorno.= $this->preScript; } } return ($retorno); } //FIN getPreScript public function addPostScript($script) { $this->postScript .= $script."\n"; } //FIN addPostScript public function getPostScript($conCabecera=true) { $retorno =''; if ($this->postScript!='') { if ($conCabecera) { $retorno.="\n"; } else { $retorno.=$this->postScript; } } return($retorno); } //FIN getPostScript /** * Esta función se encarga de almacenar el script que se ejecutará en el evento onLoad. * @param string $script String el codigo que se quiere añadir al evento OnLoad * @param string $escIni Indica el tipo de Script. Por definición de IGEP tenemos dos tipos: IGEP y USUARIO. * El primero corresponde con los scripts puntuales que IGEP tiene que inyectar en la ventana. El segundo * responde a los scripts que el usuario quiere que se carguen en la ventana durante toda su ejecución. * @access public */ public function addScriptLoad($script, $tipo='IGEP') { if($tipo=='USUARIO') { $this->scriptLoadUsuario .= $script; } else { $this->scriptLoadIgep .= $script; } }//Fin addScriptLoad public function addScriptUnLoad($script, $tipo='IGEP') { if($tipo=='USUARIO') { $this->scriptUnLoadUsuario .= $script; } else { $this->scriptUnLoadIgep .= $script; } }//Fin addScriptUnLoad public function getScriptLoad($conCabecera=true) { $script=''; if (($this->scriptLoadUsuario!='') or ($this->scriptLoadIgep!='')) { if ($conCabecera) { $script .="\n"; } else $script .= $this->scriptLoadIgep."\n".';'.$this->scriptLoadUsuario; $this->scriptLoadIgep = ''; return $script; } else return ''; }//Fin de getScriptLoad public function getScriptUnLoad($conCabecera=true) { $script=''; if (($this->scriptUnLoadUsuario!='') or ($this->scriptUnLoadIgep!='')) { if ($conCabecera) { $script .="\n"; } else $script .= $this->scriptUnLoadIgep."\n".';'.$this->scriptUnLoadUsuario; $this->scriptUnLoadIgep = ''; return $script; } else { return ''; } }//Fin de getScriptLoad /** * _validaEvento: Esta función se asegura de que el evento Javascript exista y este correctamente escrito * @param string $evento Cadena de texto con el nombre del evento * @access private */ public function _validaEvento(&$evento) { $v_eventos = array ( 'onfocus' => 'onFocus', 'onblur' => 'onBlur', 'onchange' => 'onChange', 'onabort' => 'onAbort', 'onclick' => 'onClick', 'ondblclick' => 'onDblClick', 'ondragdrop' => 'onDragDrop', 'onerror' => 'onError', 'onfocus' => 'onFocus', 'onkeydown' => 'onKeyDown', 'onkeypress' => 'onKeyPress', 'onkeyup' => 'onKeyUp', 'onload' => 'onLoad', 'onmousedown' => 'onMouseDown', 'onmousemove' => 'onMouseMove', 'onmouseout' => 'onMouseOut', 'onmouseover' => 'onMouseOver', 'onmouseup' => 'onMouseUp', 'onmove' => 'onMove', 'onresize' => 'onResize', 'onreset' => 'onReset', 'onselect' => 'onSelect', 'onsubmit' => 'onSubmit', 'onunload' => 'onUnLoad' ); if (array_key_exists(trim(strtolower($evento)), $v_eventos)) { $evento = $v_eventos[trim(strtolower($evento))]; return true; } else { $evento ='EVENTOINEXISTENTE'; return false; } } /** * addAccionEvento: Esta función registra una llamada a una función * javaScript en un evento determinado, opcionalmente puede introducirse * "importancia" o peso que servira para ordenar las distintas invocaciones * asociadas a un mismo evento * @param string $evento Cadena de texto con el nombre del Evento * @param string $script Cadena de texto con el nombre del Evento * @param int $pesoAccion Importancia o peso del script. Ordena los scrips asociados a un evento * @access public */ public function addAccionEvento($evento, $script, $pesoAccion=-1) { if (!$this->_validaEvento($evento)) die ('Error JAVASCRIPT, evento '.$evento.' inexistente.'); if ($pesoAccion== -1) { if (!isset($this->v_eventos[$evento])) { $this->v_eventos[$evento] = array(); } else if (is_array($this->v_eventos[$evento])) { array_push($this->v_eventos[$evento], $script); } } else { while (isset($this->v_eventosPesos[$evento][$pesoAccion])) { ++$pesoAccion; } $this->v_eventosPesos[$evento][$pesoAccion] = $script; } } //FIN addAccionEvento public function _getAccion($nombreEvento, $v_Scripts) { $script=' '; if (is_array($v_Scripts) ) { foreach($v_Scripts as $accion) { $script.= $accion.';'; } //Añadimos la comprobacion de estado, si soy READONLY no disparo acciones: $iniScriptEstado = "if (this.readOnly != true) {"; $script = $nombreEvento.'="javascript:'.$iniScriptEstado.$script.'};" '; } return($script); } //FIN _getAccion public function getAcciones() { $script = ' '; $v_eventosFinal = array(); foreach($this->v_eventosPesos as $evento=>$vScriptPesos) { krsort($vScriptPesos); $v_eventosFinal[$evento] = $vScriptPesos; } foreach($this->v_eventos as $evento=>$valor) { foreach($valor as $scriptEjecutable){ if(empty($v_eventosFinal[$evento])) { $v_eventosFinal[$evento] = array(); } array_push($v_eventosFinal[$evento], $scriptEjecutable); } } $numEventos = count($v_eventosFinal); if ($numEventos>0) $v_nombreEvento = array_keys($v_eventosFinal); for($i=0; $i<$numEventos; $i++) { $nombreEvento = $v_nombreEvento[$i]; $script.=$this->_getAccion($nombreEvento,$v_eventosFinal[$nombreEvento]); } return($script); } //FIN getAcciones /** * escapeIgep: Funcion para sustituir carácteres especiales. * La funcion sustituye los carácteres problemáticos por una cadena * formada por un prefijo ($escIni), la raiz (letra de representación * del carácter) y un sufijo ($escFin) * Los carácteres a sustituir son: * \b Backspace raíz: b * \f Form feed raíz: f * \r Retorno de carro raíz: r * \n Linea Nueva raíz: n * \t Tabulador raíz: t * \' Comilla simple raíz: cs * \" Comilla doble raíz: cd * \\ Contrabarra raíz: cb * * La funcion antagónica es desescapeIGEP. * Existen funciones similares en javascript para poder enviar * o recibir cadenas problemáticas en entre los dos lenguajes * @access public * @param string $cadena String donde se realiza el reemplazo * @param string $escIni Prefijo de sustitución para el caracter * @param string $escFin Sufijo de sustitución para el caracter */ public static function escapeIGEP(&$cadena, $escIni="!_", $escFin="_!") { $cadena = str_replace("\n", $escIni.'n'.$escFin, $cadena); $cadena = str_replace("'", $escIni.'cs'.$escFin, $cadena); $cadena = str_replace("\"", $escIni.'cd'.$escFin, $cadena); $cadena = str_replace("\\", $escIni.'cb'.$escFin, $cadena); return($cadena); } //FIN escapeIGEP /** * desescapeIgep: Funcion para restablecer los carácteres especiales. * La funcion restablece los carácteres problemáticos de una cadena donde * se ha llevado acabo una sustituyción especial de escapeIgep() * Los carácteres remplazados son: * \b Backspace raíz: b * \f Form feed raíz: f * \r Retorno de carro raíz: r * \n Linea Nueva raíz: n * \t Tabulador raíz: t * \' Comilla simple raíz: cs * \" Comilla doble raíz: cd * \\ Contrabarra raíz: cb * * La funcion antagónica es escapeIGEP. * Existen funciones similares en javascript para poder enviar * o recibir cadenas problemáticas en entre los dos lenguajes * * @access public * @param string $cadena String donde se realiza el reemplazo * @param string $escIni Prefijo de sustitución para el caracter * @param string $escFin Sufijo de sustitución para el caracter */ public function desescapeIGEP(&$cadena, $escIni="!_", $escFin="_!") { $cadena = str_replace($escIni.'n'.$escFin, "\n", $cadena); $cadena = str_replace($escIni.'cs'.$escFin, "'", $cadena); $cadena = str_replace($escIni.'cd'.$escFin, "\"", $cadena); $cadena = str_replace($escIni.'cb'.$escFin, "\\", $cadena); return($cadena); } //FIN escapeIGEP /** * Método que genera el javascript para actualizar un componente CWCheckBox desde una acción de interfaz. * @param string idCheck nombre del check * @param boolean check Checked si o no * @param string hiddenName Nombre del hidden creado por el CWCheckBox * @param string value Valor del si o no * @return string cadena de Javascript */ public static function getJsSetCheck($idCheck, $check, $hiddenName, $value, $claseM = '') { if ($check == '') $check = 0; $cadenaJs = << $idCheck | clase manejadora $claseM'); var claseM = '$claseM'; if (claseM == '') { var objCheck = $('[id=$idCheck]'); } else { var objCheck = $('[data-gvhclasemanejadora='+claseM+'][id=$idCheck]'); } objCheck.prop('checked',$check); objCheck.trigger('change'); jquery; return $cadenaJs; } /** * IgepSmarty::getJsOpenWindow * * @param string $path Ruta a utilizar en la ventana emergente. * @return string */ public static function getJsOpenWindow ($path, $width = '', $height = '') { $x = rand (1, 10000); $nomVentana = "ventana" . $x; $cadenaJs = <<< js gvh.IgepSmarty.getJsOpenWindow ('{$path}', '{$nomVentana}', '$width', '$height'); js; return $cadenaJs; } /** * IgepSmarty::getJsSetPasswordType * * @param string $path Ruta a utilizar en la ventana emergente. * @return string */ public static function getJsSetPasswordType ($field, $value, $claseM) { if (($value == 1) || ($value)) { $cadenaJs = <<< js gvh.IgepSmarty.getJsSetPasswordType('{$field}', false); js; } else { $cadenaJs = <<< js gvh.IgepSmarty.getJsSetPasswordType('{$field}', true); js; } return $cadenaJs; } /** * IgepSmarty::getJsSetUnSelected * * @access * @param * @return */ public static function getJsSetUnSelected($campoDestino, $claseM = '') { $cadenaJs = << 0) { campoDestino.removeClass(); campoDestino.addClass(newVal); } jquery; return $cadenaJs; } /** * IgepSmarty::getJsSetIcon * * @access * @param * @return */ public static function getJsSetIcon($campoDestino, $valor='', $claseM='') { $valueEsc = '"'.IgepSmarty::escapeIGEP($valor).'"'; $cadenaJs = << 0) { campoDestino.removeClass(); campoDestino.addClass(newVal); } jquery; return $cadenaJs; } /** * IgepSmarty::getJsSetFilterRules * * @access * @param * @return */ public static function getJsSetFilterRules($campoDestino, $claseM, $rule) { //IgepDebug::setDebug(DEBUG_USER, "
getJsSetFilterRules ".print_r($rule,true)."
"); $cadenaJs = << 0) { var objElemento = $('#$campoDestino'); var panel = objElemento.attr('data-gvhPanelOn'); // console.info('txt'+panel+'_$campoDestino con valor $valor'); var label = 'txt'+panel+'_$campoDestino'; $('#'+label).text('$valor'); } else { gvh.showConsoleMsg('error','el campo $campoDestino no existe'); } jquery; return $cadenaJs; } /** * IgepSmarty::getJsSetCampoTexto * * @access * @param * @return */ public static function getJsSetCampoTexto($campoDestino, $nombreDestino, $campoOrigen, $claseM='', $valor='',$valueIcon='') { $valueEsc = html_entity_decode($valor); $valueEsc = '"'.IgepSmarty::escapeIGEP($valueEsc).'"'; $buttonInfo = 'infImg_'.$campoDestino; $buttonInfo = $campoDestino; $txtMsg = 'txtMsg_'.$nombreDestino; $cadenaJs = << 0) { var idRadio = $('input:radio[name=$campoDestino][value='+newVal+']').attr('id'); var objElemento = $('#'+idRadio); } } else { var objElemento = $('[data-gvhclasemanejadora=$claseM][id=$campoDestino]'); var radio = $('input:radio[data-gvhclasemanejadora=$claseM][name=$campoDestino]'); if (radio.length > 0) { var idRadio = $('input:radio[data-gvhclasemanejadora=$claseM][name=$campoDestino][value='+newVal+']').attr('id'); var objElemento = $('#'+idRadio); } } var fieldLength = objElemento.length; var txtMsgLength = $('#$txtMsg'+'[data-gvhclasemanejadora=$claseM]').length; if (((fieldLength > 0) || (radio.length > 0)) && (txtMsgLength <= 0)) { var plugin = objElemento.attr('data-gvhcwsource'); //console.info('campo: $campoDestino | plugin: '+plugin+' | clase manejadora: $claseM'); switch(plugin) { case 'cwhtml': // REDMINE #22983 Actualizar contenido HTML objElemento.empty(); objElemento.append(newVal); gvh.changeField(objElemento, newVal); break; case 'cwinformation': gvh.semaphoreEnqueue ( { id: 'change html' , callback: function() { objElemento.html(newVal); } } ); break; case 'cwrichareatexto': objElemento.parent().parent().find(".jqte_editor").html(newVal); objElemento.parent().parent().find(".jqte_editor").jqteVal(newVal); objElemento.val(newVal); gvh.changeField(objElemento, newVal); break; case 'cwlabel': objElemento.text(newVal); gvh.changeField(objElemento, newVal); break; case 'cwarbol': gvh.setNodeByKey('$campoDestino',$valueEsc); break; case 'cwbotontooltip': var funcion = objElemento.attr('data-gvhFunction'); if (funcion == 'url') { objElemento.attr('data-gvhdestino',newVal); gvh.changeField(objElemento, newVal); } else { gvh.showConsoleMsg('info','¡El botón tooltip $campoDestino no es de tipo url, no se le puede cambiar data-gvhdestino!'); } break; case 'cwlistaradio': $('input:radio[data-gvhclasemanejadora=$claseM][name=$campoDestino][value='+newVal+']').prop('checked', true); gvh.changeField(objElemento, newVal); break; case 'cweditortexto': var idEditor = '$campoDestino'+'_container'; $('#'+idEditor+'[data-gvhclasemanejadora=$claseM]').summernote("code", newVal); // REDMINE #23183 $('#'+idEditor).focus(); gvh.changeField(objElemento); break; case 'cwcheckbox': objElemento.val(newVal); var check = objElemento.attr('data-gvhvaluecheck'); if (newVal == check) { objElemento.prop('checked',true); } else { objElemento.prop('checked',false); } gvh.changeField(objElemento, newVal); break; default: if (objElemento.attr('data-content')) { /* COMPONENTE: popover? */ objElemento.attr('data-content', newVal); $('#$buttonInfo'+'[data-gvhclasemanejadora=$claseM]').html(); gvh.changeField(objElemento, newVal); } else { objElemento.val(newVal); gvh.changeField(objElemento, newVal); } break; } } else if (txtMsgLength > 0) { $('#$txtMsg').html(newVal); } jquery; $cadenaJs .= << 0) { objElemento.focus(); }; jquery; return $cadenaJs; } /** * IgepSmarty::getJsSetSrcImg * * @access * @param * @return */ public static function getJsSetSrcImg($campoDestino, $nombreDestino, $campoOrigen, $claseM='', $valor='',$valueIcon='') { $valueEsc = '"'.IgepSmarty::escapeIGEP($valor).'"'; $valueIcon = '"'.IgepSmarty::escapeIGEP($valueIcon).'"'; $cadenaJs = << 0) { var imgClone = objBumpbox; imgClone.prop('src',''); var new_element = imgClone.clone(); new_element.prop('src', newVal); new_element.insertAfter(imgClone); imgClone.remove(); var bumpbox = objBumpbox.length; if (bumpbox > 0) { objBumpbox.attr('href',newVal); } if (claseM == '') { $('[id=$campoDestino]').css('display','inline'); } else { $('[data-gvhclasemanejadora='+claseM+'][id=IGEPVisible$campoDestino]').css('display','inline'); } } jquery; return $cadenaJs; } /** * IgepSmarty::getJsMensaje Genera un mensaje HTML/Js a partir de un objeto mensaje de * REVIEW Queda pendiente de discutir con el equipo de negocio si se deja aquí, * o se lleva a otra clase intermedia (IgepPantalla... etc...) * * @param Object $objMensaje Objeto Mansaje de gvHidra * @return string Cadena JavaScrip HTML correspondiente al mensaje */ public static function getJsMensaje ($objMensaje) { $cadenaJS = ''; $codigo = $objMensaje->getCodigo (); $titulo = $objMensaje->getDescripcionCorta (); $titulo = IgepSmarty::escapeIGEP ($titulo); $descripcion = $objMensaje->getDescripcionLarga (); $descripcion = IgepSmarty::escapeIGEP ($descripcion); $descripcion = ( empty ($descripcion) ? 'none' : $descripcion ); $tipo = strtolower ($objMensaje->getTipo ()); $cadenaJS = <<< js gvh.IgepSmarty.getJsMensaje ('$tipo', '{$codigo}', '{$titulo}', '{$descripcion}'); js; return $cadenaJS; } // getJsMensaje /** * IgepSmarty::getJsChecksMarcados * * @access * @param * @return */ public static function getJsChecksMarcados($checksMarcados) { $js=''; foreach ($checksMarcados as $check) { $js .= "$('#$check').prop('checked',true);"; } return $js; } /** * IgepSmarty::getJsEdicion * * @access * @param * @return */ public static function getJsEdicion($esMaestro,$esDetalle,$actuaSobre,$claseManejadora) { $panel = '-'; $patron = ''; if ($actuaSobre == 'ficha') $panel = 'edi'; if ($actuaSobre == 'tabla') $panel = 'lis'; if ($esDetalle!='') { $panel = $panel."Detalle"; $patron = 'detalle'; } $cadenaJs = << 0) { idBtn = btn.attr('id'); } } else { var panelEdi = $('div[data-gvhClaseManejadora=$claseManejadora][id=P_edi]'); if (panelEdi.length > 0) { idBtn = panelEdi.attr('id'); } else { var panelLis = $('div[data-gvhClaseManejadora=$claseManejadora][id=P_lis]'); if (panelLis.length > 0) { idBtn = panelLis.attr('id'); } else { var panelEdiDetalle = $('div[data-gvhClaseManejadora=$claseManejadora][id=P_ediDetalle]'); if (panelEdiDetalle.length > 0) { idBtn = panelEdiDetalle.attr('id'); } else { var panelLisDetalle = $('div[data-gvhClaseManejadora=$claseManejadora][id=P_lisDetalle]'); if (panelLisDetalle.length > 0) { idBtn = panellisDetalle.attr('id'); } } } } if ((claseM == '') || (claseM === undefined)) claseM = '$claseManejadora'; if (idBtn != '') { var objElemento = $('#'+idBtn+'[data-gvhClaseManejadora=$claseManejadora]'); gvh.formOnUpdate(objElemento); } var idBlockPanel = "blockPanel_"; if ((panel == 'lis') || (panel == 'lisDetalle')) { idBlockPanel = "blockPanel_tabla_"; } else { idBlockPanel = "blockPanel_ficha_"; } var objBlockPanel = $('div[id*='+idBlockPanel+'][data-gvhWindow='+gvh.ambito+'][data-gvhClaseManejadora=$claseManejadora]'); objBlockPanel.hide(); } js; return $cadenaJs; } // getJsEdicion /** * IgepSmarty::getJsNuevo * * @access * @param * @return */ public static function getJsNuevo($esMaestro,$esDetalle,$actuaSobre,$claseManejadora) { $panel = '-'; $patron = ''; if ($actuaSobre == 'ficha') $panel = 'edi'; if ($actuaSobre == 'tabla') $panel = 'lis'; if ($esDetalle!='') { $panel = $panel."Detalle"; $patron = 'detalle'; } $cadenaJs = << 0) { idBtn = btn.attr('id'); } } else { var panelEdiLength = $('div[id=P_edi][data-gvhClaseManejadora=$claseManejadora]').length; var panelLisLength = $('div[id=P_lis][data-gvhClaseManejadora=$claseManejadora]').length; var panelEdiDetalleLength = $('div[id=P_ediDetalle][data-gvhClaseManejadora=$claseManejadora]').length; var panelLisDetalleLength = $('div[id=P_lisDetalle][data-gvhClaseManejadora=$claseManejadora]').length; if (panelEdiLength > 0) { var panelEdi = $('div[id=P_edi][data-gvhClaseManejadora=$claseManejadora]'); idBtn = panelEdi.attr('id'); } else if (panelLisLength > 0) { var panelLis = $('div[id=P_lis][data-gvhClaseManejadora=$claseManejadora]'); idBtn = panelLis.attr('id'); } else if (panelEdiDetalleLength > 0) { var panelEdiDetalle = $('div[id=P_ediDetalle][data-gvhClaseManejadora=$claseManejadora]'); idBtn = panelEdiDetalle.attr('id'); } else if (panelLisDetalleLength > 0) { var panelLisDetalle = $('div[id=P_lisDetalle][data-gvhClaseManejadora=$claseManejadora]'); idBtn = panellisDetalle.attr('id'); } } if ((claseM == '') || (claseM === undefined)) { claseM = '$claseManejadora'; } if (idBtn != '') { var objElemento = $('#'+idBtn+'[data-gvhClaseManejadora=$claseManejadora]'); gvh.formOnInsert(objElemento); } var idBlockPanel = "blockPanel_"; if ((panel == 'lis') || (panel == 'lisDetalle')) { idBlockPanel = "blockPanel_tabla_"; } else { idBlockPanel = "blockPanel_ficha_"; } var objBlockPanel = $('div[id*='+idBlockPanel+'][data-gvhWindow='+gvh.ambito+'][data-gvhClaseManejadora=$claseManejadora]'); objBlockPanel.hide(); } js; return $cadenaJs; } /** * IgepSmarty::getJsSetBttlState Establece el estado del boton Tooltip situado en la barra superior del panel * correspondiente a activado (true) o desactivado (false) * @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 String JavaScript HTML correspondiente al mensaje */ /* VERO: jQuery Faltará crear un nuevo método para habilitar/inhabilitar botones tooltip en el interior de la tabla/ficha * necesitará componer el nombre completo del botón ej. cam___nomCampo___panel_reg */ public static function getJsSetBttlState($idPanel, $nameBttl, $claseM, $on=true) { $cadenaJs = << 0) objElemento.attr('tabindex',$orden); } jquery; return $cadenaJs; }//Fin getJsSetOrder /** * IgepSmarty::getJsSetVisible * * @access * @param * @return */ public static function getJsSetVisible($campoDestino, $valor='0', $claseM='') { $cadenaJs = << 0) { var visible = objIgepVisible.is(":visible"); if (visible == false) { objIgepVisible.css('display','inline'); } } if (buttonVSLength > 0) { objButtonVS.show(); } if (buttonLength > 0) { objButton.show(); } jquery; } else { $cadenaJs .= << 0) { var visible = objIgepVisible.is(":visible"); if (visible == true) { objIgepVisible.css('display','none'); } } if (buttonLength > 0) { objButton.hide(); } if (buttonVSLength > 0) { objButtonVS.hide(); } jquery; } $cadenaJs .= << campo destino: $campoDestino / enable $valor clase manejadora: $claseM'); var objElemento = $('[data-gvhclasemanejadora=$claseM][id=$campoDestino][data-gvhwindow='+gvh.ambito+']'); if (objElemento.length <= 0) { var external = false; if (objElemento.attr('data-gvhExternal') !== 'undefined') { external = objElemento.attr('data-gvhExternal'); } var objRadio = $('input[data-gvhclasemanejadora=$claseM][name=$campoDestino][data-gvhWindow='+gvh.ambito+']'); var radioLength = objRadio.length; if (radioLength > 0) { var objElemento = objRadio } } if (objElemento.length > 0) { jquery; if (($valor == 1) || ($valor)) { $cadenaJs .= << botón destino: $campoDestino enable $valor clase manejadora $claseM'); var button = $('button[data-gvhclasemanejadora=$claseM][[id=$campoDestino]'); var buttonLength = button.length; if (buttonLength > 0) { jquery; if (($valor == 1) || ($valor)) { $cadenaJs .= << $v) { $resultado[$k] = self::utf8ize($v); } } elseif(is_object($vArr)) { $resultado = clone $vArr; foreach ($vArr as $k => $v) { $resultado->$k = self::utf8ize($v); } } else { $resultado = gvHidraUTF8::toUTF8($vArr); } return $resultado; }//Fin utf8ize //A partir de un resultado genera el JavaScript necesario para que la lista se recargue por el oculto public static function getJsLista($campoDestinoJs, $resultado, $claseM) { $jsAddOption = << 0) { var valueList = ''; var valueMultList = []; var panel = campoDestino.attr('data-gvhPanelOn'); var panelJSON = panel.substring(0,3); var raizJSON = gvh.datosJSON['$claseM'][panelJSON]; //REDMINE #23165 var external = false; if (campoDestino.attr('data-gvhExternal') !== 'undefined') { external = campoDestino.attr('data-gvhExternal'); } var css = campoDestino.attr('class'); var tipoLista = campoDestino.attr('data-gvhCWSource'); if (tipoLista == 'cwlista') { var editClass = (campoDestino.data ('gvhstate') == 'noEdit' ? 'noEdit' : 'edit'); var descripcion; jsAddOption; if (is_array($resultado['lista']) && (count($resultado['lista']) == 0) ) { $jsAddOption .= <<', {value: '',text: '', class: 'text ' + editClass}) ); jsAddOption; } else { $jsAddOption .= << 1)) { $field = $vField[1]; $row = explode('_',$vField[2])[1]; } $jsAddOption .= <<', {value: '{$valor}',text: descripcion,class: 'text ' + editClass })); jsAddOption; $selectOptions = $resultado['seleccionado']; if (is_array($selectOptions)) { $numSelected = count($selectOptions); for($i=0;$i<$numSelected;$i++) { if ($selectOptions[$i] == $valor) { $jsAddOption .= << option[value="{$valor}"]').attr('selected', 'selected'); valueMultList.push("{$valor}"); jsAddOption; } } } else if ($selectOptions == $valor) { $jsAddOption .= << option[value="{$valor}"]').attr('selected', 'selected');\n jsAddOption; } } $jsAddOption .= << 0) { gvh.setValue (raizJSON, field, reg, valueMultList, external); } else { gvh.setValue (raizJSON, field, reg, valueList, external); } jsAddOption; $jsAddOption .= << 0) ) { foreach($resultado['lista'] as $fila) { $valor = $fila["valor"]; $descripcion = self::utf8ize(IgepSmarty::escapeIGEP($fila["descripcion"])); $selectOptions = $resultado['seleccionado']; //new Option(text, value, defaultSelected, selected); if (is_array($selectOptions)) { if (in_array($valor, $selectOptions)) { $jsAddOption .= << 1) ) { $field = $vField[1]; $row = explode('_',$vField[2])[1]; } // Lista múltiple $jsAddOption .= << 0) { gvh.setValue(raizJSON, field, reg, valueMultList, external); } else { gvh.setValue(raizJSON, field, reg, valueList, external); } campoDestino.trigger('change'); jsAddOption; } $jsAddOption .= <<