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(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"").replace(/&#039;/g, "'").replace(/&nbsp;/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