From 9c7f4023eb787468e74328bb8d5429ff91079a64 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 27 Apr 2020 18:05:31 +0800 Subject: [PATCH] ckeditor part1 --- test_client/package-lock.json | 15 +- test_client/package.json | 1 + .../Tinymce/components/EditorImage.vue | 111 ++++++++ .../components/Tinymce/dynamicLoadScript.js | 59 +++++ test_client/src/components/Tinymce/index.vue | 237 ++++++++++++++++++ test_client/src/components/Tinymce/plugins.js | 7 + test_client/src/components/Tinymce/toolbar.js | 6 + test_client/src/router/index.js | 23 ++ test_client/src/views/news/news.vue | 151 +++++++++++ test_client/src/views/news/newscreate.vue | 36 +++ test_mini/app.js | 4 +- test_mini/pages/main/main.js | 19 +- 12 files changed, 666 insertions(+), 3 deletions(-) create mode 100644 test_client/src/components/Tinymce/components/EditorImage.vue create mode 100644 test_client/src/components/Tinymce/dynamicLoadScript.js create mode 100644 test_client/src/components/Tinymce/index.vue create mode 100644 test_client/src/components/Tinymce/plugins.js create mode 100644 test_client/src/components/Tinymce/toolbar.js create mode 100644 test_client/src/views/news/news.vue create mode 100644 test_client/src/views/news/newscreate.vue diff --git a/test_client/package-lock.json b/test_client/package-lock.json index 51bdcc7..c9691af 100644 --- a/test_client/package-lock.json +++ b/test_client/package-lock.json @@ -3508,6 +3508,14 @@ "dev": true, "optional": true }, + "ckeditor4-vue": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/ckeditor4-vue/download/ckeditor4-vue-0.2.0.tgz", + "integrity": "sha1-blzFN9dsQEm31CPYapeqFBivUQA=", + "requires": { + "load-script": "^1.0.0" + } + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", @@ -4974,7 +4982,7 @@ }, "echarts": { "version": "4.7.0", - "resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.7.0.tgz", + "resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.7.0.tgz?cache=0&sync_timestamp=1584522755461&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fecharts%2Fdownload%2Fecharts-4.7.0.tgz", "integrity": "sha1-Wzh1pML5HjkpQl+rq56s5+QJiz8=", "requires": { "zrender": "4.3.0" @@ -9783,6 +9791,11 @@ } } }, + "load-script": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/load-script/download/load-script-1.0.0.tgz", + "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=" + }, "loader-fs-cache": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.2.tgz", diff --git a/test_client/package.json b/test_client/package.json index c47aa17..d19708d 100644 --- a/test_client/package.json +++ b/test_client/package.json @@ -16,6 +16,7 @@ }, "dependencies": { "axios": "0.18.1", + "ckeditor4-vue": "^0.2.0", "echarts": "^4.7.0", "element-ui": "2.13.0", "file-saver": "^2.0.2", diff --git a/test_client/src/components/Tinymce/components/EditorImage.vue b/test_client/src/components/Tinymce/components/EditorImage.vue new file mode 100644 index 0000000..d4a98e8 --- /dev/null +++ b/test_client/src/components/Tinymce/components/EditorImage.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/test_client/src/components/Tinymce/dynamicLoadScript.js b/test_client/src/components/Tinymce/dynamicLoadScript.js new file mode 100644 index 0000000..185f58d --- /dev/null +++ b/test_client/src/components/Tinymce/dynamicLoadScript.js @@ -0,0 +1,59 @@ +let callbacks = [] + +function loadedTinymce() { + // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2144 + // check is successfully downloaded script + return window.tinymce +} + +const dynamicLoadScript = (src, callback) => { + const existingScript = document.getElementById(src) + const cb = callback || function() {} + + if (!existingScript) { + const script = document.createElement('script') + script.src = src // src url for the third-party library being loaded. + script.id = src + document.body.appendChild(script) + callbacks.push(cb) + const onEnd = 'onload' in script ? stdOnEnd : ieOnEnd + onEnd(script) + } + + if (existingScript && cb) { + if (loadedTinymce()) { + cb(null, existingScript) + } else { + callbacks.push(cb) + } + } + + function stdOnEnd(script) { + script.onload = function() { + // this.onload = null here is necessary + // because even IE9 works not like others + this.onerror = this.onload = null + for (const cb of callbacks) { + cb(null, script) + } + callbacks = null + } + script.onerror = function() { + this.onerror = this.onload = null + cb(new Error('Failed to load ' + src), script) + } + } + + function ieOnEnd(script) { + script.onreadystatechange = function() { + if (this.readyState !== 'complete' && this.readyState !== 'loaded') return + this.onreadystatechange = null + for (const cb of callbacks) { + cb(null, script) // there is no way to catch loading errors in IE8 + } + callbacks = null + } + } +} + +export default dynamicLoadScript diff --git a/test_client/src/components/Tinymce/index.vue b/test_client/src/components/Tinymce/index.vue new file mode 100644 index 0000000..0c6174c --- /dev/null +++ b/test_client/src/components/Tinymce/index.vue @@ -0,0 +1,237 @@ +