1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- (function() {
- "use strict";
- CKEDITOR.plugins.add("pastebase64", {
- init: init
- });
- function init(editor) {
- if (editor.addFeature) {
- editor.addFeature({
- allowedContent: "img[alt,id,!src]{width,height};"
- });
- }
- editor.on("contentDom", function() {
- var editableElement = editor.editable
- ? editor.editable()
- : editor.document;
- editableElement.on("paste", onPaste, null, { editor: editor });
- });
- }
- function onPaste(event) {
- var editor = event.listenerData && event.listenerData.editor;
- var $event = event.data.$;
- var clipboardData = $event.clipboardData;
- var found = false;
- var imageType = /^image/;
- if (!clipboardData) {
- return;
- }
- return Array.prototype.forEach.call(clipboardData.types, function(type, i) {
- if (found) {
- return;
- }
- if (
- type.match(imageType) ||
- clipboardData.items[i].type.match(imageType)
- ) {
- readImageAsBase64(clipboardData.items[i], editor);
- return (found = true);
- }
- });
- }
- function readImageAsBase64(item, editor) {
- if (!item || typeof item.getAsFile !== "function") {
- return;
- }
- var file = item.getAsFile();
- var reader = new FileReader();
- reader.onload = function(evt) {
- var element = editor.document.createElement("img", {
- attributes: {
- src: evt.target.result
- }
- });
- // We use a timeout callback to prevent a bug where insertElement inserts at first caret
- // position
- setTimeout(function() {
- editor.insertElement(element);
- editor.setData(editor.getData());
- }, 10);
- };
- reader.readAsDataURL(file);
- }
- })();
|