Obtener el código editado
Desde el formulario de Velneo podemos guardar el código editado con AceEditor.
oLeemos el código del Visor y parseamos usando los delimitadores <!-- VELNEO_INI --><div id="codigo"> y </div><!-- VELNEO_FIN -->
oAlgunos caracteres se devuelven codificados como HTML y tenemos que convertirlos al valor correspondiente
oUna vez tenemos el código editado en la variable local CHTML ya podemos guardarlo en la tabla
MANEJADOR QUE OBTIENE EL CÓDIGO EDITADO EN EL EDITOR AceEditor
var oVisor = theRoot.dataView().control("CTR_VISOR_HTML");
var codigo = oVisor.sourceCode();
var html = cadenaExtraer(codigo,
"<!-- VELNEO_INI --><textarea id=\"tmp_editor\">",
"</textarea><!-- VELNEO_FIN -->",
1, true)
// Volvemos a recuperar los caracteres codificados en HTML
theRoot.setVar("CHTML", html.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, "\"").replace(/'/g, "'").replace(/ /g, " "))
// *****************************************************************
// Función cadenaExtraer(cCadena, cIniLim, cFinLim, nOcurrencia, lCaseInsensitive) -
// Extrae un String entre 2 delimitadores
// cCadena - cadena a analizar
// cIniLim - límite inicial
// cFinLim - límite final
// nOcurrencia - nº de ocurrencia
// lCaseInsensitive - es true para no sensible a mayúsculas
//
// Usando Regexp podríamos usar <cIniLim>((?:.|\n)*)<cFinLim>
// Busca la cadena de cualquier caracter con retornos (.|\n)
// Los paréntesis determinan los grupos de Búsqueda. El ?: descarta el grupo de búsqueda interno.
function cadenaExtraer(cCadena, cIniLim, cFinLim, nOcurrencia, lCaseInsensitive) {
// Busca la primera ocurrencia en caso de no pasar un valor positivo de nOcurrencia
if (!nOcurrencia) nOcurrencia = 1;
var nPos1, nPos2, subcadena = "";
if (lCaseInsensitive) {
var cCadenab = cCadena.toLowerCase();
cIniLim = cIniLim.toLowerCase();
cFinLim = cFinLim.toLowerCase();
}
nPos1 = cadenaPosicion(cCadenab, cIniLim, 0, nOcurrencia);
if (nPos1 > -1) {
nPos1 += cIniLim.length;
nPos2 = cadenaPosicion(cCadenab, cFinLim, nPos1, 1);
}
if (nPos1 > -1 && nPos2 > -1) {
subcadena = cCadena.substring(nPos1, nPos2);
}
return subcadena
}
// *****************************************************************
// Función CadenaOcurrencias(cCadena, cBuscar, lCaseInsensitive) -
// Devuelve el Nº de ocurrencias de cBuscar en cCadena
// cCadena - cadena a analizar
// cBuscar - cadena a buscar
// lCaseInsensitive - es true para no sensible a mayúsculas
function CadenaOcurrencias(cCadena, cBuscar, lCaseInsensitive) {
// Contador de ocurrencias
var contador = 0,
inicio = 0,
longitud = cBuscar.length;
if (longitud && cCadena.length) {
if (lCaseInsensitive) {
cCadena = cCadena.toLowerCase();
cBuscar = cBuscar.toLowerCase();
}
while ((inicio = cCadena.indexOf(cBuscar, inicio)) > -1) {
contador++;
inicio += longitud;
}
}
return contador.toFixed(0);
}
// *****************************************************************
// Función cadenaPosicion(cCadena, cBuscar, nInicio, nOcurrencia) -
// Devuelve la posición de la N-Ocurrencia de cBuscar en cCadena a partir de una posición
// cCadena - cadena a analizar
// cBuscar - cadena a buscar
// nInicio - inicio de la búsqueda (0 es el inicio)
// nOcurrencia - nº de ocurrencia
function cadenaPosicion(cCadena, cBuscar, nInicio, nOcurrencia) {
// Contador de ocurrencias
var contador = 0,
posicion = -1,
longitud = cBuscar.length;
if (longitud && cCadena.length) {
posicion = nInicio
while ((posicion = cCadena.indexOf(cBuscar, posicion)) > -1) {
contador++;
if (contador == nOcurrencia) {
break;
}
posicion += longitud;
}
}
return posicion;
}
Created with the Personal Edition of HelpNDoc: Free iPhone documentation generator