119 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| layui.define([], function (exports) {
 | |
| 	var MOD_NAME = 'tinymce';
 | |
| 	var modFile = layui.cache.modules['tinymce'];
 | |
| 	var modPath = modFile.substr(0, modFile.lastIndexOf('.'));
 | |
| 	var plugin_filename = 'tinymce.min.js'//插件名称
 | |
| 	var settings = {
 | |
| 		base_url:modPath,
 | |
| 		// images_upload_url: '/admin/api/upload/sourse/tinymce',//图片上传接口
 | |
| 		images_upload_url: '/api/index/tinymce_upload',//图片上传接口
 | |
| 		// images_upload_url: '/api/index/upload', // 新的图片上传接口
 | |
| 		
 | |
| 		images_upload_credentials:true,
 | |
| 		placeholder: '请输入内容...',
 | |
| 		language: 'zh_CN',//语言
 | |
| 		suffix: '.min',
 | |
| 		selector: '#gouguedit',
 | |
| 		quickbars_insert_toolbar:'',
 | |
| 		quickbars_selection_toolbar: 'cut copy | bold italic underline strikethrough ',
 | |
| 		plugins: 'code quickbars print preview searchreplace autolink fullscreen image link media codesample table charmap hr advlist lists wordcount imagetools indent2em upfile',
 | |
| 		toolbar: 'code undo redo | forecolor backcolor bold italic underline strikethrough removeformat formatpainter | alignleft aligncenter alignright alignjustify outdent indent indent2em | bullist numlist table blockquote link image upfile media codesample | formatselect fontselect fontsizeselect',
 | |
| 		resize: false,
 | |
| 		elementpath: false,
 | |
| 		branding: false,
 | |
| 		statusbar: false,
 | |
| 		convert_urls: false,// 附件路径无需要转换为相对路径。
 | |
| 		contextmenu_never_use_native: true,
 | |
| 		paste_data_images: true,
 | |
| 		menubar: 'file edit insert format table',
 | |
| 		menu: {
 | |
| 			file: { title: '文件', items: 'preview fullscreen | wordcount' },
 | |
| 			edit: { title: '编辑', items: 'undo redo | cut copy paste pastetext selectall | searchreplace' },
 | |
| 			format: {
 | |
| 				title: '格式',
 | |
| 				items: 'bold italic underline strikethrough superscript subscript | formats | forecolor backcolor | removeformat'
 | |
| 			},
 | |
| 			table: { title: '表格', items: 'inserttable tableprops deletetable | cell row column' },
 | |
| 		},
 | |
| 		codesample_languages: [
 | |
| 			{text: 'HTML', value: 'html'},
 | |
| 			{text: 'JavaScript', value: 'javascript'},
 | |
| 			{text: 'CSS', value: 'css'},
 | |
| 			{text: 'PHP', value: 'php'},
 | |
| 			{text: 'Java', value: 'java'},
 | |
| 			{text: 'Shell', value: 'shell'},
 | |
| 			{text: 'SQL', value: 'sql'},
 | |
| 			{text: 'JOSN', value: 'json'},
 | |
| 			{text: 'Python', value: 'python'},
 | |
| 			{text: 'XML', value: 'xml'},
 | |
| 			{text: 'Golang', value: 'go'},
 | |
| 			{text: 'Objective-c', value: 'objective-c'},
 | |
| 		],
 | |
| 		fontsize_formats: '12px 14px 16px 18px 24px 36px 48px 56px 72px',
 | |
| 		font_formats: '微软雅黑=Microsoft YaHei,Helvetica Neue,PingFang SC,sans-serif;苹果苹方=PingFang SC,Microsoft YaHei,sans-serif;宋体=simsun,serif;仿宋体=FangSong,serif;黑体=SimHei,sans-serif;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats;知乎配置=BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, WenQuanYi Micro Hei, sans-serif;小米配置=Helvetica Neue,Helvetica,Arial,Microsoft Yahei,Hiragino Sans GB,Heiti SC,WenQuanYi Micro Hei,sans-serif',
 | |
| 		setup: function(editor) {
 | |
| 			console.log("ID为: " + editor.id + " 的编辑器即将初始化.");
 | |
| 		},
 | |
| 		init_instance_callback : function(editor) {
 | |
| 			console.log("ID为: " + editor.id + " 的编辑器已初始化完成.");
 | |
| 		},
 | |
| 		file_callback: function(file, callback) {
 | |
|             var formData = new FormData();
 | |
|             formData.append('file', file);
 | |
| 
 | |
|             $.ajax({
 | |
|                 url: '/api/index/tinymce_upload',
 | |
|                 type: 'POST',
 | |
|                 data: formData,
 | |
|                 processData: false,
 | |
|                 contentType: false,
 | |
|                 success: function(response) {
 | |
|                     if (response.location) {
 | |
|                         // 使用服务器响应中的文件URL
 | |
|                         callback(response.location);
 | |
|                     } else {
 | |
|                         console.error('上传失败:', response.message);
 | |
|                     }
 | |
|                 },
 | |
|                 error: function() {
 | |
|                     console.error('上传过程中发生错误');
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
|     };
 | |
| 
 | |
| 	var editor = {
 | |
| 		render: function (options) {
 | |
| 			loadScript();
 | |
| 			var opts = $.extend({}, settings, options), edit = this.get(opts.elem);
 | |
| 			if (edit) {
 | |
| 				edit.destroy();
 | |
| 			}
 | |
| 			tinymce.init(opts);
 | |
| 			return this.get(opts.elem);
 | |
| 		},
 | |
| 		// 获取ID对应的编辑器对象
 | |
| 		get: function (elem) {
 | |
| 			loadScript();
 | |
| 			if (elem && /^#|\./.test(elem)) {
 | |
| 				var id = elem.substr(1);
 | |
| 				var edit = tinymce.editors[id];
 | |
| 				return edit;
 | |
| 			} else {
 | |
| 				return false;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	function loadScript() {
 | |
| 		if (typeof tinymce == 'undefined') {
 | |
| 			$.ajax({//获取插件
 | |
| 				url: modPath + '/' + plugin_filename,
 | |
| 				dataType: 'script',
 | |
| 				cache: true,
 | |
| 				async: false,
 | |
| 			});
 | |
| 		}
 | |
| 	}
 | |
| 	exports(MOD_NAME, editor);
 | |
| });
 |