editor.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import {CDN_IMG_URL} from './config'
  2. import network from "./network";
  3. import tool from "./tool";
  4. const EDITOR_ROOT_URL = `${CDN_IMG_URL}/tinymce`
  5. const EDITOR_LANGUAGE = `${EDITOR_ROOT_URL}/langs/zh_CN.js`
  6. let fullEditor = {
  7. // language_url: EDITOR_LANGUAGE,
  8. height: 500,
  9. plugins: 'print preview searchreplace autolink directionality visualblocks visualchars fullscreen link template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists textcolor wordcount imagetools contextmenu colorpicker textpattern help',
  10. toolbar1: 'formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat',
  11. }
  12. let textEditor = {
  13. // language_url: EDITOR_LANGUAGE,
  14. height: 500,
  15. menubar: false,
  16. plugins: [
  17. 'advlist autolink lists link charmap print preview anchor textcolor colorpicker',
  18. 'searchreplace visualblocks code fullscreen',
  19. 'insertdatetime media table contextmenu paste image code help'
  20. ],
  21. toolbar: 'undo redo | formatselect | bold italic backcolor forecolor | link image | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat | preview | help',
  22. automatic_uploads: false,
  23. image_title: false,
  24. image_description: false,
  25. images_upload_base_path: 'article',
  26. file_picker_types: 'file image media',
  27. images_upload_handler: (blobInfo, success, failure) => {
  28. const handler = async () => {
  29. let token = await network.getData('file/token');
  30. let params = new FormData()
  31. params.append('file', blobInfo.blob())
  32. params.append('uploadToken', token)
  33. await network.postData('ad/upload', params).then(response => {
  34. let imageUrl = tool.getArImage(response, '/files/');
  35. success(imageUrl)
  36. }).catch(error => {
  37. failure(error)
  38. })
  39. }
  40. handler();
  41. },
  42. file_picker_callback: (callback, value, meta) => {
  43. // 模拟出一个input用于添加本地文件
  44. let inputElem = document.createElement('input');
  45. inputElem.setAttribute('type', 'file');
  46. inputElem.click();
  47. inputElem.onchange = () => {
  48. const handler = async () => {
  49. let token = await network.getData('file/token');
  50. let file = inputElem.files[0];
  51. let params = new FormData()
  52. params.append('file', file);
  53. params.append('uploadToken', token);
  54. await network.postData('article/upload', params).then(response => {
  55. let fileUrl = tool.getArImage(response, '/files/');
  56. callback(fileUrl, {text: response})
  57. }).catch(error => {
  58. console.log(error)
  59. })
  60. }
  61. handler();
  62. }
  63. },
  64. }
  65. export {
  66. fullEditor,
  67. textEditor,
  68. EDITOR_ROOT_URL
  69. }