This repository has been archived by the owner on Aug 22, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 267
/
neditor.service.js
234 lines (224 loc) · 9.22 KB
/
neditor.service.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
/**
* 自定义上传接口
* 由于所有Neditor请求都通过editor对象的getActionUrl方法获取上传接口,可以直接通过复写这个方法实现自定义上传接口
* @param {String} action 匹配neditor.config.js中配置的xxxActionName
* @returns 返回自定义的上传接口
*/
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
/* 按config中的xxxActionName返回对应的接口地址 */
if (action == 'uploadimage' || action == 'uploadscrawl') {
return 'http://a.b.com/upload.php';
} else if (action == 'uploadvideo') {
return 'http://a.b.com/video.php';
} else {
return this._bkGetActionUrl.call(this, action);
}
}
/**
* 图片上传service
* @param {Object} context UploadImage对象 图片上传上下文
* @param {Object} editor 编辑器对象
* @returns imageUploadService 对象
*/
window.UEDITOR_CONFIG['imageUploadService'] = function(context, editor) {
return {
/**
* 触发fileQueued事件时执行
* 当文件被加入队列以后触发,用来设置上传相关的数据 (比如: url和自定义参数)
* @param {Object} file 当前选择的文件对象
*/
setUploadData: function(file) {
return file;
},
/**
* 触发uploadBeforeSend事件时执行
* 在文件上传之前触发,用来添加附带参数
* @param {Object} object 当前上传对象
* @param {Object} data 默认的上传参数,可以扩展此对象来控制上传参数
* @param {Object} headers 可以扩展此对象来控制上传头部
* @returns 上传参数对象
*/
setFormData: function(object, data, headers) {
return data;
},
/**
* 触发startUpload事件时执行
* 当开始上传流程时触发,用来设置Uploader配置项
* @param {Object} uploader
* @returns uploader
*/
setUploaderOptions: function(uploader) {
return uploader;
},
/**
* 触发uploadSuccess事件时执行
* 当文件上传成功时触发,可以在这里修改上传接口返回的response对象
* @param {Object} res 上传接口返回的response
* @returns {Boolean} 上传接口返回的response成功状态条件 (比如: res.code == 200)
*/
getResponseSuccess: function(res) {
return res.code == 200;
},
/* 指定上传接口返回的response中图片路径的字段,默认为 url
* 如果图片路径字段不是res的属性,可以写成 对象.属性 的方式,例如:data.url
* */
imageSrcField: 'url'
}
};
/**
* 视频上传service
* @param {Object} context UploadVideo对象 视频上传上下文
* @param {Object} editor 编辑器对象
* @returns videoUploadService 对象
*/
window.UEDITOR_CONFIG['videoUploadService'] = function(context, editor) {
return {
/**
* 触发fileQueued事件时执行
* 当文件被加入队列以后触发,用来设置上传相关的数据 (比如: url和自定义参数)
* @param {Object} file 当前选择的文件对象
*/
setUploadData: function(file) {
return file;
},
/**
* 触发uploadBeforeSend事件时执行
* 在文件上传之前触发,用来添加附带参数
* @param {Object} object 当前上传对象
* @param {Object} data 默认的上传参数,可以扩展此对象来控制上传参数
* @param {Object} headers 可以扩展此对象来控制上传头部
* @returns 上传参数对象
*/
setFormData: function(object, data, headers) {
return data;
},
/**
* 触发startUpload事件时执行
* 当开始上传流程时触发,用来设置Uploader配置项
* @param {Object} uploader
* @returns uploader
*/
setUploaderOptions: function(uploader) {
return uploader;
},
/**
* 触发uploadSuccess事件时执行
* 当文件上传成功时触发,可以在这里修改上传接口返回的response对象
* @param {Object} res 上传接口返回的response
* @returns {Boolean} 上传接口返回的response成功状态条件 (比如: res.code == 200)
*/
getResponseSuccess: function(res) {
return res.code == 200;
},
/* 指定上传接口返回的response中视频路径的字段,默认为 url
* 如果视频路径字段不是res的属性,可以写成 对象.属性 的方式,例如:data.url
* */
videoSrcField: 'url'
}
};
/**
* 涂鸦上传service
* @param {Object} context scrawlObj对象
* @param {Object} editor 编辑器对象
* @returns scrawlUploadService 对象
*/
window.UEDITOR_CONFIG['scrawlUploadService'] = function(context, editor) {
return scrawlUploadService = {
/**
* 点击涂鸦模态框确认按钮时触发
* 上传涂鸦图片
* @param {Object} file 涂鸦canvas生成的图片
* @param {Object} base64 涂鸦canvas生成的base64
* @param {Function} success 上传成功回调函数,回传上传成功的response对象
* @param {Function} fail 上传失败回调函数,回传上传失败的response对象
*/
/**
* 上传成功的response对象必须为以下两个属性赋值
*
* 上传接口返回的response成功状态条件 {Boolean} (比如: res.code == 200)
* res.responseSuccess = res.code == 200;
*
* 指定上传接口返回的response中涂鸦图片路径的字段,默认为 url
* res.videoSrcField = 'url';
*/
uploadScraw: function(file, base64, success, fail) {
/* 模拟上传操作 */
var formData = new FormData();
formData.append('file', file, file.name);
$.ajax({
url: editor.getActionUrl(editor.getOpt('scrawlActionName')),
type: 'POST',
//ajax2.0可以不用设置请求头,但是jq帮我们自动设置了,这样的话需要我们自己取消掉
contentType: false,
//取消帮我们格式化数据,是什么就是什么
processData: false,
data: formData
}).done(function(res) {
var res = JSON.parse(res);
/* 上传接口返回的response成功状态条件 (比如: res.code == 200) */
res.responseSuccess = res.code == 200;
/* 指定上传接口返回的response中涂鸦图片路径的字段,默认为 url
* 如果涂鸦图片路径字段不是res的属性,可以写成 对象.属性 的方式,例如:data.url
*/
res.scrawlSrcField = 'url';
/* 上传成功 */
success.call(context, res);
}).fail(function(err) {
/* 上传失败 */
fail.call(context, err);
});
}
}
}
/**
* 附件上传service
* @param {Object} context UploadFile对象 附件上传上下文
* @param {Object} editor 编辑器对象
* @returns fileUploadService 对象
*/
window.UEDITOR_CONFIG['fileUploadService'] = function(context, editor) {
return {
/**
* 触发fileQueued事件时执行
* 当文件被加入队列以后触发,用来设置上传相关的数据 (比如: url和自定义参数)
* @param {Object} file 当前选择的文件对象
*/
setUploadData: function(file) {
return file;
},
/**
* 触发uploadBeforeSend事件时执行
* 在文件上传之前触发,用来添加附带参数
* @param {Object} object 当前上传对象
* @param {Object} data 默认的上传参数,可以扩展此对象来控制上传参数
* @param {Object} headers 可以扩展此对象来控制上传头部
* @returns 上传参数对象
*/
setFormData: function(object, data, headers) {
return data;
},
/**
* 触发startUpload事件时执行
* 当开始上传流程时触发,用来设置Uploader配置项
* @param {Object} uploader
* @returns uploader
*/
setUploaderOptions: function(uploader) {
return uploader;
},
/**
* 触发uploadSuccess事件时执行
* 当文件上传成功时触发,可以在这里修改上传接口返回的response对象
* @param {Object} res 上传接口返回的response
* @returns {Boolean} 上传接口返回的response成功状态条件 (比如: res.code == 200)
*/
getResponseSuccess: function(res) {
return res.code == 200;
},
/* 指定上传接口返回的response中附件路径的字段,默认为 url
* 如果附件路径字段不是res的属性,可以写成 对象.属性 的方式,例如:data.url
* */
fileSrcField: 'url'
}
};