Files
leanote/public/tinymce/plugins/leaui_mindmap/plugin.js
2017-03-07 13:38:04 +08:00

81 lines
1.9 KiB
JavaScript
Executable File

/**
* leaui mind map plugin
* copyright leaui
* leaui.com
*/
var LEAUI_MIND = {};
tinymce.PluginManager.add('leaui_mindmap', function(editor, url) {
function showDialog() {
var dom = editor.dom;
var content = editor.selection.getContent();
// get images and attrs
var p = /<img.*?\/>/g;
var images = content.match(p);
var newNode = document.createElement("p");
LEAUI_MIND = {};
for(var i in images) {
newNode.innerHTML = images[i];
var imgElm = newNode.firstChild;
if(imgElm && imgElm.nodeName == "IMG") {
LEAUI_MIND.json = dom.getAttrib(imgElm, 'data-mind-json');
break;
}
}
function GetTheHtml(){
var lang = editor.settings.language;
var u = url + '/mindmap/index.html?i=1';
var html = '<iframe id="leauiMindMapIfr" src="'+ u + '?' + new Date().getTime() + '&lang=' + lang + '" frameborder="0"></iframe>';
return html;
}
var w = window.innerWidth - 10;
var h = window.innerHeight - 150;
win = editor.windowManager.open({
title: "Mind Map",
width : w,
height : h,
html: GetTheHtml(),
buttons: [
{
text: 'Cancel',
onclick: function() {
this.parent().parent().close();
}
},
{
text: 'Insert',
subtype: 'primary',
onclick: function(e) {
var me = this;
var _iframe = document.getElementById('leauiMindMapIfr').contentWindow;
var km = _iframe.km;
// window.km= km;
// return
km.exportData('png').then(function(data) {
var json = JSON.stringify(km.exportJson());
json = json.replace(/'/g, "Ж");
// console.log(json);
var img = '<img src="' + data + '" data-mce-src="-" data-mind-json=\'' + json + '\'>';
editor.insertContent(img);
me.parent().parent().close();
});
return;
}
}]
});
}
editor.addButton('leaui_mindmap', {
// image: url + '/icon.png',
icon: 'mind',
tooltip: 'Insert/edit mind map',
onclick: showDialog,
stateSelector: 'img[data-mind-json]'
});
});