@@ -158,89 +158,159 @@ var zhyd = window.zhyd || {
158
158
uploadUrl : "" ,
159
159
uploadFileName : "file" ,
160
160
uploadType : "" ,
161
- customCss : { }
161
+ customCss : {
162
+ border : "1px solid #ccc;" ,
163
+ height : "300px"
164
+ } ,
165
+ defaultHtml : "<p><br></p>"
162
166
163
167
} ,
164
168
init : function ( options ) {
165
169
var config = $ . extend ( zhyd . wangEditor . defaultConfig , options ) ;
166
- var E = window . wangEditor ;
167
- editor = new E ( config . container ) ;
168
- // 配置编辑器 start
169
- // 关闭粘贴样式的过滤
170
- editor . config . pasteFilterStyle = false ;
171
- editor . config . zIndex = 100 ;
172
- editor . config . withCredentials = true ;
170
+ $ ( config . container ) . before ( $ ( '<div id="toolbar-container"></div>' ) ) ;
173
171
if ( config . textareaName ) {
174
172
$ ( '<textarea class="wangeditor-textarea" id="' + config . textareaName + '" name="' + config . textareaName + '" style="display: none" required="required"></textarea>' ) . insertAfter ( $ ( config . container ) ) ;
175
173
}
176
174
var $contentBox = $ ( 'textarea[name=' + config . textareaName + ']' ) ;
177
- editor . config . onchange = function ( html ) {
178
- // 监控变化,同步更新到 textarea
179
- $contentBox . val ( html ) ;
180
- } ;
181
- // 注册上传文件插件
182
- zhyd . wangEditor . plugins . registerUpload ( editor , config . uploadUrl , config . uploadFileName , config . uploadType , function ( result , curEditor ) {
183
- // 图片上传并返回结果,自定义插入图片的事件(而不是编辑器自动插入图片!!!)
184
- // insertImg 是插入图片的函数,editor 是编辑器对象,result 是服务器端返回的结果
185
- if ( result . status == 200 ) {
186
- var imgFullPath = result . data ;
187
- curEditor . txt . append ( '<img src="' + imgFullPath + '" alt="" style="max-width: 100%;height: auto;border-radius: 6px;"/>' ) ;
188
- // 解决上传完图片如果未进行其他操作,则不会触发编辑器的“change”事件,导致实际文章内容中缺少最后上传的图片文件 2018-07-13
189
- $contentBox . val ( editor . txt . html ( ) ) ;
190
- } else {
191
- $ . alert . error ( result . message ) ;
192
- }
193
- } ) ;
194
- // 配置编辑器 end
195
- editor . create ( ) ;
196
- // 注册全屏插件
197
- // 注册图片资源库
198
- zhyd . wangEditor . plugins . registerMaterial ( editor , $contentBox ) ;
199
175
200
176
if ( config . customCss ) {
201
177
// 自定义编辑器的样式
202
178
for ( var key in config . customCss ) {
203
179
var value = config . customCss [ key ] ;
204
- editor . $textContainerElem . css ( key , value ) ;
180
+ $ ( config . container ) . css ( key , value ) ;
205
181
}
206
182
}
207
- } ,
208
- plugins : {
209
- registerUpload : function ( editor , uploadUrl , uploadFileName , uploadType , callback ) {
210
- if ( uploadUrl ) {
211
- // 上传图片到服务器
212
- editor . config . uploadImgServer = uploadUrl ;
213
- editor . config . uploadFileName = uploadFileName ;
214
- // 将图片大小限制为 50M
215
- editor . config . uploadImgMaxSize = 50 * 1024 * 1024 ;
216
- // 超时时间
217
- editor . config . uploadImgTimeout = 10000 ;
218
- // 自定义上传参数
219
- editor . config . uploadImgParams = {
220
- // 如果版本 <=v3.1.0 ,属性值会自动进行 encode ,此处无需 encode
221
- // 如果版本 >=v3.1.1 ,属性值不会自动 encode ,如有需要自己手动 encode
222
- uploadType : uploadType
223
- } ;
224
- editor . config . customAlert = function ( msg ) {
225
- $ . alert . error ( msg ) ;
226
- } ;
227
- editor . config . uploadImgHooks = {
228
- error : function ( xhr , editor ) {
229
- $ . alert . error ( "图片上传出错" ) ;
183
+
184
+ const { createEditor, createToolbar } = window . wangEditor
185
+
186
+ const editorConfig = {
187
+ placeholder : 'Type here...' ,
188
+ onChange ( editor ) {
189
+ const html = editor . getHtml ( )
190
+ // 监控变化,同步更新到 textarea
191
+ $contentBox . val ( html ) ;
192
+ console . log ( 'changed editor content' , html )
193
+ } ,
194
+ customAlert ( msg , type ) {
195
+ switch ( type ) {
196
+ case 'success' :
197
+ $ . alert . info ( msg ) ;
198
+ break
199
+ case 'info' :
200
+ $ . alert . info ( msg ) ;
201
+ break
202
+ case 'warning' :
203
+ $ . alert . error ( msg ) ;
204
+ break
205
+ case 'error' :
206
+ $ . alert . error ( msg ) ;
207
+ break
208
+ default :
209
+ $ . alert . info ( msg ) ;
210
+ break
211
+ }
212
+ } ,
213
+ MENU_CONF : {
214
+ uploadImage : {
215
+ server : config . uploadUrl ,
216
+ // form-data fieldName ,默认值 'wangeditor-uploaded-image'
217
+ fieldName : config . uploadFileName ,
218
+
219
+ // 单个文件的最大体积限制,默认为 5M
220
+ maxFileSize : 5 * 1024 * 1024 , // 5M
221
+
222
+ // 最多可上传几个文件,默认为 100
223
+ maxNumberOfFiles : 1 ,
224
+
225
+ // 选择文件时的类型限制,默认为 ['image/*'] 。如不想限制,则设置为 []
226
+ allowedFileTypes : [ 'image/*' ] ,
227
+
228
+ // 自定义上传参数,例如传递验证的 token 等。参数会被添加到 formData 中,一起上传到服务端。
229
+ meta : {
230
+ uploadType : config . uploadType ,
230
231
} ,
231
- timeout : function ( xhr , editor ) {
232
- $ . alert . error ( "请求超时" ) ;
232
+
233
+ // 将 meta 拼接到 url 参数中,默认 false
234
+ metaWithUrl : false ,
235
+
236
+ // 自定义增加 http header
237
+ headers : {
233
238
} ,
234
- customInsert : function ( insertImg , result , editor ) {
235
- if ( callback ) {
236
- callback ( result , editor ) ;
239
+
240
+ // 跨域是否传递 cookie ,默认为 false
241
+ withCredentials : true ,
242
+
243
+ // 超时时间,默认为 10 秒
244
+ timeout : 10 * 1000 ,
245
+
246
+ // 单个文件上传失败
247
+ onFailed ( file , res ) { // TS 语法
248
+ console . log ( `${ file . name } 上传失败` , res )
249
+ $ . alert . error ( `${ file . name } 上传失败` ) ;
250
+ } ,
251
+
252
+ // 上传错误,或者触发 timeout 超时
253
+ onError ( file , err , res ) { // TS 语法
254
+ console . log ( `${ file . name } 上传出错` , err , res )
255
+ $ . alert . error ( `${ file . name } 上传出错, ${ err } ` ) ;
256
+ } ,
257
+ // 自定义插入图片
258
+ customInsert ( result , insertFn ) {
259
+ // customInsert(res, insertFn) { // JS 语法
260
+ // res 即服务端的返回结果
261
+
262
+ // 从 res 中找到 url alt href ,然后插入图片
263
+ console . log ( 'upload callback:' , result ) ;
264
+ // 图片上传并返回结果,自定义插入图片的事件(而不是编辑器自动插入图片!!!)
265
+ // insertImg 是插入图片的函数,editor 是编辑器对象,result 是服务器端返回的结果
266
+ if ( result . status === 200 ) {
267
+ var imgFullPath = result . data ;
268
+ const html = '<img src="' + imgFullPath + '" alt="" style="max-width: 100%;height: auto;border-radius: 6px;"/>' ;
269
+ editor . dangerouslyInsertHtml ( html ) ;
237
270
} else {
238
- console . log ( 'upload callback:' + insertImg , result , editor ) ;
271
+ $ . alert . error ( result . message ) ;
239
272
}
273
+ } ,
274
+ } ,
275
+ uploadVideo : {
276
+ server : '/api/unsupported_upload_video' ,
277
+ fieldName : 'unsupported' ,
278
+ timeout : 0 , // 5 秒
279
+ onBeforeUpload ( file ) {
280
+ $ . alert . error ( '不支持在线上传视频,请使用插入视频' ) ;
281
+ return false
240
282
}
241
- } ;
283
+ }
242
284
}
243
- } ,
285
+ }
286
+ editor = createEditor ( {
287
+ selector : config . container ,
288
+ html : config . defaultHtml ,
289
+ config : editorConfig ,
290
+ mode : 'default' , // or 'simple'
291
+ } )
292
+ const toolbarConfig = {
293
+ }
294
+
295
+ const toolbar = createToolbar ( {
296
+ editor,
297
+ selector : '#toolbar-container' ,
298
+ config : toolbarConfig ,
299
+ mode : 'default' , // or 'simple'
300
+ } )
301
+ // 注册全屏插件
302
+ // 注册图片资源库
303
+ zhyd . wangEditor . plugins . registerMaterial ( editor , $contentBox ) ;
304
+ //
305
+ // if (config.customCss) {
306
+ // // 自定义编辑器的样式
307
+ // for (var key in config.customCss) {
308
+ // var value = config.customCss[key];
309
+ // editor.$textContainerElem.css(key, value);
310
+ // }
311
+ // }
312
+ } ,
313
+ plugins : {
244
314
registerMaterial : function ( editor , $contentBox ) {
245
315
$ ( "div[id^='w-e-img']" ) . unbind ( "click" ) . click ( function ( ) {
246
316
setTimeout ( function ( ) {
0 commit comments