* @author Keka: * @author Vero: * @author Raquel: * @author Toni: * @package gvHIDRA **/ class IgepSmarty { var $preScript; var $v_eventosPesos; var $v_eventos; var $postScript; var $scriptLoadIgep; var $scriptLoadUsuario; function __construct() { $this->IgepSmarty(); } //FIN constructor 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 function inicioVentana() { $cadenaJs = "var documento = document; //Documento será siempre una referencia al document 'visible'\n"; $cadenaJs .= "if (document.getElementById('oculto') == null) documento = parent.document; \n"; $this->preScript .= $cadenaJs; } //FIN addPreScript function addPreScript($script) { $this->preScript .= $script."\n"; } //FIN addPreScript function getPreScript($conCabecera=true) { $retorno =''; if ($this->preScript!='') { if ($conCabecera) { $retorno.="\n"; } else { $retorno.= $this->preScript; } } return ($retorno); } //FIN getPreScript function addPostScript($script) { $this->postScript .= $script."\n"; } //FIN addPostScript 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 */ function addScriptLoad($script, $tipo='IGEP') { //$script = 'alert(document.lis_paginacion.nom_variable)'.$script; if($tipo=='USUARIO') $this->scriptLoadUsuario.=$script; else $this->scriptLoadIgep.=$script; }//Fin addScriptLoad 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 /** * _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 */ 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 */ function addAccionEvento($evento, $script, $pesoAccion=-1) { if (!$this->_validaEvento($evento)) die ('Error JAVASCRIPT, evento '.$evento.' inexistente.'); if ($pesoAccion== -1) { if (!is_array($this->v_eventos[$evento])) { $this->v_eventos[$evento] = array(); } array_push($this->v_eventos[$evento], $script); } else { while (isset($this->v_eventosPesos[$evento][$pesoAccion])) { ++$pesoAccion; } $this->v_eventosPesos[$evento][$pesoAccion] = $script; } } //FIN addAccionEvento 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 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 */ static function escapeIGEP(&$cadena, $escIni="!_", $escFin="_!") { $cadena = str_replace("\b", $escIni.'b'.$escFin, $cadena); $cadena = str_replace("\f", $escIni.'f'.$escFin, $cadena); $cadena = str_replace("\r", $escIni.'r'.$escFin, $cadena); $cadena = str_replace("\n", $escIni.'n'.$escFin, $cadena); $cadena = str_replace('\t', $escIni.'t'.$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 */ function desescapeIGEP(&$cadena, $escIni="!_", $escFin="_!") { $cadena = str_replace($escIni.'b'.$escFin, "\b", $cadena); $cadena = str_replace($escIni.'f'.$escFin, "\f", $cadena); $cadena = str_replace($escIni.'r'.$escFin, "\r", $cadena); $cadena = str_replace($escIni.'n'.$escFin, "\n", $cadena); $cadena = str_replace($escIni.'t'.$escFin, "\t", $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 //A partir de un resultado genera el JavaScript necesario para que la lista se recargue por el oculto static function getJsLista($campoDestinoJs, $resultado){ $opciones = ''; //Si no tiene resultado hay que indicar que el seleccionado de la lista es uno vacio if(count($resultado['lista'])==0) $opciones.="insertar_opcion(\"\",\"\",1);\n"; else { foreach($resultado['lista'] as $fila) { if($resultado['seleccionado']==$fila['valor']) $opciones.="insertar_opcion(\"".$fila["valor"]."\",desescapeIGEPjs('".IgepSmarty::escapeIGEP($fila["descripcion"])."'),1);\n"; else $opciones.="insertar_opcion(\"".$fila["valor"]."\",desescapeIGEPjs('".IgepSmarty::escapeIGEP($fila["descripcion"])."'),0);\n"; } } $opciones.= "cambia(formulario,'".$campoDestinoJs."',opciones);\n"; $opciones .= "opciones.length = 0;\n"; //Insertamos este código para que se copie el valor en el lins o lcam // Solo en el caso de que no estemos en un panel de búsqueda pq no existe valor anterior $actualizarCampoOculto = "if (formulario != 'F_fil') {"; $actualizarCampoOculto.= "eval('parent.document.forms[\"'+formulario+'\"]."; $actualizarCampoOculto.= 'l'.$campoDestinoJs.".value=desescapeIGEPjs(\""; $actualizarCampoOculto.= IgepSmarty::escapeIGEP($resultado['seleccionado'])."\")');\n"; $actualizarCampoOculto.= "};"; $opciones.= $actualizarCampoOculto; return $opciones; }//Fin de getJsLista /** * 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...) * * @access public * @param Object $objMensaje Objeto Mansaje de gvHidra * @return string Cadena JavaScrip HTML correspondiente al mensaje */ static function getJsMensaje(&$objMensaje) { $cadenaJS =""; $cadenaJS .="aviso=parent.aviso;"; $cadenaJS .="aviso.set('aviso', 'capaAviso'"; $cadenaJS .=", '"; $cadenaJS .=$objMensaje->getTipo(); $cadenaJS .="', '"; $cadenaJS .=$objMensaje->getCodigo(); $cadenaJS .="', desescapeIGEPjs('"; $descripcion = $objMensaje->getDescripcionCorta(); $cadenaJS .=IgepSmarty::escapeIGEP($descripcion); $cadenaJS .="'), desescapeIGEPjs('"; $descripcion = $objMensaje->getDescripcionLarga(); $cadenaJS .=IgepSmarty::escapeIGEP($descripcion); $cadenaJS .="')"; $cadenaJS .=");aviso.mostrarAviso();"; return $cadenaJS; } static function getJsSetCampoTexto($campoDestino, $valor='') { // Comprobamos si el campo existe en el formulario $cadenaJs = "\n\n if (eval(parent.document.getElementById('".$campoDestino."'))) {\n"; $cadenaJs .= " if (parent.document.getElementById('".$campoDestino."').tagName=='IMG') {\n"; $cadenaJs .= "eval('parent.document.forms[\"'+formulario+'\"]."; $cadenaJs .= $campoDestino.".src = desescapeIGEPjs(\"".IgepSmarty::escapeIGEP($valor)."\")');\n"; $cadenaJs .= "}"; $cadenaJs .= "else {"; $cadenaJs .= "eval('parent.document.forms[\"'+formulario+'\"]."; $cadenaJs .= $campoDestino.".value = desescapeIGEPjs(\""; $cadenaJs .= IgepSmarty::escapeIGEP($valor)."\")');\n"; $cadenaJs .= "}"; $cadenaJs .= "} \n"; return $cadenaJs; } static function getJsSetSelected($nombreCampoDestino, $valor='') { $cadenaJs = "if (document.getElementById('oculto') == null) // estoy en el oculto\n"; $cadenaJs .= "miFormulario = eval('parent.document.forms[\"'+formulario+'\"]');\n"; $cadenaJs .= "else miFormulario = eval('document.forms[\"'+formulario+'\"]');"; $cadenaJs .= "miSelector = miFormulario.$nombreCampoDestino;\n"; $cadenaJs .= "if ((parent.document.getElementById('$nombreCampoDestino') != null)) { if (parent.document.getElementById('$nombreCampoDestino').type == 'select-one') { setSelectedOption(formulario,'$nombreCampoDestino', desescapeIGEPjs(\"".IgepSmarty::escapeIGEP($valor)."\")); }\n"; if (is_array($valor)) { $cadenaJs .= " else if (parent.document.getElementById('$nombreCampoDestino').type == 'select-multiple') { valorMult = new Array(); valorMult = ["; for($i=0;$i 1) var idBtn = 'vs_'+vDestino[1]+'___'+vDestino[2]; else var idBtn = 'vs_'+vDestino[0]; if ( (vs = documento.getElementById(idBtn)) ) vs.src = '$imgVS'; //Salto // Hay que tratar el botón tooltip de la ventana de selección if (vDestino.length > 1) var idBtn = 'jump_'+vDestino[1]+'___'+vDestino[2]; else var idBtn = 'jump_'+vDestino[0]; if ( (jump = documento.getElementById(idBtn)) ) jump.src = '$imgJUMP'; } javascript; }//Fin no es un Radio return $cadenaJs; }//Fin getJsSetEnable static function getJsChecksMarcados($checksMarcados) { $js=''; foreach ($checksMarcados as $check) $js.="documento.getElementById('".$check."').checked='true';"; return $js; } static function getJsSetEstadoModificado($p_campoOrigen) { // El campo puede tener prefijo (cam__ , ins__) o nada si está en un panel de busqueda. // Si tiene prefijo count(descCampoOrigen)>1 sino no // ins___ediCiAnyo___FichaEdicion_0 $descCampoOrigen = explode('___', $p_campoOrigen); if(count($descCampoOrigen)<2) return; // Valor que indicará el estado de la página de la ficha / fila tabla: modificada o insertada if ($descCampoOrigen[0]=='cam') { $valor = 'modificada'; } else if ($descCampoOrigen[0]=='ins') $valor = 'insertada'; else $valor = 'nada'; //Jamás llego aquí, pero.... $campo = 'est_'.$descCampoOrigen[2]; // Campo que indicará el estado de la página de la ficha / fila tabla $cadenaJs = "eval('documento.forms[\"'+formulario+'\"].".$campo.".value=\"".$valor."\"');\n"; $cadenaJs .= "if ((eval(documento.getElementById('".$p_campoOrigen."')) !== null) && (eval(documento.getElementById('".$p_campoOrigen."')) !== 'undefined')) {\n"; $cadenaJs .= " aux = documento.getElementById('".$p_campoOrigen."').value;\n"; $cadenaJs .= "\n}\n"; $cadenaJs .= " else { \n var elto = documento.getElementsByName('".$p_campoOrigen."');\n var long = elto.length;\n if (long > 0) { for(i = 0; i < long; i++) { if ((elto[i].type == 'radio') && (elto[i].checked === true)) { aux = elto[i].value; break; } } } }\n "; if ($valor == 'modificada') { // En el caso de modificada componemos el nombre del campo con el valor anterior $campoAnt = str_replace('cam','ant',$p_campoOrigen); $cadenaJs .= "if (eval(documento.getElementById('".$campoAnt."')) != null) "; // Nos guardamos el valor anterior a la modificación $cadenaJs .= " auxAnt = documento.getElementById('".$campoAnt."').value;\n"; } // Obtenemos en qué panel nos encontramos (fil,lis,edi) $cadenaJs .= "vTokens = formulario.split('_');\n"; $cadenaJs .= "if (vTokens.length > 1);\n"; $cadenaJs .= "{\n"; $cadenaJs .= "idFormulario = vTokens[1];\n"; $cadenaJs .= "};\n"; $cadenaJs .= "nomObj = idFormulario+'_comp';\n"; $cadenaJs .= "var objComp = eval('documento.'+nomObj);"; $cadenaJs .="objComp.comprobarModificacion('".$p_campoOrigen."');"; return $cadenaJs; } static function getJsLanzarFocusChanged() { //REVIEW: David - Revisar esta función $cadenaJs = ""; $cadenaJs .= "\n//ATENCION: Esto lo arreglaremos posteriormente\n"; $cadenaJs .= "nombreFormulario ='F_edi';\n"; $cadenaJs .= "tipoCampo ='cam';\n"; $cadenaJs .= "idPanel ='FichaEdicion';\n"; $cadenaJs .= "filaActual =0;\n"; $cadenaJs .="formulario = eval('document.forms[nombreFormulario]');\n"; $cadenaJs .="if(formulario!=null){\n"; $cadenaJs .=" visible = eval('document.getElementById(\'P_edi\').style.display');\n"; $cadenaJs .=" if(visible!='none'){\n"; $cadenaJs .=" claseManejadora = formulario.claseManejadora.value;\n"; $cadenaJs .=" accionAntigua = formulario.action;\n"; $cadenaJs .=" formulario.action = 'phrame.php?action=focusChanged&claseManejadora='+claseManejadora+'&nomForm='+formulario.name+'&tipoCampo='+tipoCampo+'&idPanel='+idPanel+'&filaActual=-1&filaProxima=0';\n"; $cadenaJs .=" formulario.target = 'oculto';\n"; $cadenaJs .=" formulario.submit();\n"; $cadenaJs .=" formulario.action = accionAntigua;\n"; $cadenaJs .=" }\n"; $cadenaJs .="}\n"; return $cadenaJs; } static function getJsFijarFichaActiva($nombrePanel,$claseManejadora,$fichaActiva) { $cadenaJs = "\n"; //Necesitamos el panel y la página if(($nombrePanel=='edi') or ($nombrePanel=='ediDetalle')) { $cadenaJs .="nombrePanel ='".$nombrePanel."';\n"; $cadenaJs .="nombreFormulario ='F_'+'".$nombrePanel."';\n"; $cadenaJs .="nombreCapa ='P_'+'".$nombrePanel."';\n"; $cadenaJs .="formulario = eval('document.forms[nombreFormulario]');\n"; $cadenaJs .="visible = eval('document.getElementById(nombreCapa).style.display');\n"; $cadenaJs .="if((formulario != null) && (visible != 'none')){\n"; $cadenaJs .= "if (".$nombrePanel."_paginacion.hayError() == false){\n"; $cadenaJs .="document.forms[nombreFormulario].pagActual___".$claseManejadora.".value='".$fichaActiva."';\n"; $cadenaJs .=$nombrePanel."_paginacion.abrir_pagina(".$fichaActiva.");\n"; $cadenaJs .="};\n"; $cadenaJs .="};\n"; } return $cadenaJs; } /** * iGepSmarty::getJsSetBttlState Establece el estado del boton Tooltip * 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 JavaScrip HTML correspondiente al mensaje */ static function getJsSetBttlState($idPanel, $nameBttl, $on=true) { $nameBttl = trim(strtolower($nameBttl)); $refJS = 'documento.'; switch($nameBttl) { case 'insertar': case 'nuevo': $refJS.='bttlInsertar'; break; case 'modificar': case 'editar': $refJS.='bttlModificar'; break; case 'eliminar': case 'borrar': $refJS.='bttlEliminar'; break; case 'limpiar': case 'restaurar': $refJS.='bttlLimpiar'; break; default: return ''; } $refJS.="_$idPanel"; $cadenaJs = ""; $cadenaJs .= "var documento = document;"; $cadenaJs .= "if (document.getElementById('oculto') == null) // estoy en el oculto"; $cadenaJs .= "\n{ "; $cadenaJs .= " documento = parent.document"; $cadenaJs .= "}\n"; if ($on) { $cadenaJs.="$refJS.habilitarBoton();\n"; } else { $cadenaJs.="$refJS.deshabilitarBoton();\n"; } return $cadenaJs; } //FIN getJsSetBttlEnable static function getJsNuevo($esMaestro,$esDetalle,$actuaSobre) { $cadenaDetalle=''; $detalle = 'false'; $maestro = 'false'; if ($esMaestro > 0) $maestro = 'true'; if($esDetalle!='') { $cadenaDetalle='Detalle'; $detalle = 'true'; } $cadenaJs = ''; // Si no nos llega el parámetro "actuaSobre" es pq no se ha pulsado un botón tooltip. // Comprobamos en qué panel nos encontramos para crear un botón que nos permita ejecutar la función javascript insertar() if ($actuaSobre == '') { $cadenaJs .= 'if(typeof edi'.$cadenaDetalle.'_panel !== "undefined") { boton = "bttlInsertar_edi'.$cadenaDetalle.'"; panel = "edi'.$cadenaDetalle.'"; }'; $cadenaJs .= 'else if(typeof lis'.$cadenaDetalle.'_panel !== "undefined") { boton = "bttlInsertar_lis'.$cadenaDetalle.'"; panel = "lis'.$cadenaDetalle.'";}'; $cadenaJs .= 'objBoton = new objBTTInsertar(boton,panel,"'.$maestro.'","'.$detalle.'");'; $cadenaJs .= 'objBoton.insertar();'; $cadenaJs .= "$('button[data-gvhModo=insert]').removeClass('off');";//REVIEW David/Toni: JQuery. Falta "activar" el campo con la expresión general$cadenaJs .= "$('button[data-gvhModo=insert]').removeClass('off');";//REVIEW David/Toni: JQuery. Falta "activar" el campo con la expresión general } else { // Tenemos el parámetro "actuaSobre", por lo tanto se ha pulsado en un botón tooltip // El parámetro nos indicará el panel que se ha de poner en modo inserción if ($actuaSobre == 'ficha') $panel = 'edi'.$cadenaDetalle; elseif ($actuaSobre == 'tabla') $panel = 'lis'.$cadenaDetalle; $cadenaJs .= 'bttlInsertar_'.$panel.' = new objBTTInsertar("bttlInsertar_'.$panel.'","'.$panel.'","'.$maestro.'","'.$detalle.'");'; $cadenaJs .= 'bttlInsertar_'.$panel.'.insertar();'; $cadenaJs .= "$('button[data-gvhModo=insert]').removeClass('off');";//REVIEW David/Toni: JQuery. Falta "activar" el campo con la expresión general } return $cadenaJs; } static function getJsOpenWindow($path) { //REVIEW: David - Tras registrar windows.js en CWVentana, podría quitarse esta declaración $cadenaJs ="function Open_Vtna2(pagina,nombre,w,h,toolbar,location,status,menubar,scroll,resizable) {\n"; $cadenaJs.="LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;\n"; $cadenaJs.="TopPosition = (screen.height) ? (screen.height-h)/2 : 0;\n"; $cadenaJs.="settings = 'top='+TopPosition+',left='+LeftPosition+',toolbar='+toolbar+',location='+location+',status='+status+',menubar='+menubar+',scrollbars='+scroll+',resizable='+resizable+',width='+w+',height='+h;\n"; $cadenaJs.="//Si firefox o Mozilla eliminamos todas las barras, la hacemos modal,dependiente y que flote sobre el resto\n"; $cadenaJs.="if (navigator.appCodeName =='Mozilla')\n"; $cadenaJs.="settings = settings+',directories=no,personalbar=no,minimizable=no,alwaysRaised=yes,modal=yes,dependent=yes';\n"; $cadenaJs.="win = window.open(pagina,nombre,settings);\n"; $cadenaJs.="win.focus();\n"; $cadenaJs.="}"; // Mejoras #20344 Posibilidad de abrir varios listados en diferentes ventanas emergentes, nombre ventana aleatorio $x = rand(1,10000); $nomVentana = "ventana".$x; $cadenaJs.="Open_Vtna2('".$path."','".$nomVentana."',700,500,'no','no','no','no','yes','yes');"; return $cadenaJs; } /************ MODAL **********************/ //Creamos el metodo para abrir la ventana static function getJsOpenModalWindow($path,$returnPath,$nomForm,$width,$height,$strict) { $cadenaJs = "url = '".$path."';"; $cadenaJs .= "paramsSource = {};"; $cadenaJs .= "paramsSource.formulario = '".$nomForm."';"; $cadenaJs .= "paramsSource.returnPath = '".$returnPath."';"; $strictJS = 'true'; if ($strict == false) $strictJS = 'false'; $cadenaJs .= "openModal(url, paramsSource,$width,$height,'$strictJS');"; return $cadenaJs; } //Creamos el metodo para cerrar la ventana static function getJsCloseModalWindow() { $cadenaJs = "parent.window.top.close();"; return $cadenaJs; } /************ MODAL **********************/ /** * 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 none */ public static function getJsSetCheck($idCheck, $check, $hiddenName, $value) { //Actualizamos el CheckBox $cadenaJs = "eval('parent.document.forms[\"'+formulario+'\"]."; $cadenaJs.= $idCheck.".checked="; $cadenaJs.= intval($check)."');\n"; //Lanzamos la funcion que actualiza el hidden $cadenaJs.= IgepSmarty::getJsSetCampoTexto($hiddenName,$value); return $cadenaJs; } }//Fin Class IgepSmarty ?>