UNPKG

tinymce-plugin

Version:
111 lines (106 loc) 3.81 kB
/** * upfile 1.1v * The tinymce-plugins is used to upfile * * https://github.com/Five-great/tinymce-plugins * * Copyright 2020, Five(Li Hailong) The Chengdu, China https://www.fivecc.cn/ * * Licensed under MIT */ tinymce.PluginManager.add('upfile', function(editor, url) { var pluginName='上传文件'; window.upfile={}; //扔外部公共变量,也可以扔一个自定义的位置 var baseURL=tinymce.baseURL||'.'; var iframe1 = baseURL+'/plugins/upfile/upfiles.html'; upfile.file_callback = editor.getParam('file_callback', undefined, 'function'); // upfile.file_callback = editor.getParam('download_text', String, 'function'); upfile.tinymce = tinymce; upfile.res={}; var openDialog = function() { return editor.windowManager.openUrl({ title: pluginName, size: 'large', width: 450, height: 450, url:iframe1, buttons: [ { type: 'cancel', text: 'Close' }, { type: 'custom', text: 'Save', name: 'save', primary: true }, ], onAction: function (api, details) { switch (details.name) { case 'save': var res = upfile.res; var html = '<span class="upfile" contenteditable="false"><a href="'+res.url+'" target="_blank" title="'+res.text+'" >'+res.text+'<a></span>'; editor.insertContent(html); upfile.res={}; api.close(); break; default: break; } } }); }; editor.ui.registry.getAll().icons.upfile || editor.ui.registry.addIcon('upfile','<svg t="1603858123045" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2812" width="24" height="24"><path fill-rule="evenodd" fill="#000" d="M909 897H115a50 50 0 0 1-50-50V177a50 50 0 0 1 50-50h370a50 50 0 0 1 50 50v62a10 10 0 0 0 10 10h241a50 50 0 0 1 50 50v58h73a50 50 0 0 1 50 50v440a50 50 0 0 1-50 50zM505 309a30 30 0 0 1-30-30v-72a20 20 0 0 0-20-20H145a20 20 0 0 0-20 20v610c0 11.046 9.377 20 20.422 20H209a20 20 0 0 0 20-20V407a50 50 0 0 1 50-50h497v-28a20 20 0 0 0-20-20H535m364 128a20 20 0 0 0-20-20H309a20 20 0 0 0-20 20v400h590a20 20 0 0 0 20-20V437zM650.659 615.8l-26.618-26.53V737a30 30 0 0 1-30 30h-0.113a30 30 0 0 1-30-30V589.275L537.309 615.8a30.006 30.006 0 0 1-42.509-42.36l77.928-77.669a30.127 30.127 0 0 1 42.506 0l77.929 77.669a30.007 30.007 0 0 1-42.504 42.36z" p-id="2813"></path></svg>'); editor.ui.registry.addButton('upfile', { icon: 'upfile', tooltip: pluginName, onAction: function() { openDialog(); } }); function createHref(e) { var t = document.createElement("a"); t.target = "_blank", t.href = e, t.rel = "noreferrer noopener"; var n, i, o = document.createEvent("MouseEvents"); o.initMouseEvent("click", !0, !0, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), n = t, i = o, document.body.appendChild(n), n.dispatchEvent(i), document.body.removeChild(n) } function getParent(e, t) { return t = t || e.selection.getNode(), e.dom.getParent(t, 'span[class="upfile"]') }; editor.ui.registry.addButton("upfile-download", { text: "下载", onAction: function() { return e = function(e) { for (var t = 0, n = e.selection.getNode().children; t < n.length; t++) { var i = n[t]; if (i.hasAttribute("href")) return i.getAttribute("href") } return "#" }(editor), void createHref(e); } }) editor.ui.registry.addContextToolbar("upfile", { predicate: function(e) { return !!getParent(editor, e) }, items: "upfile-download", position: "node", scope: "node" }) editor.ui.registry.addMenuItem('upfile', { icon: 'upfile', text: '图片上传...', onAction: function() { openDialog(); } }); return { getMetadata: function() { return { name: pluginName, url: "https://github.com/Five-great/tinymce-plugins", }; } }; });