2011-04-08 25 views
7

He hecho algunas funciones personalizadas para el CKEditor. En resumen, muestra una etiqueta div con 5 enlaces, para tamaño pequeño, mediano, grande X-grande y original.CKEditor - Cambiar fuente de imagen

Cuando hago clic en los enlaces, cambia el atributo de SRC de la imagen al tamaño correcto.

Funciona, pero no persiste en el editor. Es como si la Imagen que obtengo a través del objetivo del evento Click, no es parte del código fuente.

¿Cómo puedo cambiar el código fuente, al manipular con los elementos en el editor?

Mi código es el siguiente:

$(target).ckeditor(function (editor) { 
    $(this.document.$).bind("click", function (event) { 
     var target = $(event.target); 

     if (target.is("img")) { 
      var p = $("<div contenteditable='false' class='image-properties'>" + Milkshake.Resources.Text.size + ": <a class='sizeLink' href='#size1Img'>S</a>&nbsp;<a class='sizeLink' href='#size2Img'>M</a>&nbsp;<a class='sizeLink' href='#size3Img'>L</a>&nbsp;<a class='sizeLink' href='#size4Img'>XL</a>&nbsp;<a class='sizeLink' href='#size5Img'>Org.</a></div>"); 
      p.css("top", target.position().top); 

      var regex = new RegExp(/(size\d{1}img)/i); 
      var match = regex.exec(target.attr("src")); 

      if (match != null) { 
       var imgSrize = match[0]; 
       p.find("a[href=#" + imgSrize + "]").addClass("selected"); 
      } 

      p.delegate("a", "click", function (e) { 
       var link = $(e.target); 

       if (!link.is(".selected")) { 
        $(".selected", link.parent()).removeClass("selected"); 
        link.addClass("selected"); 

        var imageSrc = target.attr("src"); 
        imageSrc = imageSrc.replace(/(size\d{1}img)/i, link.attr("href").substring(1)); 

        target.attr("src", imageSrc); 
        target.css("width", ""); 
        target.css("height", ""); 
       } 

       e.preventDefault(); 
      }); 

      p.insertAfter(target); 
     } else if (!target.is("div.image-properties")) { 
      $("div.image-properties", target.parent()).remove(); 
     } 
    }); 
+2

+1 me gusta CKeditor preguntas difíciles, aunque no sé la respuesta. Tal vez @AlfonsoML lo verá, es un desarrollador de CKEditor y muy activo aquí. –

+1

Esperemos que lo vea :) – MartinHN

+1

Puede valer la pena intentar 'trigger ('change')' en el editor, esto funcionó para mí en una pieza personalizada de TinyMCE que escribí. –

Respuesta

4

El src de imágenes y href de enlaces están protegidos en CKEditor para evitar los errores del navegador (al copiar, arrastrar o incluso a veces simplemente cargar el contenido), por lo que debe también actualizar este atributo personalizado:

data-cke-saved-src

+0

¿Hay alguna manera de desproteger la fuente del editor cuando se agrega una imagen? –

+0

No entiendo lo que quieres decir. Puede obtener el código HTML llamando a editor.getData() – AlfonsoML

+0

cuando utiliza el explorador de archivos para agregar una imagen al contenido de la ventana que desactiva el botón de origen para que no pueda ver la fuente. ¿Hay alguna manera de anular esto? –

Cuestiones relacionadas