1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- /**
- * @module easy-image/cloudservicesuploadadapter
- */
- import Plugin from '@ckeditor/ckeditor5-core/src/plugin'
- import FileRepository from '@ckeditor/ckeditor5-upload/src/filerepository'
- import UploadGateway from './uploadgateway'
- /**
- * A plugin that enables upload to [CKEditor Cloud Services](https://ckeditor.com/ckeditor-cloud-services/).
- *
- * It is mainly used by the {@link module:easy-image/easyimage~EasyImage} feature.
- *
- * After enabling this adapter you need to configure the CKEditor Cloud Services integration through
- * {@link module:cloud-services/cloudservices~CloudServicesConfig `config.cloudServices`}.
- *
- * @extends module:core/plugin~Plugin
- */
- export default class CloudServicesUploadAdapter extends Plugin {
- /**
- * @inheritDoc
- */
- static get requires() {
- return [FileRepository]
- }
- /**
- * @inheritDoc
- */
- init() {
- const editor = this.editor
- const token = { value: 'Bearer ' + sessionStorage.getItem('vue_admin_template_token') }
- const uploadUrl = process.env.VUE_APP_IMAGE_UPLOAD_URL
- if (!token) {
- return
- }
- this._uploadGateway = new CloudServicesUploadAdapter._UploadGateway(token, uploadUrl)
- editor.plugins.get(FileRepository).createUploadAdapter = loader => {
- return new Adapter(this._uploadGateway, loader)
- }
- }
- }
- /**
- * @private
- */
- class Adapter {
- constructor(uploadGateway, loader) {
- this.uploadGateway = uploadGateway
- this.loader = loader
- }
- upload() {
- return this.loader.file.then(file => {
- this.fileUploader = this.uploadGateway.upload(file)
- this.fileUploader.on('progress', (evt, data) => {
- this.loader.uploadTotal = data.total
- this.loader.uploaded = data.uploaded
- })
- return this.fileUploader.send()
- })
- }
- abort() {
- this.fileUploader.abort()
- }
- }
- // Store the API in static property to easily overwrite it in tests.
- // Too bad dependency injection does not work in Webpack + ES 6 (const) + Babel.
- CloudServicesUploadAdapter._UploadGateway = UploadGateway
|