feat: visual editor - link to page
This commit is contained in:
		| @@ -11,6 +11,7 @@ | |||||||
|         v-spacer |         v-spacer | ||||||
|         .caption {{$t('editor:ckeditor.stats', { chars: stats.characters, words: stats.words })}} |         .caption {{$t('editor:ckeditor.stats', { chars: stats.characters, words: stats.words })}} | ||||||
|     editor-conflict(v-model='isConflict', v-if='isConflict') |     editor-conflict(v-model='isConflict', v-if='isConflict') | ||||||
|  |     page-selector(mode='select', v-model='insertLinkDialog', :open-handler='insertLinkHandler', :path='path', :locale='locale') | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script> | <script> | ||||||
| @@ -19,6 +20,8 @@ import { get, sync } from 'vuex-pathify' | |||||||
| import DecoupledEditor from '@requarks/ckeditor5' | import DecoupledEditor from '@requarks/ckeditor5' | ||||||
| import EditorConflict from './ckeditor/conflict.vue' | import EditorConflict from './ckeditor/conflict.vue' | ||||||
|  |  | ||||||
|  | /* global siteLangs */ | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   components: { |   components: { | ||||||
|     EditorConflict |     EditorConflict | ||||||
| @@ -37,7 +40,8 @@ export default { | |||||||
|         words: 0 |         words: 0 | ||||||
|       }, |       }, | ||||||
|       content: '', |       content: '', | ||||||
|       isConflict: false |       isConflict: false, | ||||||
|  |       insertLinkDialog: false | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   computed: { |   computed: { | ||||||
| @@ -49,6 +53,12 @@ export default { | |||||||
|     activeModal: sync('editor/activeModal') |     activeModal: sync('editor/activeModal') | ||||||
|   }, |   }, | ||||||
|   methods: { |   methods: { | ||||||
|  |     insertLink () { | ||||||
|  |       this.insertLinkDialog = true | ||||||
|  |     }, | ||||||
|  |     insertLinkHandler ({ locale, path }) { | ||||||
|  |       this.editor.execute('link', siteLangs.length > 0 ? `/${locale}/${path})` : `/${path}`) | ||||||
|  |     } | ||||||
|   }, |   }, | ||||||
|   async mounted () { |   async mounted () { | ||||||
|     this.$store.set('editor/editorKey', 'ckeditor') |     this.$store.set('editor/editorKey', 'ckeditor') | ||||||
| @@ -89,6 +99,10 @@ export default { | |||||||
|       } |       } | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|  |     this.$root.$on('editorLinkToPage', opts => { | ||||||
|  |       this.insertLink() | ||||||
|  |     }) | ||||||
|  |  | ||||||
|     // Handle save conflict |     // Handle save conflict | ||||||
|     this.$root.$on('saveConflict', () => { |     this.$root.$on('saveConflict', () => { | ||||||
|       this.isConflict = true |       this.isConflict = true | ||||||
|   | |||||||
							
								
								
									
										58
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								package.json
									
									
									
									
									
								
							| @@ -45,10 +45,10 @@ | |||||||
|     "acme": "3.0.3", |     "acme": "3.0.3", | ||||||
|     "algoliasearch": "4.1.0", |     "algoliasearch": "4.1.0", | ||||||
|     "apollo-fetch": "0.7.0", |     "apollo-fetch": "0.7.0", | ||||||
|     "apollo-server": "2.11.0", |     "apollo-server": "2.12.0", | ||||||
|     "apollo-server-express": "2.11.0", |     "apollo-server-express": "2.12.0", | ||||||
|     "auto-load": "3.0.4", |     "auto-load": "3.0.4", | ||||||
|     "aws-sdk": "2.653.0", |     "aws-sdk": "2.656.0", | ||||||
|     "azure-search-client": "3.1.5", |     "azure-search-client": "3.1.5", | ||||||
|     "bcryptjs-then": "1.0.1", |     "bcryptjs-then": "1.0.1", | ||||||
|     "bluebird": "3.7.2", |     "bluebird": "3.7.2", | ||||||
| @@ -69,7 +69,7 @@ | |||||||
|     "dotize": "0.3.0", |     "dotize": "0.3.0", | ||||||
|     "elasticsearch6": "npm:@elastic/elasticsearch@6", |     "elasticsearch6": "npm:@elastic/elasticsearch@6", | ||||||
|     "elasticsearch7": "npm:@elastic/elasticsearch@7", |     "elasticsearch7": "npm:@elastic/elasticsearch@7", | ||||||
|     "emoji-regex": "8.0.0", |     "emoji-regex": "9.0.0", | ||||||
|     "express": "4.17.1", |     "express": "4.17.1", | ||||||
|     "express-brute": "1.0.1", |     "express-brute": "1.0.1", | ||||||
|     "express-session": "1.17.0", |     "express-session": "1.17.0", | ||||||
| @@ -84,7 +84,7 @@ | |||||||
|     "graphql-tools": "4.0.7", |     "graphql-tools": "4.0.7", | ||||||
|     "he": "1.2.0", |     "he": "1.2.0", | ||||||
|     "highlight.js": "9.18.1", |     "highlight.js": "9.18.1", | ||||||
|     "i18next": "19.3.4", |     "i18next": "19.4.1", | ||||||
|     "i18next-express-middleware": "1.9.1", |     "i18next-express-middleware": "1.9.1", | ||||||
|     "i18next-node-fs-backend": "2.1.3", |     "i18next-node-fs-backend": "2.1.3", | ||||||
|     "image-size": "0.8.3", |     "image-size": "0.8.3", | ||||||
| @@ -118,7 +118,7 @@ | |||||||
|     "mssql": "6.2.0", |     "mssql": "6.2.0", | ||||||
|     "multer": "1.4.2", |     "multer": "1.4.2", | ||||||
|     "mysql2": "2.1.0", |     "mysql2": "2.1.0", | ||||||
|     "nanoid": "3.0.2", |     "nanoid": "3.1.3", | ||||||
|     "node-2fa": "1.1.2", |     "node-2fa": "1.1.2", | ||||||
|     "node-cache": "5.1.0", |     "node-cache": "5.1.0", | ||||||
|     "nodemailer": "6.4.6", |     "nodemailer": "6.4.6", | ||||||
| @@ -143,9 +143,9 @@ | |||||||
|     "passport-saml": "1.3.3", |     "passport-saml": "1.3.3", | ||||||
|     "passport-twitch-oauth": "1.0.0", |     "passport-twitch-oauth": "1.0.0", | ||||||
|     "pem-jwk": "2.0.0", |     "pem-jwk": "2.0.0", | ||||||
|     "pg": "8.0.0", |     "pg": "8.0.2", | ||||||
|     "pg-hstore": "2.3.3", |     "pg-hstore": "2.3.3", | ||||||
|     "pg-query-stream": "3.0.4", |     "pg-query-stream": "3.0.6", | ||||||
|     "pg-tsquery": "8.1.0", |     "pg-tsquery": "8.1.0", | ||||||
|     "pug": "2.0.4", |     "pug": "2.0.4", | ||||||
|     "punycode": "2.1.1", |     "punycode": "2.1.1", | ||||||
| @@ -157,7 +157,7 @@ | |||||||
|     "safe-regex": "2.1.1", |     "safe-regex": "2.1.1", | ||||||
|     "sanitize-filename": "1.6.3", |     "sanitize-filename": "1.6.3", | ||||||
|     "scim-query-filter-parser": "2.0.4", |     "scim-query-filter-parser": "2.0.4", | ||||||
|     "semver": "7.1.3", |     "semver": "7.2.2", | ||||||
|     "serve-favicon": "2.5.0", |     "serve-favicon": "2.5.0", | ||||||
|     "simple-git": "1.132.0", |     "simple-git": "1.132.0", | ||||||
|     "solr-node": "1.2.1", |     "solr-node": "1.2.1", | ||||||
| @@ -188,25 +188,25 @@ | |||||||
|     "@babel/plugin-syntax-dynamic-import": "^7.8.3", |     "@babel/plugin-syntax-dynamic-import": "^7.8.3", | ||||||
|     "@babel/plugin-syntax-import-meta": "^7.8.3", |     "@babel/plugin-syntax-import-meta": "^7.8.3", | ||||||
|     "@babel/polyfill": "^7.8.7", |     "@babel/polyfill": "^7.8.7", | ||||||
|     "@babel/preset-env": "^7.9.0", |     "@babel/preset-env": "^7.9.5", | ||||||
|     "@mdi/font": "5.0.45", |     "@mdi/font": "5.0.45", | ||||||
|     "@panter/vue-i18next": "0.15.2", |     "@panter/vue-i18next": "0.15.2", | ||||||
|     "@requarks/ckeditor5": "12.4.0-wiki.14", |     "@requarks/ckeditor5": "12.4.0-wiki.16", | ||||||
|     "@vue/babel-preset-app": "4.3.0", |     "@vue/babel-preset-app": "4.3.1", | ||||||
|     "animate-sass": "0.8.2", |     "animate-sass": "0.8.2", | ||||||
|     "animated-number-vue": "1.0.0", |     "animated-number-vue": "1.0.0", | ||||||
|     "apollo-cache-inmemory": "1.6.5", |     "apollo-cache-inmemory": "1.6.5", | ||||||
|     "apollo-client": "2.6.8", |     "apollo-client": "2.6.8", | ||||||
|     "apollo-link": "1.2.13", |     "apollo-link": "1.2.14", | ||||||
|     "apollo-link-batch-http": "1.2.13", |     "apollo-link-batch-http": "1.2.14", | ||||||
|     "apollo-link-error": "1.1.12", |     "apollo-link-error": "1.1.13", | ||||||
|     "apollo-link-http": "1.5.16", |     "apollo-link-http": "1.5.17", | ||||||
|     "apollo-link-persisted-queries": "0.2.2", |     "apollo-link-persisted-queries": "0.2.2", | ||||||
|     "apollo-link-ws": "1.0.19", |     "apollo-link-ws": "1.0.20", | ||||||
|     "apollo-utilities": "1.3.3", |     "apollo-utilities": "1.3.3", | ||||||
|     "autoprefixer": "9.7.5", |     "autoprefixer": "9.7.6", | ||||||
|     "babel-eslint": "10.1.0", |     "babel-eslint": "10.1.0", | ||||||
|     "babel-jest": "25.2.6", |     "babel-jest": "25.3.0", | ||||||
|     "babel-loader": "^8.1.0", |     "babel-loader": "^8.1.0", | ||||||
|     "babel-plugin-graphql-tag": "2.5.0", |     "babel-plugin-graphql-tag": "2.5.0", | ||||||
|     "babel-plugin-lodash": "3.3.4", |     "babel-plugin-lodash": "3.3.4", | ||||||
| @@ -218,8 +218,8 @@ | |||||||
|     "clipboard": "2.0.6", |     "clipboard": "2.0.6", | ||||||
|     "codemirror": "5.52.2", |     "codemirror": "5.52.2", | ||||||
|     "copy-webpack-plugin": "5.1.1", |     "copy-webpack-plugin": "5.1.1", | ||||||
|     "core-js": "3.6.4", |     "core-js": "3.6.5", | ||||||
|     "css-loader": "3.4.2", |     "css-loader": "3.5.2", | ||||||
|     "cssnano": "4.1.10", |     "cssnano": "4.1.10", | ||||||
|     "d3": "5.15.1", |     "d3": "5.15.1", | ||||||
|     "duplicate-package-checker-webpack-plugin": "3.0.0", |     "duplicate-package-checker-webpack-plugin": "3.0.0", | ||||||
| @@ -234,21 +234,21 @@ | |||||||
|     "eslint-plugin-vue": "6.2.2", |     "eslint-plugin-vue": "6.2.2", | ||||||
|     "fibers": "4.0.2", |     "fibers": "4.0.2", | ||||||
|     "file-loader": "6.0.0", |     "file-loader": "6.0.0", | ||||||
|     "filepond": "4.13.0", |     "filepond": "4.13.1", | ||||||
|     "filepond-plugin-file-validate-type": "1.2.5", |     "filepond-plugin-file-validate-type": "1.2.5", | ||||||
|     "filesize.js": "2.0.0", |     "filesize.js": "2.0.0", | ||||||
|     "graphql-persisted-document-loader": "2.0.0", |     "graphql-persisted-document-loader": "2.0.0", | ||||||
|     "graphql-tag": "^2.10.3", |     "graphql-tag": "^2.10.3", | ||||||
|     "hammerjs": "2.0.8", |     "hammerjs": "2.0.8", | ||||||
|     "html-webpack-plugin": "4.0.4", |     "html-webpack-plugin": "4.2.0", | ||||||
|     "html-webpack-pug-plugin": "2.0.0", |     "html-webpack-pug-plugin": "2.0.0", | ||||||
|     "i18next-chained-backend": "2.0.1", |     "i18next-chained-backend": "2.0.1", | ||||||
|     "i18next-localstorage-backend": "3.1.1", |     "i18next-localstorage-backend": "3.1.1", | ||||||
|     "i18next-xhr-backend": "3.2.2", |     "i18next-xhr-backend": "3.2.2", | ||||||
|     "ignore-loader": "0.1.2", |     "ignore-loader": "0.1.2", | ||||||
|     "jest": "25.2.7", |     "jest": "25.3.0", | ||||||
|     "js-cookie": "2.2.1", |     "js-cookie": "2.2.1", | ||||||
|     "mermaid": "8.4.8", |     "mermaid": "8.5.0", | ||||||
|     "mini-css-extract-plugin": "0.9.0", |     "mini-css-extract-plugin": "0.9.0", | ||||||
|     "moment-duration-format": "2.3.2", |     "moment-duration-format": "2.3.2", | ||||||
|     "offline-plugin": "5.0.7", |     "offline-plugin": "5.0.7", | ||||||
| @@ -272,9 +272,9 @@ | |||||||
|     "script-ext-html-webpack-plugin": "2.1.4", |     "script-ext-html-webpack-plugin": "2.1.4", | ||||||
|     "simple-progress-webpack-plugin": "1.1.2", |     "simple-progress-webpack-plugin": "1.1.2", | ||||||
|     "style-loader": "1.1.3", |     "style-loader": "1.1.3", | ||||||
|     "terser": "4.6.10", |     "terser": "4.6.11", | ||||||
|     "twemoji-awesome": "1.0.6", |     "twemoji-awesome": "1.0.6", | ||||||
|     "url-loader": "4.0.0", |     "url-loader": "4.1.0", | ||||||
|     "velocity-animate": "1.5.2", |     "velocity-animate": "1.5.2", | ||||||
|     "viz.js": "2.1.2", |     "viz.js": "2.1.2", | ||||||
|     "vue": "2.6.11", |     "vue": "2.6.11", | ||||||
| @@ -291,7 +291,7 @@ | |||||||
|     "vue2-animate": "2.1.3", |     "vue2-animate": "2.1.3", | ||||||
|     "vuedraggable": "2.23.2", |     "vuedraggable": "2.23.2", | ||||||
|     "vuescroll": "4.15.0", |     "vuescroll": "4.15.0", | ||||||
|     "vuetify": "2.2.20", |     "vuetify": "2.2.21", | ||||||
|     "vuetify-loader": "1.4.3", |     "vuetify-loader": "1.4.3", | ||||||
|     "vuex": "3.1.3", |     "vuex": "3.1.3", | ||||||
|     "vuex-pathify": "1.4.1", |     "vuex-pathify": "1.4.1", | ||||||
| @@ -306,7 +306,7 @@ | |||||||
|     "webpackbar": "4.0.0", |     "webpackbar": "4.0.0", | ||||||
|     "whatwg-fetch": "3.0.0", |     "whatwg-fetch": "3.0.0", | ||||||
|     "write-file-webpack-plugin": "4.5.1", |     "write-file-webpack-plugin": "4.5.1", | ||||||
|     "xterm": "4.4.0", |     "xterm": "4.5.0", | ||||||
|     "zxcvbn": "4.4.2" |     "zxcvbn": "4.4.2" | ||||||
|   }, |   }, | ||||||
|   "browserslist": [ |   "browserslist": [ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user