From 5abfd1dc32ed55b7f9b7ce3b3d0276175f20b816 Mon Sep 17 00:00:00 2001 From: yujialong <479214531@qq.com> Date: Thu, 12 Oct 2023 16:33:24 +0800 Subject: [PATCH] fix --- public/ueditor/dialogs/anchor/anchor.html | 40 - .../ueditor/dialogs/attachment/attachment.css | 681 - .../dialogs/attachment/attachment.html | 60 - .../ueditor/dialogs/attachment/attachment.js | 760 - .../attachment/fileTypeImages/icon_chm.gif | Bin 923 -> 0 bytes .../fileTypeImages/icon_default.png | Bin 841 -> 0 bytes .../attachment/fileTypeImages/icon_doc.gif | Bin 1012 -> 0 bytes .../attachment/fileTypeImages/icon_exe.gif | Bin 949 -> 0 bytes .../attachment/fileTypeImages/icon_jpg.gif | Bin 950 -> 0 bytes .../attachment/fileTypeImages/icon_mp3.gif | Bin 986 -> 0 bytes .../attachment/fileTypeImages/icon_mv.gif | Bin 1001 -> 0 bytes .../attachment/fileTypeImages/icon_pdf.gif | Bin 996 -> 0 bytes .../attachment/fileTypeImages/icon_ppt.gif | Bin 1001 -> 0 bytes .../attachment/fileTypeImages/icon_psd.gif | Bin 1009 -> 0 bytes .../attachment/fileTypeImages/icon_rar.gif | Bin 1007 -> 0 bytes .../attachment/fileTypeImages/icon_txt.gif | Bin 970 -> 0 bytes .../attachment/fileTypeImages/icon_xls.gif | Bin 1005 -> 0 bytes .../dialogs/attachment/images/alignicon.gif | Bin 1051 -> 0 bytes .../dialogs/attachment/images/alignicon.png | Bin 3714 -> 0 bytes .../ueditor/dialogs/attachment/images/bg.png | Bin 2810 -> 0 bytes .../dialogs/attachment/images/file-icons.gif | Bin 20097 -> 0 bytes .../dialogs/attachment/images/file-icons.png | Bin 44070 -> 0 bytes .../dialogs/attachment/images/icons.gif | Bin 453 -> 0 bytes .../dialogs/attachment/images/icons.png | Bin 2678 -> 0 bytes .../dialogs/attachment/images/image.png | Bin 1672 -> 0 bytes .../dialogs/attachment/images/progress.png | Bin 1269 -> 0 bytes .../dialogs/attachment/images/success.gif | Bin 445 -> 0 bytes .../dialogs/attachment/images/success.png | Bin 1621 -> 0 bytes .../ueditor/dialogs/background/background.css | 94 - .../dialogs/background/background.html | 56 - .../ueditor/dialogs/background/background.js | 376 - .../ueditor/dialogs/background/images/bg.png | Bin 2810 -> 0 bytes .../dialogs/background/images/success.png | Bin 1621 -> 0 bytes public/ueditor/dialogs/charts/chart.config.js | 65 - public/ueditor/dialogs/charts/charts.css | 165 - public/ueditor/dialogs/charts/charts.html | 89 - public/ueditor/dialogs/charts/charts.js | 519 - .../ueditor/dialogs/charts/images/charts0.png | Bin 25306 -> 0 bytes .../ueditor/dialogs/charts/images/charts1.png | Bin 19263 -> 0 bytes .../ueditor/dialogs/charts/images/charts2.png | Bin 23016 -> 0 bytes .../ueditor/dialogs/charts/images/charts3.png | Bin 7823 -> 0 bytes .../ueditor/dialogs/charts/images/charts4.png | Bin 8344 -> 0 bytes .../ueditor/dialogs/charts/images/charts5.png | Bin 47084 -> 0 bytes public/ueditor/dialogs/emotion/emotion.css | 43 - public/ueditor/dialogs/emotion/emotion.html | 54 - public/ueditor/dialogs/emotion/emotion.js | 186 - public/ueditor/dialogs/emotion/images/0.gif | Bin 43 -> 0 bytes .../ueditor/dialogs/emotion/images/bface.gif | Bin 27167 -> 0 bytes .../ueditor/dialogs/emotion/images/cface.gif | Bin 8603 -> 0 bytes .../ueditor/dialogs/emotion/images/fface.gif | Bin 18479 -> 0 bytes .../dialogs/emotion/images/jxface2.gif | Bin 40706 -> 0 bytes .../emotion/images/neweditor-tab-bg.png | Bin 216 -> 0 bytes .../ueditor/dialogs/emotion/images/tface.gif | Bin 19805 -> 0 bytes .../ueditor/dialogs/emotion/images/wface.gif | Bin 49850 -> 0 bytes .../ueditor/dialogs/emotion/images/yface.gif | Bin 28409 -> 0 bytes public/ueditor/dialogs/gmap/gmap.html | 89 - public/ueditor/dialogs/help/help.css | 7 - public/ueditor/dialogs/help/help.html | 82 - public/ueditor/dialogs/help/help.js | 56 - public/ueditor/dialogs/image/image.css | 894 - public/ueditor/dialogs/image/image.html | 120 - public/ueditor/dialogs/image/image.js | 1127 - .../dialogs/image/images/alignicon.jpg | Bin 16101 -> 0 bytes public/ueditor/dialogs/image/images/bg.png | Bin 2810 -> 0 bytes public/ueditor/dialogs/image/images/icons.gif | Bin 453 -> 0 bytes public/ueditor/dialogs/image/images/icons.png | Bin 2678 -> 0 bytes public/ueditor/dialogs/image/images/image.png | Bin 1672 -> 0 bytes .../ueditor/dialogs/image/images/progress.png | Bin 1269 -> 0 bytes .../ueditor/dialogs/image/images/success.gif | Bin 445 -> 0 bytes .../ueditor/dialogs/image/images/success.png | Bin 1621 -> 0 bytes .../dialogs/insertframe/insertframe.html | 98 - public/ueditor/dialogs/internal.js | 81 - public/ueditor/dialogs/link/link.html | 132 - public/ueditor/dialogs/map/map.html | 135 - public/ueditor/dialogs/map/show.html | 118 - public/ueditor/dialogs/music/music.css | 30 - public/ueditor/dialogs/music/music.html | 32 - public/ueditor/dialogs/music/music.js | 192 - public/ueditor/dialogs/preview/preview.html | 40 - .../ueditor/dialogs/scrawl/images/addimg.png | Bin 628 -> 0 bytes .../ueditor/dialogs/scrawl/images/brush.png | Bin 608 -> 0 bytes .../ueditor/dialogs/scrawl/images/delimg.png | Bin 516 -> 0 bytes .../ueditor/dialogs/scrawl/images/delimgH.png | Bin 578 -> 0 bytes .../ueditor/dialogs/scrawl/images/empty.png | Bin 519 -> 0 bytes .../ueditor/dialogs/scrawl/images/emptyH.png | Bin 657 -> 0 bytes .../ueditor/dialogs/scrawl/images/eraser.png | Bin 43271 -> 0 bytes public/ueditor/dialogs/scrawl/images/redo.png | Bin 454 -> 0 bytes .../ueditor/dialogs/scrawl/images/redoH.png | Bin 536 -> 0 bytes .../ueditor/dialogs/scrawl/images/scale.png | Bin 435 -> 0 bytes .../ueditor/dialogs/scrawl/images/scaleH.png | Bin 330 -> 0 bytes public/ueditor/dialogs/scrawl/images/size.png | Bin 775 -> 0 bytes public/ueditor/dialogs/scrawl/images/undo.png | Bin 444 -> 0 bytes .../ueditor/dialogs/scrawl/images/undoH.png | Bin 511 -> 0 bytes public/ueditor/dialogs/scrawl/scrawl.css | 72 - public/ueditor/dialogs/scrawl/scrawl.html | 95 - public/ueditor/dialogs/scrawl/scrawl.js | 670 - .../dialogs/searchreplace/searchreplace.html | 102 - .../dialogs/searchreplace/searchreplace.js | 170 - .../dialogs/snapscreen/snapscreen.html | 58 - public/ueditor/dialogs/spechars/spechars.html | 21 - public/ueditor/dialogs/spechars/spechars.js | 57 - public/ueditor/dialogs/table/dragicon.png | Bin 304 -> 0 bytes public/ueditor/dialogs/table/edittable.css | 84 - public/ueditor/dialogs/table/edittable.html | 64 - public/ueditor/dialogs/table/edittable.js | 237 - public/ueditor/dialogs/table/edittd.html | 61 - public/ueditor/dialogs/table/edittip.html | 33 - public/ueditor/dialogs/template/config.js | 42 - public/ueditor/dialogs/template/images/bg.gif | Bin 84 -> 0 bytes .../ueditor/dialogs/template/images/pre0.png | Bin 250 -> 0 bytes .../ueditor/dialogs/template/images/pre1.png | Bin 291 -> 0 bytes .../ueditor/dialogs/template/images/pre2.png | Bin 394 -> 0 bytes .../ueditor/dialogs/template/images/pre3.png | Bin 485 -> 0 bytes .../ueditor/dialogs/template/images/pre4.png | Bin 393 -> 0 bytes public/ueditor/dialogs/template/template.css | 18 - public/ueditor/dialogs/template/template.html | 26 - public/ueditor/dialogs/template/template.js | 53 - public/ueditor/dialogs/video/images/bg.png | Bin 2810 -> 0 bytes .../dialogs/video/images/center_focus.jpg | Bin 11795 -> 0 bytes .../dialogs/video/images/file-icons.gif | Bin 20097 -> 0 bytes .../dialogs/video/images/file-icons.png | Bin 44070 -> 0 bytes public/ueditor/dialogs/video/images/icons.gif | Bin 453 -> 0 bytes public/ueditor/dialogs/video/images/icons.png | Bin 2678 -> 0 bytes public/ueditor/dialogs/video/images/image.png | Bin 1672 -> 0 bytes .../dialogs/video/images/left_focus.jpg | Bin 11423 -> 0 bytes .../dialogs/video/images/none_focus.jpg | Bin 11546 -> 0 bytes .../ueditor/dialogs/video/images/progress.png | Bin 1269 -> 0 bytes .../dialogs/video/images/right_focus.jpg | Bin 11334 -> 0 bytes .../ueditor/dialogs/video/images/success.gif | Bin 445 -> 0 bytes .../ueditor/dialogs/video/images/success.png | Bin 1621 -> 0 bytes public/ueditor/dialogs/video/video.css | 635 - public/ueditor/dialogs/video/video.html | 86 - public/ueditor/dialogs/video/video.js | 791 - public/ueditor/dialogs/webapp/webapp.html | 53 - public/ueditor/dialogs/wordimage/tangram.js | 1495 - .../ueditor/dialogs/wordimage/wordimage.html | 111 - public/ueditor/dialogs/wordimage/wordimage.js | 157 - public/ueditor/index.html | 175 - public/ueditor/lang/en/en.js | 684 - public/ueditor/lang/en/images/addimage.png | Bin 3373 -> 0 bytes .../lang/en/images/alldeletebtnhoverskin.png | Bin 743 -> 0 bytes .../lang/en/images/alldeletebtnupskin.png | Bin 743 -> 0 bytes public/ueditor/lang/en/images/background.png | Bin 3854 -> 0 bytes public/ueditor/lang/en/images/button.png | Bin 4929 -> 0 bytes public/ueditor/lang/en/images/copy.png | Bin 1222 -> 0 bytes .../ueditor/lang/en/images/deletedisable.png | Bin 649 -> 0 bytes .../ueditor/lang/en/images/deleteenable.png | Bin 664 -> 0 bytes .../ueditor/lang/en/images/listbackground.png | Bin 3750 -> 0 bytes public/ueditor/lang/en/images/localimage.png | Bin 3083 -> 0 bytes public/ueditor/lang/en/images/music.png | Bin 91561 -> 0 bytes .../lang/en/images/rotateleftdisable.png | Bin 719 -> 0 bytes .../lang/en/images/rotateleftenable.png | Bin 952 -> 0 bytes .../lang/en/images/rotaterightdisable.png | Bin 754 -> 0 bytes .../lang/en/images/rotaterightenable.png | Bin 1007 -> 0 bytes public/ueditor/lang/en/images/upload.png | Bin 3941 -> 0 bytes public/ueditor/lang/zh-cn/images/copy.png | Bin 4319 -> 0 bytes .../ueditor/lang/zh-cn/images/localimage.png | Bin 6979 -> 0 bytes public/ueditor/lang/zh-cn/images/music.png | Bin 23106 -> 0 bytes public/ueditor/lang/zh-cn/images/upload.png | Bin 6608 -> 0 bytes public/ueditor/lang/zh-cn/zh-cn.js | 669 - public/ueditor/themes/default/css/ueditor.css | 1906 - .../themes/default/css/ueditor.min.css | 8 - public/ueditor/themes/default/dialogbase.css | 100 - .../ueditor/themes/default/images/anchor.gif | Bin 184 -> 0 bytes .../ueditor/themes/default/images/arrow.png | Bin 1173 -> 0 bytes .../themes/default/images/arrow_down.png | Bin 1610 -> 0 bytes .../themes/default/images/arrow_up.png | Bin 1649 -> 0 bytes .../themes/default/images/button-bg.gif | Bin 1114 -> 0 bytes .../themes/default/images/cancelbutton.gif | Bin 1227 -> 0 bytes .../ueditor/themes/default/images/charts.png | Bin 518 -> 0 bytes .../themes/default/images/cursor_h.gif | Bin 253 -> 0 bytes .../themes/default/images/cursor_h.png | Bin 175 -> 0 bytes .../themes/default/images/cursor_v.gif | Bin 370 -> 0 bytes .../themes/default/images/cursor_v.png | Bin 177 -> 0 bytes .../themes/default/images/dialog-title-bg.png | Bin 938 -> 0 bytes .../themes/default/images/filescan.png | Bin 4282 -> 0 bytes .../themes/default/images/highlighted.gif | Bin 111 -> 0 bytes .../themes/default/images/icons-all.gif | Bin 3750 -> 0 bytes .../ueditor/themes/default/images/icons.gif | Bin 20947 -> 0 bytes .../ueditor/themes/default/images/icons.png | Bin 19694 -> 0 bytes .../themes/default/images/img-cracked.png | Bin 1497 -> 0 bytes .../themes/default/images/loaderror.png | Bin 3209 -> 0 bytes .../ueditor/themes/default/images/loading.gif | Bin 734 -> 0 bytes public/ueditor/themes/default/images/lock.gif | Bin 1062 -> 0 bytes .../default/images/neweditor-tab-bg.png | Bin 216 -> 0 bytes .../themes/default/images/pagebreak.gif | Bin 54 -> 0 bytes .../ueditor/themes/default/images/scale.png | Bin 167 -> 0 bytes .../themes/default/images/sortable.png | Bin 2851 -> 0 bytes .../ueditor/themes/default/images/spacer.gif | Bin 43 -> 0 bytes .../themes/default/images/sparator_v.png | Bin 122 -> 0 bytes .../default/images/table-cell-align.png | Bin 1847 -> 0 bytes .../default/images/tangram-colorpicker.png | Bin 17355 -> 0 bytes .../themes/default/images/toolbar_bg.png | Bin 170 -> 0 bytes .../themes/default/images/unhighlighted.gif | Bin 111 -> 0 bytes .../ueditor/themes/default/images/upload.png | Bin 6608 -> 0 bytes .../themes/default/images/videologo.gif | Bin 1604 -> 0 bytes public/ueditor/themes/default/images/word.gif | Bin 1019 -> 0 bytes .../themes/default/images/wordpaste.png | Bin 6467 -> 0 bytes public/ueditor/themes/iframe.css | 1 - .../third-party/SyntaxHighlighter/shCore.js | 3655 -- .../SyntaxHighlighter/shCoreDefault.css | 1 - .../third-party/codemirror/codemirror.css | 104 - .../third-party/codemirror/codemirror.js | 3581 -- .../highcharts/adapters/mootools-adapter.js | 13 - .../adapters/mootools-adapter.src.js | 313 - .../highcharts/adapters/prototype-adapter.js | 15 - .../adapters/prototype-adapter.src.js | 316 - .../adapters/standalone-framework.js | 17 - .../adapters/standalone-framework.src.js | 583 - .../third-party/highcharts/highcharts-more.js | 50 - .../highcharts/highcharts-more.src.js | 2430 -- .../third-party/highcharts/highcharts.js | 283 - .../third-party/highcharts/highcharts.src.js | 16974 -------- .../highcharts/modules/annotations.js | 7 - .../highcharts/modules/annotations.src.js | 401 - .../highcharts/modules/canvas-tools.js | 133 - .../highcharts/modules/canvas-tools.src.js | 3113 -- .../third-party/highcharts/modules/data.js | 17 - .../highcharts/modules/data.src.js | 582 - .../highcharts/modules/drilldown.js | 11 - .../highcharts/modules/drilldown.src.js | 447 - .../highcharts/modules/exporting.js | 22 - .../highcharts/modules/exporting.src.js | 709 - .../third-party/highcharts/modules/funnel.js | 12 - .../highcharts/modules/funnel.src.js | 289 - .../third-party/highcharts/modules/heatmap.js | 1 - .../highcharts/modules/heatmap.src.js | 53 - .../third-party/highcharts/modules/map.js | 27 - .../third-party/highcharts/modules/map.src.js | 1002 - .../highcharts/modules/no-data-to-display.js | 12 - .../modules/no-data-to-display.src.js | 128 - .../highcharts/themes/dark-blue.js | 254 - .../highcharts/themes/dark-green.js | 255 - .../third-party/highcharts/themes/gray.js | 257 - .../third-party/highcharts/themes/grid.js | 103 - .../third-party/highcharts/themes/skies.js | 89 - public/ueditor/third-party/jquery-1.10.2.js | 9789 ----- .../ueditor/third-party/jquery-1.10.2.min.js | 6 - .../ueditor/third-party/jquery-1.10.2.min.map | 1 - .../snapscreen/UEditorSnapscreen.exe | Bin 519936 -> 0 bytes .../ueditor/third-party/video-js/font/vjs.eot | Bin 3536 -> 0 bytes .../ueditor/third-party/video-js/font/vjs.svg | 65 - .../ueditor/third-party/video-js/font/vjs.ttf | Bin 3372 -> 0 bytes .../third-party/video-js/font/vjs.woff | Bin 4228 -> 0 bytes .../ueditor/third-party/video-js/video-js.css | 766 - .../third-party/video-js/video-js.min.css | 5 - .../ueditor/third-party/video-js/video.dev.js | 7108 ---- public/ueditor/third-party/video-js/video.js | 129 - .../third-party/webuploader/webuploader.css | 28 - .../webuploader/webuploader.custom.js | 5670 --- .../webuploader/webuploader.custom.min.js | 2 - .../webuploader/webuploader.flashonly.js | 4176 -- .../webuploader/webuploader.flashonly.min.js | 2 - .../webuploader/webuploader.html5only.js | 5559 --- .../webuploader/webuploader.html5only.min.js | 2 - .../third-party/webuploader/webuploader.js | 6733 ---- .../webuploader/webuploader.min.js | 2 - .../webuploader/webuploader.withoutimage.js | 4593 --- .../webuploader.withoutimage.min.js | 2 - .../zeroclipboard/ZeroClipboard.js | 1256 - .../zeroclipboard/ZeroClipboard.min.js | 9 - public/ueditor/ueditor.all.js | 32931 --------------- public/ueditor/ueditor.all.min.js | 32941 ---------------- public/ueditor/ueditor.config.js | 508 - public/ueditor/ueditor.parse.js | 1230 - public/ueditor/ueditor.parse.min.js | 5 - src/assets/images/style/74.png | Bin 0 -> 2540796 bytes src/components/editor.js | 4 +- src/components/img-upload/Cropper.vue | 2 +- src/components/modules/content.vue | 4 +- src/components/modules/history.vue | 6 +- src/components/modules/module.vue | 7 +- src/const/modules.js | 47 +- src/mixins/page/index.js | 2 +- src/pages/article/add/editor.js | 2 +- src/pages/article/add/index.vue | 163 +- src/pages/column/add/index.vue | 2 +- src/pages/column/page/lightSources.vue | 8 +- src/pages/column/page/overviewIntro.vue | 12 +- 279 files changed, 156 insertions(+), 165035 deletions(-) delete mode 100644 public/ueditor/dialogs/anchor/anchor.html delete mode 100644 public/ueditor/dialogs/attachment/attachment.css delete mode 100644 public/ueditor/dialogs/attachment/attachment.html delete mode 100644 public/ueditor/dialogs/attachment/attachment.js delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_default.png delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_exe.gif delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_jpg.gif delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_txt.gif delete mode 100644 public/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif delete mode 100644 public/ueditor/dialogs/attachment/images/alignicon.gif delete mode 100644 public/ueditor/dialogs/attachment/images/alignicon.png delete mode 100644 public/ueditor/dialogs/attachment/images/bg.png delete mode 100644 public/ueditor/dialogs/attachment/images/file-icons.gif delete mode 100644 public/ueditor/dialogs/attachment/images/file-icons.png delete mode 100644 public/ueditor/dialogs/attachment/images/icons.gif delete mode 100644 public/ueditor/dialogs/attachment/images/icons.png delete mode 100644 public/ueditor/dialogs/attachment/images/image.png delete mode 100644 public/ueditor/dialogs/attachment/images/progress.png delete mode 100644 public/ueditor/dialogs/attachment/images/success.gif delete mode 100644 public/ueditor/dialogs/attachment/images/success.png delete mode 100644 public/ueditor/dialogs/background/background.css delete mode 100644 public/ueditor/dialogs/background/background.html delete mode 100644 public/ueditor/dialogs/background/background.js delete mode 100644 public/ueditor/dialogs/background/images/bg.png delete mode 100644 public/ueditor/dialogs/background/images/success.png delete mode 100644 public/ueditor/dialogs/charts/chart.config.js delete mode 100644 public/ueditor/dialogs/charts/charts.css delete mode 100644 public/ueditor/dialogs/charts/charts.html delete mode 100644 public/ueditor/dialogs/charts/charts.js delete mode 100644 public/ueditor/dialogs/charts/images/charts0.png delete mode 100644 public/ueditor/dialogs/charts/images/charts1.png delete mode 100644 public/ueditor/dialogs/charts/images/charts2.png delete mode 100644 public/ueditor/dialogs/charts/images/charts3.png delete mode 100644 public/ueditor/dialogs/charts/images/charts4.png delete mode 100644 public/ueditor/dialogs/charts/images/charts5.png delete mode 100644 public/ueditor/dialogs/emotion/emotion.css delete mode 100644 public/ueditor/dialogs/emotion/emotion.html delete mode 100644 public/ueditor/dialogs/emotion/emotion.js delete mode 100644 public/ueditor/dialogs/emotion/images/0.gif delete mode 100644 public/ueditor/dialogs/emotion/images/bface.gif delete mode 100644 public/ueditor/dialogs/emotion/images/cface.gif delete mode 100644 public/ueditor/dialogs/emotion/images/fface.gif delete mode 100644 public/ueditor/dialogs/emotion/images/jxface2.gif delete mode 100644 public/ueditor/dialogs/emotion/images/neweditor-tab-bg.png delete mode 100644 public/ueditor/dialogs/emotion/images/tface.gif delete mode 100644 public/ueditor/dialogs/emotion/images/wface.gif delete mode 100644 public/ueditor/dialogs/emotion/images/yface.gif delete mode 100644 public/ueditor/dialogs/gmap/gmap.html delete mode 100644 public/ueditor/dialogs/help/help.css delete mode 100644 public/ueditor/dialogs/help/help.html delete mode 100644 public/ueditor/dialogs/help/help.js delete mode 100644 public/ueditor/dialogs/image/image.css delete mode 100644 public/ueditor/dialogs/image/image.html delete mode 100644 public/ueditor/dialogs/image/image.js delete mode 100644 public/ueditor/dialogs/image/images/alignicon.jpg delete mode 100644 public/ueditor/dialogs/image/images/bg.png delete mode 100644 public/ueditor/dialogs/image/images/icons.gif delete mode 100644 public/ueditor/dialogs/image/images/icons.png delete mode 100644 public/ueditor/dialogs/image/images/image.png delete mode 100644 public/ueditor/dialogs/image/images/progress.png delete mode 100644 public/ueditor/dialogs/image/images/success.gif delete mode 100644 public/ueditor/dialogs/image/images/success.png delete mode 100644 public/ueditor/dialogs/insertframe/insertframe.html delete mode 100644 public/ueditor/dialogs/internal.js delete mode 100644 public/ueditor/dialogs/link/link.html delete mode 100644 public/ueditor/dialogs/map/map.html delete mode 100644 public/ueditor/dialogs/map/show.html delete mode 100644 public/ueditor/dialogs/music/music.css delete mode 100644 public/ueditor/dialogs/music/music.html delete mode 100644 public/ueditor/dialogs/music/music.js delete mode 100644 public/ueditor/dialogs/preview/preview.html delete mode 100644 public/ueditor/dialogs/scrawl/images/addimg.png delete mode 100644 public/ueditor/dialogs/scrawl/images/brush.png delete mode 100644 public/ueditor/dialogs/scrawl/images/delimg.png delete mode 100644 public/ueditor/dialogs/scrawl/images/delimgH.png delete mode 100644 public/ueditor/dialogs/scrawl/images/empty.png delete mode 100644 public/ueditor/dialogs/scrawl/images/emptyH.png delete mode 100644 public/ueditor/dialogs/scrawl/images/eraser.png delete mode 100644 public/ueditor/dialogs/scrawl/images/redo.png delete mode 100644 public/ueditor/dialogs/scrawl/images/redoH.png delete mode 100644 public/ueditor/dialogs/scrawl/images/scale.png delete mode 100644 public/ueditor/dialogs/scrawl/images/scaleH.png delete mode 100644 public/ueditor/dialogs/scrawl/images/size.png delete mode 100644 public/ueditor/dialogs/scrawl/images/undo.png delete mode 100644 public/ueditor/dialogs/scrawl/images/undoH.png delete mode 100644 public/ueditor/dialogs/scrawl/scrawl.css delete mode 100644 public/ueditor/dialogs/scrawl/scrawl.html delete mode 100644 public/ueditor/dialogs/scrawl/scrawl.js delete mode 100644 public/ueditor/dialogs/searchreplace/searchreplace.html delete mode 100644 public/ueditor/dialogs/searchreplace/searchreplace.js delete mode 100644 public/ueditor/dialogs/snapscreen/snapscreen.html delete mode 100644 public/ueditor/dialogs/spechars/spechars.html delete mode 100644 public/ueditor/dialogs/spechars/spechars.js delete mode 100644 public/ueditor/dialogs/table/dragicon.png delete mode 100644 public/ueditor/dialogs/table/edittable.css delete mode 100644 public/ueditor/dialogs/table/edittable.html delete mode 100644 public/ueditor/dialogs/table/edittable.js delete mode 100644 public/ueditor/dialogs/table/edittd.html delete mode 100644 public/ueditor/dialogs/table/edittip.html delete mode 100644 public/ueditor/dialogs/template/config.js delete mode 100644 public/ueditor/dialogs/template/images/bg.gif delete mode 100644 public/ueditor/dialogs/template/images/pre0.png delete mode 100644 public/ueditor/dialogs/template/images/pre1.png delete mode 100644 public/ueditor/dialogs/template/images/pre2.png delete mode 100644 public/ueditor/dialogs/template/images/pre3.png delete mode 100644 public/ueditor/dialogs/template/images/pre4.png delete mode 100644 public/ueditor/dialogs/template/template.css delete mode 100644 public/ueditor/dialogs/template/template.html delete mode 100644 public/ueditor/dialogs/template/template.js delete mode 100644 public/ueditor/dialogs/video/images/bg.png delete mode 100644 public/ueditor/dialogs/video/images/center_focus.jpg delete mode 100644 public/ueditor/dialogs/video/images/file-icons.gif delete mode 100644 public/ueditor/dialogs/video/images/file-icons.png delete mode 100644 public/ueditor/dialogs/video/images/icons.gif delete mode 100644 public/ueditor/dialogs/video/images/icons.png delete mode 100644 public/ueditor/dialogs/video/images/image.png delete mode 100644 public/ueditor/dialogs/video/images/left_focus.jpg delete mode 100644 public/ueditor/dialogs/video/images/none_focus.jpg delete mode 100644 public/ueditor/dialogs/video/images/progress.png delete mode 100644 public/ueditor/dialogs/video/images/right_focus.jpg delete mode 100644 public/ueditor/dialogs/video/images/success.gif delete mode 100644 public/ueditor/dialogs/video/images/success.png delete mode 100644 public/ueditor/dialogs/video/video.css delete mode 100644 public/ueditor/dialogs/video/video.html delete mode 100644 public/ueditor/dialogs/video/video.js delete mode 100644 public/ueditor/dialogs/webapp/webapp.html delete mode 100644 public/ueditor/dialogs/wordimage/tangram.js delete mode 100644 public/ueditor/dialogs/wordimage/wordimage.html delete mode 100644 public/ueditor/dialogs/wordimage/wordimage.js delete mode 100644 public/ueditor/index.html delete mode 100644 public/ueditor/lang/en/en.js delete mode 100644 public/ueditor/lang/en/images/addimage.png delete mode 100644 public/ueditor/lang/en/images/alldeletebtnhoverskin.png delete mode 100644 public/ueditor/lang/en/images/alldeletebtnupskin.png delete mode 100644 public/ueditor/lang/en/images/background.png delete mode 100644 public/ueditor/lang/en/images/button.png delete mode 100644 public/ueditor/lang/en/images/copy.png delete mode 100644 public/ueditor/lang/en/images/deletedisable.png delete mode 100644 public/ueditor/lang/en/images/deleteenable.png delete mode 100644 public/ueditor/lang/en/images/listbackground.png delete mode 100644 public/ueditor/lang/en/images/localimage.png delete mode 100644 public/ueditor/lang/en/images/music.png delete mode 100644 public/ueditor/lang/en/images/rotateleftdisable.png delete mode 100644 public/ueditor/lang/en/images/rotateleftenable.png delete mode 100644 public/ueditor/lang/en/images/rotaterightdisable.png delete mode 100644 public/ueditor/lang/en/images/rotaterightenable.png delete mode 100644 public/ueditor/lang/en/images/upload.png delete mode 100644 public/ueditor/lang/zh-cn/images/copy.png delete mode 100644 public/ueditor/lang/zh-cn/images/localimage.png delete mode 100644 public/ueditor/lang/zh-cn/images/music.png delete mode 100644 public/ueditor/lang/zh-cn/images/upload.png delete mode 100644 public/ueditor/lang/zh-cn/zh-cn.js delete mode 100644 public/ueditor/themes/default/css/ueditor.css delete mode 100644 public/ueditor/themes/default/css/ueditor.min.css delete mode 100644 public/ueditor/themes/default/dialogbase.css delete mode 100644 public/ueditor/themes/default/images/anchor.gif delete mode 100644 public/ueditor/themes/default/images/arrow.png delete mode 100644 public/ueditor/themes/default/images/arrow_down.png delete mode 100644 public/ueditor/themes/default/images/arrow_up.png delete mode 100644 public/ueditor/themes/default/images/button-bg.gif delete mode 100644 public/ueditor/themes/default/images/cancelbutton.gif delete mode 100644 public/ueditor/themes/default/images/charts.png delete mode 100644 public/ueditor/themes/default/images/cursor_h.gif delete mode 100644 public/ueditor/themes/default/images/cursor_h.png delete mode 100644 public/ueditor/themes/default/images/cursor_v.gif delete mode 100644 public/ueditor/themes/default/images/cursor_v.png delete mode 100644 public/ueditor/themes/default/images/dialog-title-bg.png delete mode 100644 public/ueditor/themes/default/images/filescan.png delete mode 100644 public/ueditor/themes/default/images/highlighted.gif delete mode 100644 public/ueditor/themes/default/images/icons-all.gif delete mode 100644 public/ueditor/themes/default/images/icons.gif delete mode 100644 public/ueditor/themes/default/images/icons.png delete mode 100644 public/ueditor/themes/default/images/img-cracked.png delete mode 100644 public/ueditor/themes/default/images/loaderror.png delete mode 100644 public/ueditor/themes/default/images/loading.gif delete mode 100644 public/ueditor/themes/default/images/lock.gif delete mode 100644 public/ueditor/themes/default/images/neweditor-tab-bg.png delete mode 100644 public/ueditor/themes/default/images/pagebreak.gif delete mode 100644 public/ueditor/themes/default/images/scale.png delete mode 100644 public/ueditor/themes/default/images/sortable.png delete mode 100644 public/ueditor/themes/default/images/spacer.gif delete mode 100644 public/ueditor/themes/default/images/sparator_v.png delete mode 100644 public/ueditor/themes/default/images/table-cell-align.png delete mode 100644 public/ueditor/themes/default/images/tangram-colorpicker.png delete mode 100644 public/ueditor/themes/default/images/toolbar_bg.png delete mode 100644 public/ueditor/themes/default/images/unhighlighted.gif delete mode 100644 public/ueditor/themes/default/images/upload.png delete mode 100644 public/ueditor/themes/default/images/videologo.gif delete mode 100644 public/ueditor/themes/default/images/word.gif delete mode 100644 public/ueditor/themes/default/images/wordpaste.png delete mode 100644 public/ueditor/themes/iframe.css delete mode 100644 public/ueditor/third-party/SyntaxHighlighter/shCore.js delete mode 100644 public/ueditor/third-party/SyntaxHighlighter/shCoreDefault.css delete mode 100644 public/ueditor/third-party/codemirror/codemirror.css delete mode 100644 public/ueditor/third-party/codemirror/codemirror.js delete mode 100644 public/ueditor/third-party/highcharts/adapters/mootools-adapter.js delete mode 100644 public/ueditor/third-party/highcharts/adapters/mootools-adapter.src.js delete mode 100644 public/ueditor/third-party/highcharts/adapters/prototype-adapter.js delete mode 100644 public/ueditor/third-party/highcharts/adapters/prototype-adapter.src.js delete mode 100644 public/ueditor/third-party/highcharts/adapters/standalone-framework.js delete mode 100644 public/ueditor/third-party/highcharts/adapters/standalone-framework.src.js delete mode 100644 public/ueditor/third-party/highcharts/highcharts-more.js delete mode 100644 public/ueditor/third-party/highcharts/highcharts-more.src.js delete mode 100644 public/ueditor/third-party/highcharts/highcharts.js delete mode 100644 public/ueditor/third-party/highcharts/highcharts.src.js delete mode 100644 public/ueditor/third-party/highcharts/modules/annotations.js delete mode 100644 public/ueditor/third-party/highcharts/modules/annotations.src.js delete mode 100644 public/ueditor/third-party/highcharts/modules/canvas-tools.js delete mode 100644 public/ueditor/third-party/highcharts/modules/canvas-tools.src.js delete mode 100644 public/ueditor/third-party/highcharts/modules/data.js delete mode 100644 public/ueditor/third-party/highcharts/modules/data.src.js delete mode 100644 public/ueditor/third-party/highcharts/modules/drilldown.js delete mode 100644 public/ueditor/third-party/highcharts/modules/drilldown.src.js delete mode 100644 public/ueditor/third-party/highcharts/modules/exporting.js delete mode 100644 public/ueditor/third-party/highcharts/modules/exporting.src.js delete mode 100644 public/ueditor/third-party/highcharts/modules/funnel.js delete mode 100644 public/ueditor/third-party/highcharts/modules/funnel.src.js delete mode 100644 public/ueditor/third-party/highcharts/modules/heatmap.js delete mode 100644 public/ueditor/third-party/highcharts/modules/heatmap.src.js delete mode 100644 public/ueditor/third-party/highcharts/modules/map.js delete mode 100644 public/ueditor/third-party/highcharts/modules/map.src.js delete mode 100644 public/ueditor/third-party/highcharts/modules/no-data-to-display.js delete mode 100644 public/ueditor/third-party/highcharts/modules/no-data-to-display.src.js delete mode 100644 public/ueditor/third-party/highcharts/themes/dark-blue.js delete mode 100644 public/ueditor/third-party/highcharts/themes/dark-green.js delete mode 100644 public/ueditor/third-party/highcharts/themes/gray.js delete mode 100644 public/ueditor/third-party/highcharts/themes/grid.js delete mode 100644 public/ueditor/third-party/highcharts/themes/skies.js delete mode 100644 public/ueditor/third-party/jquery-1.10.2.js delete mode 100644 public/ueditor/third-party/jquery-1.10.2.min.js delete mode 100644 public/ueditor/third-party/jquery-1.10.2.min.map delete mode 100644 public/ueditor/third-party/snapscreen/UEditorSnapscreen.exe delete mode 100644 public/ueditor/third-party/video-js/font/vjs.eot delete mode 100644 public/ueditor/third-party/video-js/font/vjs.svg delete mode 100644 public/ueditor/third-party/video-js/font/vjs.ttf delete mode 100644 public/ueditor/third-party/video-js/font/vjs.woff delete mode 100644 public/ueditor/third-party/video-js/video-js.css delete mode 100644 public/ueditor/third-party/video-js/video-js.min.css delete mode 100644 public/ueditor/third-party/video-js/video.dev.js delete mode 100644 public/ueditor/third-party/video-js/video.js delete mode 100644 public/ueditor/third-party/webuploader/webuploader.css delete mode 100644 public/ueditor/third-party/webuploader/webuploader.custom.js delete mode 100644 public/ueditor/third-party/webuploader/webuploader.custom.min.js delete mode 100644 public/ueditor/third-party/webuploader/webuploader.flashonly.js delete mode 100644 public/ueditor/third-party/webuploader/webuploader.flashonly.min.js delete mode 100644 public/ueditor/third-party/webuploader/webuploader.html5only.js delete mode 100644 public/ueditor/third-party/webuploader/webuploader.html5only.min.js delete mode 100644 public/ueditor/third-party/webuploader/webuploader.js delete mode 100644 public/ueditor/third-party/webuploader/webuploader.min.js delete mode 100644 public/ueditor/third-party/webuploader/webuploader.withoutimage.js delete mode 100644 public/ueditor/third-party/webuploader/webuploader.withoutimage.min.js delete mode 100644 public/ueditor/third-party/zeroclipboard/ZeroClipboard.js delete mode 100644 public/ueditor/third-party/zeroclipboard/ZeroClipboard.min.js delete mode 100644 public/ueditor/ueditor.all.js delete mode 100644 public/ueditor/ueditor.all.min.js delete mode 100644 public/ueditor/ueditor.config.js delete mode 100644 public/ueditor/ueditor.parse.js delete mode 100644 public/ueditor/ueditor.parse.min.js create mode 100644 src/assets/images/style/74.png diff --git a/public/ueditor/dialogs/anchor/anchor.html b/public/ueditor/dialogs/anchor/anchor.html deleted file mode 100644 index f277847..0000000 --- a/public/ueditor/dialogs/anchor/anchor.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - -
- -
- - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/attachment/attachment.css b/public/ueditor/dialogs/attachment/attachment.css deleted file mode 100644 index 9c61716..0000000 --- a/public/ueditor/dialogs/attachment/attachment.css +++ /dev/null @@ -1,681 +0,0 @@ -@charset "utf-8"; -/* dialog样式 */ -.wrapper { - zoom: 1; - width: 630px; - *width: 626px; - height: 380px; - margin: 0 auto; - padding: 10px; - position: relative; - font-family: sans-serif; -} - -/*tab样式框大小*/ -.tabhead { - float:left; -} -.tabbody { - width: 100%; - height: 346px; - position: relative; - clear: both; -} - -.tabbody .panel { - position: absolute; - width: 0; - height: 0; - background: #fff; - overflow: hidden; - display: none; -} - -.tabbody .panel.focus { - width: 100%; - height: 346px; - display: block; -} - -/* 上传附件 */ -.tabbody #upload.panel { - width: 0; - height: 0; - overflow: hidden; - position: absolute !important; - clip: rect(1px, 1px, 1px, 1px); - background: #fff; - display: block; -} - -.tabbody #upload.panel.focus { - width: 100%; - height: 346px; - display: block; - clip: auto; -} - -#upload .queueList { - margin: 0; - width: 100%; - height: 100%; - position: absolute; - overflow: hidden; -} - -#upload p { - margin: 0; -} - -.element-invisible { - width: 0 !important; - height: 0 !important; - border: 0; - padding: 0; - margin: 0; - overflow: hidden; - position: absolute !important; - clip: rect(1px, 1px, 1px, 1px); -} - -#upload .placeholder { - margin: 10px; - border: 2px dashed #e6e6e6; - *border: 0px dashed #e6e6e6; - height: 172px; - padding-top: 150px; - text-align: center; - background: url(./images/image.png) center 70px no-repeat; - color: #cccccc; - font-size: 18px; - position: relative; - top:0; - *top: 10px; -} - -#upload .placeholder .webuploader-pick { - font-size: 18px; - background: #00b7ee; - border-radius: 3px; - line-height: 44px; - padding: 0 30px; - *width: 120px; - color: #fff; - display: inline-block; - margin: 0 auto 20px auto; - cursor: pointer; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); -} - -#upload .placeholder .webuploader-pick-hover { - background: #00a2d4; -} - - -#filePickerContainer { - text-align: center; -} - -#upload .placeholder .flashTip { - color: #666666; - font-size: 12px; - position: absolute; - width: 100%; - text-align: center; - bottom: 20px; -} - -#upload .placeholder .flashTip a { - color: #0785d1; - text-decoration: none; -} - -#upload .placeholder .flashTip a:hover { - text-decoration: underline; -} - -#upload .placeholder.webuploader-dnd-over { - border-color: #999999; -} - -#upload .filelist { - list-style: none; - margin: 0; - padding: 0; - overflow-x: hidden; - overflow-y: auto; - position: relative; - height: 300px; -} - -#upload .filelist:after { - content: ''; - display: block; - width: 0; - height: 0; - overflow: hidden; - clear: both; -} - -#upload .filelist li { - width: 113px; - height: 113px; - background: url(./images/bg.png); - text-align: center; - margin: 9px 0 0 9px; - *margin: 6px 0 0 6px; - position: relative; - display: block; - float: left; - overflow: hidden; - font-size: 12px; -} - -#upload .filelist li p.log { - position: relative; - top: -45px; -} - -#upload .filelist li p.title { - position: absolute; - top: 0; - left: 0; - width: 100%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - top: 5px; - text-indent: 5px; - text-align: left; -} - -#upload .filelist li p.progress { - position: absolute; - width: 100%; - bottom: 0; - left: 0; - height: 8px; - overflow: hidden; - z-index: 50; - margin: 0; - border-radius: 0; - background: none; - -webkit-box-shadow: 0 0 0; -} - -#upload .filelist li p.progress span { - display: none; - overflow: hidden; - width: 0; - height: 100%; - background: #1483d8 url(./images/progress.png) repeat-x; - - -webit-transition: width 200ms linear; - -moz-transition: width 200ms linear; - -o-transition: width 200ms linear; - -ms-transition: width 200ms linear; - transition: width 200ms linear; - - -webkit-animation: progressmove 2s linear infinite; - -moz-animation: progressmove 2s linear infinite; - -o-animation: progressmove 2s linear infinite; - -ms-animation: progressmove 2s linear infinite; - animation: progressmove 2s linear infinite; - - -webkit-transform: translateZ(0); -} - -@-webkit-keyframes progressmove { - 0% { - background-position: 0 0; - } - 100% { - background-position: 17px 0; - } -} - -@-moz-keyframes progressmove { - 0% { - background-position: 0 0; - } - 100% { - background-position: 17px 0; - } -} - -@keyframes progressmove { - 0% { - background-position: 0 0; - } - 100% { - background-position: 17px 0; - } -} - -#upload .filelist li p.imgWrap { - position: relative; - z-index: 2; - line-height: 113px; - vertical-align: middle; - overflow: hidden; - width: 113px; - height: 113px; - - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; - -o-transform-origin: 50% 50%; - -ms-transform-origin: 50% 50%; - transform-origin: 50% 50%; - - -webit-transition: 200ms ease-out; - -moz-transition: 200ms ease-out; - -o-transition: 200ms ease-out; - -ms-transition: 200ms ease-out; - transition: 200ms ease-out; -} -#upload .filelist li p.imgWrap.notimage { - margin-top: 0; - width: 111px; - height: 111px; - border: 1px #eeeeee solid; -} -#upload .filelist li p.imgWrap.notimage i.file-preview { - margin-top: 15px; -} - -#upload .filelist li img { - width: 100%; -} - -#upload .filelist li p.error { - background: #f43838; - color: #fff; - position: absolute; - bottom: 0; - left: 0; - height: 28px; - line-height: 28px; - width: 100%; - z-index: 100; - display:none; -} - -#upload .filelist li .success { - display: block; - position: absolute; - left: 0; - bottom: 0; - height: 40px; - width: 100%; - z-index: 200; - background: url(./images/success.png) no-repeat right bottom; - background-image: url(./images/success.gif) \9; -} - -#upload .filelist li.filePickerBlock { - width: 113px; - height: 113px; - background: url(./images/image.png) no-repeat center 12px; - border: 1px solid #eeeeee; - border-radius: 0; -} -#upload .filelist li.filePickerBlock div.webuploader-pick { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - opacity: 0; - background: none; - font-size: 0; -} - -#upload .filelist div.file-panel { - position: absolute; - height: 0; - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#80000000', endColorstr='#80000000') \0; - background: rgba(0, 0, 0, 0.5); - width: 100%; - top: 0; - left: 0; - overflow: hidden; - z-index: 300; -} - -#upload .filelist div.file-panel span { - width: 24px; - height: 24px; - display: inline; - float: right; - text-indent: -9999px; - overflow: hidden; - background: url(./images/icons.png) no-repeat; - background: url(./images/icons.gif) no-repeat \9; - margin: 5px 1px 1px; - cursor: pointer; - -webkit-tap-highlight-color: rgba(0,0,0,0); - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -#upload .filelist div.file-panel span.rotateLeft { - display:none; - background-position: 0 -24px; -} - -#upload .filelist div.file-panel span.rotateLeft:hover { - background-position: 0 0; -} - -#upload .filelist div.file-panel span.rotateRight { - display:none; - background-position: -24px -24px; -} - -#upload .filelist div.file-panel span.rotateRight:hover { - background-position: -24px 0; -} - -#upload .filelist div.file-panel span.cancel { - background-position: -48px -24px; -} - -#upload .filelist div.file-panel span.cancel:hover { - background-position: -48px 0; -} - -#upload .statusBar { - height: 45px; - border-bottom: 1px solid #dadada; - margin: 0 10px; - padding: 0; - line-height: 45px; - vertical-align: middle; - position: relative; -} - -#upload .statusBar .progress { - border: 1px solid #1483d8; - width: 198px; - background: #fff; - height: 18px; - position: absolute; - top: 12px; - display: none; - text-align: center; - line-height: 18px; - color: #6dbfff; - margin: 0 10px 0 0; -} -#upload .statusBar .progress span.percentage { - width: 0; - height: 100%; - left: 0; - top: 0; - background: #1483d8; - position: absolute; -} -#upload .statusBar .progress span.text { - position: relative; - z-index: 10; -} - -#upload .statusBar .info { - display: inline-block; - font-size: 14px; - color: #666666; -} - -#upload .statusBar .btns { - position: absolute; - top: 7px; - right: 0; - line-height: 30px; -} - -#filePickerBtn { - display: inline-block; - float: left; -} -#upload .statusBar .btns .webuploader-pick, -#upload .statusBar .btns .uploadBtn, -#upload .statusBar .btns .uploadBtn.state-uploading, -#upload .statusBar .btns .uploadBtn.state-paused { - background: #ffffff; - border: 1px solid #cfcfcf; - color: #565656; - padding: 0 18px; - display: inline-block; - border-radius: 3px; - margin-left: 10px; - cursor: pointer; - font-size: 14px; - float: left; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -#upload .statusBar .btns .webuploader-pick-hover, -#upload .statusBar .btns .uploadBtn:hover, -#upload .statusBar .btns .uploadBtn.state-uploading:hover, -#upload .statusBar .btns .uploadBtn.state-paused:hover { - background: #f0f0f0; -} - -#upload .statusBar .btns .uploadBtn, -#upload .statusBar .btns .uploadBtn.state-paused{ - background: #00b7ee; - color: #fff; - border-color: transparent; -} -#upload .statusBar .btns .uploadBtn:hover, -#upload .statusBar .btns .uploadBtn.state-paused:hover{ - background: #00a2d4; -} - -#upload .statusBar .btns .uploadBtn.disabled { - pointer-events: none; - filter:alpha(opacity=60); - -moz-opacity:0.6; - -khtml-opacity: 0.6; - opacity: 0.6; -} - - - -/* 图片管理样式 */ -#online { - width: 100%; - height: 336px; - padding: 10px 0 0 0; -} -#online #fileList{ - width: 100%; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - position: relative; -} -#online ul { - display: block; - list-style: none; - margin: 0; - padding: 0; -} -#online li { - float: left; - display: block; - list-style: none; - padding: 0; - width: 113px; - height: 113px; - margin: 0 0 9px 9px; - *margin: 0 0 6px 6px; - background-color: #eee; - overflow: hidden; - cursor: pointer; - position: relative; -} -#online li.clearFloat { - float: none; - clear: both; - display: block; - width:0; - height:0; - margin: 0; - padding: 0; -} -#online li img { - cursor: pointer; -} -#online li div.file-wrapper { - cursor: pointer; - position: absolute; - display: block; - width: 111px; - height: 111px; - border: 1px solid #eee; - background: url("./images/bg.png") repeat; -} -#online li div span.file-title{ - display: block; - padding: 0 3px; - margin: 3px 0 0 0; - font-size: 12px; - height: 15px; - color: #555555; - text-align: center; - width: 107px; - white-space: nowrap; - word-break: break-all; - overflow: hidden; - text-overflow: ellipsis; -} -#online li .icon { - cursor: pointer; - width: 113px; - height: 113px; - position: absolute; - top: 0; - left: 0; - z-index: 2; - border: 0; - background-repeat: no-repeat; -} -#online li .icon:hover { - width: 107px; - height: 107px; - border: 3px solid #1094fa; -} -#online li.selected .icon { - background-image: url(images/success.png); - background-image: url(images/success.gif) \9; - background-position: 75px 75px; -} -#online li.selected .icon:hover { - width: 107px; - height: 107px; - border: 3px solid #1094fa; - background-position: 72px 72px; -} - - -/* 在线文件的文件预览图标 */ -i.file-preview { - display: block; - margin: 10px auto; - width: 70px; - height: 70px; - background-image: url("./images/file-icons.png"); - background-image: url("./images/file-icons.gif") \9; - background-position: -140px center; - background-repeat: no-repeat; -} -i.file-preview.file-type-dir{ - background-position: 0 center; -} -i.file-preview.file-type-file{ - background-position: -140px center; -} -i.file-preview.file-type-filelist{ - background-position: -210px center; -} -i.file-preview.file-type-zip, -i.file-preview.file-type-rar, -i.file-preview.file-type-7z, -i.file-preview.file-type-tar, -i.file-preview.file-type-gz, -i.file-preview.file-type-bz2{ - background-position: -280px center; -} -i.file-preview.file-type-xls, -i.file-preview.file-type-xlsx{ - background-position: -350px center; -} -i.file-preview.file-type-doc, -i.file-preview.file-type-docx{ - background-position: -420px center; -} -i.file-preview.file-type-ppt, -i.file-preview.file-type-pptx{ - background-position: -490px center; -} -i.file-preview.file-type-vsd{ - background-position: -560px center; -} -i.file-preview.file-type-pdf{ - background-position: -630px center; -} -i.file-preview.file-type-txt, -i.file-preview.file-type-md, -i.file-preview.file-type-json, -i.file-preview.file-type-htm, -i.file-preview.file-type-xml, -i.file-preview.file-type-html, -i.file-preview.file-type-js, -i.file-preview.file-type-css, -i.file-preview.file-type-php, -i.file-preview.file-type-jsp, -i.file-preview.file-type-asp{ - background-position: -700px center; -} -i.file-preview.file-type-apk{ - background-position: -770px center; -} -i.file-preview.file-type-exe{ - background-position: -840px center; -} -i.file-preview.file-type-ipa{ - background-position: -910px center; -} -i.file-preview.file-type-mp4, -i.file-preview.file-type-swf, -i.file-preview.file-type-mkv, -i.file-preview.file-type-avi, -i.file-preview.file-type-flv, -i.file-preview.file-type-mov, -i.file-preview.file-type-mpg, -i.file-preview.file-type-mpeg, -i.file-preview.file-type-ogv, -i.file-preview.file-type-webm, -i.file-preview.file-type-rm, -i.file-preview.file-type-rmvb{ - background-position: -980px center; -} -i.file-preview.file-type-ogg, -i.file-preview.file-type-wav, -i.file-preview.file-type-wmv, -i.file-preview.file-type-mid, -i.file-preview.file-type-mp3{ - background-position: -1050px center; -} -i.file-preview.file-type-jpg, -i.file-preview.file-type-jpeg, -i.file-preview.file-type-gif, -i.file-preview.file-type-bmp, -i.file-preview.file-type-png, -i.file-preview.file-type-psd{ - background-position: -140px center; -} diff --git a/public/ueditor/dialogs/attachment/attachment.html b/public/ueditor/dialogs/attachment/attachment.html deleted file mode 100644 index 2ae9282..0000000 --- a/public/ueditor/dialogs/attachment/attachment.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - ueditor图片对话框 - - - - - - - - - - - - - - -
-
- - -
-
- -
-
-
-
- 0% - -
-
-
-
-
-
-
-
-
-
-
-
    -
  • -
-
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/attachment/attachment.js b/public/ueditor/dialogs/attachment/attachment.js deleted file mode 100644 index 5e73d5e..0000000 --- a/public/ueditor/dialogs/attachment/attachment.js +++ /dev/null @@ -1,760 +0,0 @@ -/** - * User: Jinqn - * Date: 14-04-08 - * Time: 下午16:34 - * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片 - */ - -(function () { - - var uploadFile, - onlineFile; - - window.onload = function () { - initTabs(); - initButtons(); - }; - - /* 初始化tab标签 */ - function initTabs() { - var tabs = $G('tabhead').children; - for (var i = 0; i < tabs.length; i++) { - domUtils.on(tabs[i], "click", function (e) { - var target = e.target || e.srcElement; - setTabFocus(target.getAttribute('data-content-id')); - }); - } - - setTabFocus('upload'); - } - - /* 初始化tabbody */ - function setTabFocus(id) { - if(!id) return; - var i, bodyId, tabs = $G('tabhead').children; - for (i = 0; i < tabs.length; i++) { - bodyId = tabs[i].getAttribute('data-content-id') - if (bodyId == id) { - domUtils.addClass(tabs[i], 'focus'); - domUtils.addClass($G(bodyId), 'focus'); - } else { - domUtils.removeClasses(tabs[i], 'focus'); - domUtils.removeClasses($G(bodyId), 'focus'); - } - } - switch (id) { - case 'upload': - uploadFile = uploadFile || new UploadFile('queueList'); - break; - case 'online': - onlineFile = onlineFile || new OnlineFile('fileList'); - break; - } - } - - /* 初始化onok事件 */ - function initButtons() { - - dialog.onok = function () { - var list = [], id, tabs = $G('tabhead').children; - for (var i = 0; i < tabs.length; i++) { - if (domUtils.hasClass(tabs[i], 'focus')) { - id = tabs[i].getAttribute('data-content-id'); - break; - } - } - - switch (id) { - case 'upload': - list = uploadFile.getInsertList(); - var count = uploadFile.getQueueCount(); - if (count) { - $('.info', '#queueList').html('' + '还有2个未上传文件'.replace(/[\d]/, count) + ''); - return false; - } - break; - case 'online': - list = onlineFile.getInsertList(); - break; - } - - editor.execCommand('insertfile', list); - }; - } - - - /* 上传附件 */ - function UploadFile(target) { - this.$wrap = target.constructor == String ? $('#' + target) : $(target); - this.init(); - } - UploadFile.prototype = { - init: function () { - this.fileList = []; - this.initContainer(); - this.initUploader(); - }, - initContainer: function () { - this.$queue = this.$wrap.find('.filelist'); - }, - /* 初始化容器 */ - initUploader: function () { - var _this = this, - $ = jQuery, // just in case. Make sure it's not an other libaray. - $wrap = _this.$wrap, - // 图片容器 - $queue = $wrap.find('.filelist'), - // 状态栏,包括进度和控制按钮 - $statusBar = $wrap.find('.statusBar'), - // 文件总体选择信息。 - $info = $statusBar.find('.info'), - // 上传按钮 - $upload = $wrap.find('.uploadBtn'), - // 上传按钮 - $filePickerBtn = $wrap.find('.filePickerBtn'), - // 上传按钮 - $filePickerBlock = $wrap.find('.filePickerBlock'), - // 没选择文件之前的内容。 - $placeHolder = $wrap.find('.placeholder'), - // 总体进度条 - $progress = $statusBar.find('.progress').hide(), - // 添加的文件数量 - fileCount = 0, - // 添加的文件总大小 - fileSize = 0, - // 优化retina, 在retina下这个值是2 - ratio = window.devicePixelRatio || 1, - // 缩略图大小 - thumbnailWidth = 113 * ratio, - thumbnailHeight = 113 * ratio, - // 可能有pedding, ready, uploading, confirm, done. - state = '', - // 所有文件的进度信息,key为file id - percentages = {}, - supportTransition = (function () { - var s = document.createElement('p').style, - r = 'transition' in s || - 'WebkitTransition' in s || - 'MozTransition' in s || - 'msTransition' in s || - 'OTransition' in s; - s = null; - return r; - })(), - // WebUploader实例 - uploader, - actionUrl = editor.getActionUrl(editor.getOpt('fileActionName')), - fileMaxSize = editor.getOpt('fileMaxSize'), - acceptExtensions = (editor.getOpt('fileAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');; - - if (!WebUploader.Uploader.support()) { - $('#filePickerReady').after($('
').html(lang.errorNotSupport)).hide(); - return; - } else if (!editor.getOpt('fileActionName')) { - $('#filePickerReady').after($('
').html(lang.errorLoadConfig)).hide(); - return; - } - - uploader = _this.uploader = WebUploader.create({ - pick: { - id: '#filePickerReady', - label: lang.uploadSelectFile - }, - swf: '../../third-party/webuploader/Uploader.swf', - server: actionUrl, - fileVal: editor.getOpt('fileFieldName'), - duplicate: true, - fileSingleSizeLimit: fileMaxSize, - compress: false - }); - uploader.addButton({ - id: '#filePickerBlock' - }); - uploader.addButton({ - id: '#filePickerBtn', - label: lang.uploadAddFile - }); - - setState('pedding'); - - // 当有文件添加进来时执行,负责view的创建 - function addFile(file) { - var $li = $('
  • ' + - '

    ' + file.name + '

    ' + - '

    ' + - '

    ' + - '
  • '), - - $btns = $('
    ' + - '' + lang.uploadDelete + '' + - '' + lang.uploadTurnRight + '' + - '' + lang.uploadTurnLeft + '
    ').appendTo($li), - $prgress = $li.find('p.progress span'), - $wrap = $li.find('p.imgWrap'), - $info = $('

    ').hide().appendTo($li), - - showError = function (code) { - switch (code) { - case 'exceed_size': - text = lang.errorExceedSize; - break; - case 'interrupt': - text = lang.errorInterrupt; - break; - case 'http': - text = lang.errorHttp; - break; - case 'not_allow_type': - text = lang.errorFileType; - break; - default: - text = lang.errorUploadRetry; - break; - } - $info.text(text).show(); - }; - - if (file.getStatus() === 'invalid') { - showError(file.statusText); - } else { - $wrap.text(lang.uploadPreview); - if ('|png|jpg|jpeg|bmp|gif|'.indexOf('|'+file.ext.toLowerCase()+'|') == -1) { - $wrap.empty().addClass('notimage').append('' + - '' + file.name + ''); - } else { - if (browser.ie && browser.version <= 7) { - $wrap.text(lang.uploadNoPreview); - } else { - uploader.makeThumb(file, function (error, src) { - if (error || !src) { - $wrap.text(lang.uploadNoPreview); - } else { - var $img = $(''); - $wrap.empty().append($img); - $img.on('error', function () { - $wrap.text(lang.uploadNoPreview); - }); - } - }, thumbnailWidth, thumbnailHeight); - } - } - percentages[ file.id ] = [ file.size, 0 ]; - file.rotation = 0; - - /* 检查文件格式 */ - if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) { - showError('not_allow_type'); - uploader.removeFile(file); - } - } - - file.on('statuschange', function (cur, prev) { - if (prev === 'progress') { - $prgress.hide().width(0); - } else if (prev === 'queued') { - $li.off('mouseenter mouseleave'); - $btns.remove(); - } - // 成功 - if (cur === 'error' || cur === 'invalid') { - showError(file.statusText); - percentages[ file.id ][ 1 ] = 1; - } else if (cur === 'interrupt') { - showError('interrupt'); - } else if (cur === 'queued') { - percentages[ file.id ][ 1 ] = 0; - } else if (cur === 'progress') { - $info.hide(); - $prgress.css('display', 'block'); - } else if (cur === 'complete') { - } - - $li.removeClass('state-' + prev).addClass('state-' + cur); - }); - - $li.on('mouseenter', function () { - $btns.stop().animate({height: 30}); - }); - $li.on('mouseleave', function () { - $btns.stop().animate({height: 0}); - }); - - $btns.on('click', 'span', function () { - var index = $(this).index(), - deg; - - switch (index) { - case 0: - uploader.removeFile(file); - return; - case 1: - file.rotation += 90; - break; - case 2: - file.rotation -= 90; - break; - } - - if (supportTransition) { - deg = 'rotate(' + file.rotation + 'deg)'; - $wrap.css({ - '-webkit-transform': deg, - '-mos-transform': deg, - '-o-transform': deg, - 'transform': deg - }); - } else { - $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')'); - } - - }); - - $li.insertBefore($filePickerBlock); - } - - // 负责view的销毁 - function removeFile(file) { - var $li = $('#' + file.id); - delete percentages[ file.id ]; - updateTotalProgress(); - $li.off().find('.file-panel').off().end().remove(); - } - - function updateTotalProgress() { - var loaded = 0, - total = 0, - spans = $progress.children(), - percent; - - $.each(percentages, function (k, v) { - total += v[ 0 ]; - loaded += v[ 0 ] * v[ 1 ]; - }); - - percent = total ? loaded / total : 0; - - spans.eq(0).text(Math.round(percent * 100) + '%'); - spans.eq(1).css('width', Math.round(percent * 100) + '%'); - updateStatus(); - } - - function setState(val, files) { - - if (val != state) { - - var stats = uploader.getStats(); - - $upload.removeClass('state-' + state); - $upload.addClass('state-' + val); - - switch (val) { - - /* 未选择文件 */ - case 'pedding': - $queue.addClass('element-invisible'); - $statusBar.addClass('element-invisible'); - $placeHolder.removeClass('element-invisible'); - $progress.hide(); $info.hide(); - uploader.refresh(); - break; - - /* 可以开始上传 */ - case 'ready': - $placeHolder.addClass('element-invisible'); - $queue.removeClass('element-invisible'); - $statusBar.removeClass('element-invisible'); - $progress.hide(); $info.show(); - $upload.text(lang.uploadStart); - uploader.refresh(); - break; - - /* 上传中 */ - case 'uploading': - $progress.show(); $info.hide(); - $upload.text(lang.uploadPause); - break; - - /* 暂停上传 */ - case 'paused': - $progress.show(); $info.hide(); - $upload.text(lang.uploadContinue); - break; - - case 'confirm': - $progress.show(); $info.hide(); - $upload.text(lang.uploadStart); - - stats = uploader.getStats(); - if (stats.successNum && !stats.uploadFailNum) { - setState('finish'); - return; - } - break; - - case 'finish': - $progress.hide(); $info.show(); - if (stats.uploadFailNum) { - $upload.text(lang.uploadRetry); - } else { - $upload.text(lang.uploadStart); - } - break; - } - - state = val; - updateStatus(); - - } - - if (!_this.getQueueCount()) { - $upload.addClass('disabled') - } else { - $upload.removeClass('disabled') - } - - } - - function updateStatus() { - var text = '', stats; - - if (state === 'ready') { - text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize)); - } else if (state === 'confirm') { - stats = uploader.getStats(); - if (stats.uploadFailNum) { - text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum); - } - } else { - stats = uploader.getStats(); - text = lang.updateStatusFinish.replace('_', fileCount). - replace('_KB', WebUploader.formatSize(fileSize)). - replace('_', stats.successNum); - - if (stats.uploadFailNum) { - text += lang.updateStatusError.replace('_', stats.uploadFailNum); - } - } - - $info.html(text); - } - - uploader.on('fileQueued', function (file) { - if (file.ext && acceptExtensions.indexOf(file.ext.toLowerCase()) != -1 && file.size <= fileMaxSize) { - fileCount++; - fileSize += file.size; - } - - if (fileCount === 1) { - $placeHolder.addClass('element-invisible'); - $statusBar.show(); - } - - addFile(file); - }); - - uploader.on('fileDequeued', function (file) { - if (file.ext && acceptExtensions.indexOf(file.ext.toLowerCase()) != -1 && file.size <= fileMaxSize) { - fileCount--; - fileSize -= file.size; - } - - removeFile(file); - updateTotalProgress(); - }); - - uploader.on('filesQueued', function (file) { - if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) { - setState('ready'); - } - updateTotalProgress(); - }); - - uploader.on('all', function (type, files) { - switch (type) { - case 'uploadFinished': - setState('confirm', files); - break; - case 'startUpload': - /* 添加额外的GET参数 */ - var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', - url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params); - uploader.option('server', url); - setState('uploading', files); - break; - case 'stopUpload': - setState('paused', files); - break; - } - }); - - uploader.on('uploadBeforeSend', function (file, data, header) { - //这里可以通过data对象添加POST参数 - if (actionUrl.toLowerCase().indexOf('jsp') != -1) { - header['X_Requested_With'] = 'XMLHttpRequest'; - } - }); - - uploader.on('uploadProgress', function (file, percentage) { - var $li = $('#' + file.id), - $percent = $li.find('.progress span'); - - $percent.css('width', percentage * 100 + '%'); - percentages[ file.id ][ 1 ] = percentage; - updateTotalProgress(); - }); - - uploader.on('uploadSuccess', function (file, ret) { - var $file = $('#' + file.id); - try { - var responseText = (ret._raw || ret), - json = utils.str2json(responseText); - if (json.state == 'SUCCESS') { - _this.fileList.push(json); - $file.append(''); - } else { - $file.find('.error').text(json.state).show(); - } - } catch (e) { - $file.find('.error').text(lang.errorServerUpload).show(); - } - }); - - uploader.on('uploadError', function (file, code) { - }); - uploader.on('error', function (code, file) { - if (code == 'Q_TYPE_DENIED' || code == 'F_EXCEED_SIZE') { - addFile(file); - } - }); - uploader.on('uploadComplete', function (file, ret) { - }); - - $upload.on('click', function () { - if ($(this).hasClass('disabled')) { - return false; - } - - if (state === 'ready') { - uploader.upload(); - } else if (state === 'paused') { - uploader.upload(); - } else if (state === 'uploading') { - uploader.stop(); - } - }); - - $upload.addClass('state-' + state); - updateTotalProgress(); - }, - getQueueCount: function () { - var file, i, status, readyFile = 0, files = this.uploader.getFiles(); - for (i = 0; file = files[i++]; ) { - status = file.getStatus(); - if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++; - } - return readyFile; - }, - getInsertList: function () { - var i, link, data, list = [], - prefix = editor.getOpt('fileUrlPrefix'); - for (i = 0; i < this.fileList.length; i++) { - data = this.fileList[i]; - link = data.url; - list.push({ - title: data.original || link.substr(link.lastIndexOf('/') + 1), - url: prefix + link - }); - } - return list; - } - }; - - - /* 在线附件 */ - function OnlineFile(target) { - this.container = utils.isString(target) ? document.getElementById(target) : target; - this.init(); - } - OnlineFile.prototype = { - init: function () { - this.initContainer(); - this.initEvents(); - this.initData(); - }, - /* 初始化容器 */ - initContainer: function () { - this.container.innerHTML = ''; - this.list = document.createElement('ul'); - this.clearFloat = document.createElement('li'); - - domUtils.addClass(this.list, 'list'); - domUtils.addClass(this.clearFloat, 'clearFloat'); - - this.list.appendChild(this.clearFloat); - this.container.appendChild(this.list); - }, - /* 初始化滚动事件,滚动到地步自动拉取数据 */ - initEvents: function () { - var _this = this; - - /* 滚动拉取图片 */ - domUtils.on($G('fileList'), 'scroll', function(e){ - var panel = this; - if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) { - _this.getFileData(); - } - }); - /* 选中图片 */ - domUtils.on(this.list, 'click', function (e) { - var target = e.target || e.srcElement, - li = target.parentNode; - - if (li.tagName.toLowerCase() == 'li') { - if (domUtils.hasClass(li, 'selected')) { - domUtils.removeClasses(li, 'selected'); - } else { - domUtils.addClass(li, 'selected'); - } - } - }); - }, - /* 初始化第一次的数据 */ - initData: function () { - - /* 拉取数据需要使用的值 */ - this.state = 0; - this.listSize = editor.getOpt('fileManagerListSize'); - this.listIndex = 0; - this.listEnd = false; - - /* 第一次拉取数据 */ - this.getFileData(); - }, - /* 向后台拉取图片列表数据 */ - getFileData: function () { - var _this = this; - - if(!_this.listEnd && !this.isLoadingData) { - this.isLoadingData = true; - ajax.request(editor.getActionUrl(editor.getOpt('fileManagerActionName')), { - timeout: 100000, - data: utils.extend({ - start: this.listIndex, - size: this.listSize - }, editor.queryCommandValue('serverparam')), - method: 'get', - onsuccess: function (r) { - try { - var json = eval('(' + r.responseText + ')'); - if (json.state == 'SUCCESS') { - _this.pushData(json.list); - _this.listIndex = parseInt(json.start) + parseInt(json.list.length); - if(_this.listIndex >= json.total) { - _this.listEnd = true; - } - _this.isLoadingData = false; - } - } catch (e) { - if(r.responseText.indexOf('ue_separate_ue') != -1) { - var list = r.responseText.split(r.responseText); - _this.pushData(list); - _this.listIndex = parseInt(list.length); - _this.listEnd = true; - _this.isLoadingData = false; - } - } - }, - onerror: function () { - _this.isLoadingData = false; - } - }); - } - }, - /* 添加图片到列表界面上 */ - pushData: function (list) { - var i, item, img, filetype, preview, icon, _this = this, - urlPrefix = editor.getOpt('fileManagerUrlPrefix'); - for (i = 0; i < list.length; i++) { - if(list[i] && list[i].url) { - item = document.createElement('li'); - icon = document.createElement('span'); - filetype = list[i].url.substr(list[i].url.lastIndexOf('.') + 1); - - if ( "png|jpg|jpeg|gif|bmp".indexOf(filetype) != -1 ) { - preview = document.createElement('img'); - domUtils.on(preview, 'load', (function(image){ - return function(){ - _this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight); - }; - })(preview)); - preview.width = 113; - preview.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) ); - } else { - var ic = document.createElement('i'), - textSpan = document.createElement('span'); - textSpan.innerHTML = list[i].url.substr(list[i].url.lastIndexOf('/') + 1); - preview = document.createElement('div'); - preview.appendChild(ic); - preview.appendChild(textSpan); - domUtils.addClass(preview, 'file-wrapper'); - domUtils.addClass(textSpan, 'file-title'); - domUtils.addClass(ic, 'file-type-' + filetype); - domUtils.addClass(ic, 'file-preview'); - } - domUtils.addClass(icon, 'icon'); - item.setAttribute('data-url', urlPrefix + list[i].url); - if (list[i].original) { - item.setAttribute('data-title', list[i].original); - } - - item.appendChild(preview); - item.appendChild(icon); - this.list.insertBefore(item, this.clearFloat); - } - } - }, - /* 改变图片大小 */ - scale: function (img, w, h, type) { - var ow = img.width, - oh = img.height; - - if (type == 'justify') { - if (ow >= oh) { - img.width = w; - img.height = h * oh / ow; - img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; - } else { - img.width = w * ow / oh; - img.height = h; - img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; - } - } else { - if (ow >= oh) { - img.width = w * ow / oh; - img.height = h; - img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; - } else { - img.width = w; - img.height = h * oh / ow; - img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; - } - } - }, - getInsertList: function () { - var i, lis = this.list.children, list = []; - for (i = 0; i < lis.length; i++) { - if (domUtils.hasClass(lis[i], 'selected')) { - var url = lis[i].getAttribute('data-url'); - var title = lis[i].getAttribute('data-title') || url.substr(url.lastIndexOf('/') + 1); - list.push({ - title: title, - url: url - }); - } - } - return list; - } - }; - - -})(); diff --git a/public/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif b/public/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif deleted file mode 100644 index 9ca4fb6a23c7ed528374426575c3e7f67730cfb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 923 zcmcJOy=xR;49270U`4Q~ICz36hzbru@Ut$0C6w

    O|E|nVb+VhLPxFEtyI^j`FqLyNd0EWpleq^){o+_2ylTHaqGF zO<^H5(sh%@qktPU&w(pp9-3Gs((CnPZEbBZ81Rip*?#=*AAA0G)`@(VL$#^?6S8qi z-Vg0MaQMyXC!K9~zh3K)&rGar-!b{?e)rh3&E1`oQ)AtaFLu8>vh-!*#^>7|90SDQAhmyv(gsfKv~ diff --git a/public/ueditor/dialogs/attachment/fileTypeImages/icon_default.png b/public/ueditor/dialogs/attachment/fileTypeImages/icon_default.png deleted file mode 100644 index 50ac1cb1654c147225f6c99f98fa820d8b1d47d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 841 zcmV-P1GfB$P)co5FHFQKPb3$yKB3yz3uJ2{(i*w{Y&32Y&5pHX#fNS%^lB?7Jx7e!!R@$ zW0V*MWri^ri!cCJuK&9D^Ig~)02-}VrVlRsat{^*C5gDx3qnV6$+=~+!PF21FkmZ@ z8b~H%=~Nv3aQ@;fylx>sluRWqyg8GMN5*##@7VOdNHQ%N3Cf&vJG&}(BO_ z0GI~5dh^d~zu)gPH#)1!5T+sR()iww-#)pz`cI)Sn%1`>N($3(G-m*$wuS~`$(U{O z3G;I( z%j~rr>P1P%W??GsP=NTpKmX&MwYt}DZ~eRS;O_04GsmW;j~~@ibUGeLsHM{BJj|YC8%N`o7<+Z@C+_!oGc#1Cx`LO0hUGI$B7llhKIN?RNhM@52iI TG@H!B00000NkvXXu0mjfSaX$T diff --git a/public/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif b/public/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif deleted file mode 100644 index 206fede4ee7495c3d4fa8dbbb76425e23566e9cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1012 zcmW+#T};hk7=Mn8YGYk-BW7+*XP!uF(_J6BXv?Neo2k~53o+@FE|ATt^)Y4hQe0@P zSYMk?afGon-bF^G(&-43w{{O_}gnhA@5fnj7M8-aCj50=y zVPnWvS{tp57Ngl{vQ4FpQbvhUY!um9(MFUJF~Ua3uCg|)42xklOh7WE4Jkunhz+3t zHlTrpWlWRhu}^6&TC>(YQGFd~m#uKGjDYE`Ri%LWZD&tI*hU=i4-s$()c}KNsKh9AfEd_-1{T@mY#TKmi;xWx{y>Y0S(uP3>_P>aLM((F zku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf>M0Of&)Odu8AxQWGEh;Aa zaoAj)d)uaSLL0Ml6+7z$ZBuu$v#U-V_6Uwci{yy5H*s`WUt=M+p zn)~SevRiXicW3`B{d+b3x9iEs+fRYf&nr{kgLA)De=Y{eT~yySb+dP(rDxFpb)})X z_j>E&!pg?wKmecq_T{xM7^R)ifIlLFD0GNA!!9O99O)|$T@5?_qRt;vFf&kn_)FW? z_`GnRYjoh$4o~IE$IRoKH*V=YJ>#wBrOt`{dF~IT+>(|Pf8s;e(6dXaz8IS9e|j*t z=3Q*=kAlHxo(+-b@~2-GW_ZFWttoKza)`U8q34AEw<{?<%ICf3>%N_l-tOzE_U8}Q z7oYS!sEM2(ic1;U<#{}~=FT^Xy5lXG?+$z3UwdQvQQ7pP6mQ9-w=|Y>&o0$8Wu0G{ isn`^mx;yvvmFWdDjr#c zLa{?BIQR=Hso)@-gFi5$h(?e?1}9O3!1?a`KX}6zj=OvJ-n-BDNC6L6Km!tBLTo}4 zi^J?j?#VEBbr*N!T4rW$>LzYT7A&f{s;jsnNwHVVMP0-N6NB+4N|K{}~ZKoJoX!9fm} zBM(~o#KEm(O)!!sOVVPE zi-}EWVsRKLD07CIi5XHK*D_Nz6;q^KvS3lvL`*>SB*k8X8pJ?(^n)}xO*^QcB&d+A z2}aUn$yV~Ua!;X@Eadx`Qv~8*!H*R z1Jb}XTM)URaq3M_BZ+<>;dB>fia`oDqncq{}&s`b$QtO-@+w}C? z;Nq!~gPU6~Dz(9{-TvCj!(Htg`{x(uCg+CR6V+R1T7A<43$vfP-MtrguipE)w!F3Z LqusxL9gh72jO~@^ diff --git a/public/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif b/public/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif deleted file mode 100644 index b351a1f2a294cd0f8e145e20c2c455a38cad2001..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 986 zcmW+#OGuPa6h7I6wK1usMoI`3X2DsMWI-EEY2_v@7Zr3CQ7Q#xDA5CHkz|Fbmn^6$ zdu+7Vn5dzZIN3$9%xdyg;HxyPQD@YdxqbJ)yTdu>d!7H!$V}gndN`J1DL`cG)5a)c z#27Y)Y^Al)%4ji~jV9Yv+9+j|7{x}BofU0F84)9FgzPG7!^*H2X2S#|L)wrsB!<`! z3Sa{oSXjn1Sswe8)}l3QO_mmwQd)^ttQA=mXo}JzT38ENQJ7_=Sv0d|f<~-rQkp~) zYXU1&0}P^}60*<(F|Yv*EG&~XWNSQ8ij^Yk545O6l&})AcA)}I7R9WX;2xqdt4I{F zBG^M7kcn-?0sjyIhfobLh=xjxLI;R}4QODIP0qGaFXe8ekBOO~`@{5Ca>~WKU$L(MF9&xEO+jKhUCL zvLA=d)w#EAIw!O-J6Ex@PS7@WCp)|9#9@!%IJ8KPXnPY!hXr<^@j2j12oIh>6$*ux zmKHCUe`={p) zzwLH7IG43C5ubkIf@>L!QZh8)kBB8&*+5TM#qX_8Xe$_MO>#wd-P&_}=vih>^_H5o zg)25>S3JtEd6gfXvF(myC5ih_CjpcNI+~ z1pOIXrw&{QB)mA-kn*SH)JW$*yOgGMLYik+JFZE diff --git a/public/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif b/public/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif deleted file mode 100644 index 26019b099d96b382a549fa383bd81315cd6d295c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1001 zcmW+#TS!$=5S_p%q=$ihRGNrTSo%=|Wl4e&+5@B?2{ojLOjtg`N-j#~hfj#Gq+|;c z1QiB~BHGowB$g7jg(4^`Me}B48Di?a>h-!?`^?{*nOU>entf7Fq$C_VA4Xy1Co(p) zG0GS*hK(VcX>GJJT8w6+$rhD1N*N_au~B4uMH^8@#0VQ9JIdOyGAxGKFagPsHlz%R zAvS~r*nkEWhS5!Sj}4`@Xw6!aU5iX9twbx?{nprb}BStkT zO`?f4VJlbz45Yylv{1uhU;`Rh7$z&o<_J-Wl_IMTYmtd4VI^ecf(42!idiv1JxHNf zktkwCkOx0N6VtE*`auE;!5Uy74VGvH4=e^Ypn*l!Ia@}KU=gxLLLb&5V-_a(3b|l` zq7VzgM>q`wzzgj#8fsxB`~Xc%!wztQU?>D@fPpk7K?^*v7}$U&dm`J7GI9jrVlWc= zuofAUeH_+T=iavHoY30rT*dY}MqAe%@9d~!hdqL$&>}gc?M)mW7TAHtbHJ5g9yDRq z>S{0;TyY}M*Vot6)8lr#T`pI4`I8-K72A??<5Dl2EUe#KI(V?&yF0V`db_uxXX^Rz z{QI%#(Z9>f%S*wPz|x|BVSa9Ic6KEYSoHh-KA&&Fe)u^#IX*TvFficpcse>dT3TA_ z>guYhs_^uqmqOM+D8+#T{)jN5^@G%z>rH7pmwaOa4-`fm zE=u|sx$)W6D9^QNYQOk2Ei$$y(D*5)bJOYc8&k)--#thlPjXH4*Z#?Ajc?BX_V%)O z-Hhrk`u?>s=KkG>N6UP#n-Uv}+Y;`Tt<9{xw0UQ5$-=Lp($B3;TPuST`-(SY?4K+P X4d%*-doJfz=*#Bpp_0z7a!ULUk{Ai+ diff --git a/public/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif b/public/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif deleted file mode 100644 index bbb65c837dea9a6c28d6209ca1b1140a37988423..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 996 zcmW+#OGuPa6h47kZE6CejXiWDMGNUrrnSm4q(vaKDU@n)7n&%QMHv`Ts}dJNaY1Jm z1%)xttY%cue2lg@;j0pL1`5YVHoj^e%{0#KyZ>4JhjY$%zVAEtzgSgyy6lFFT$Cg- zHpCchj53CeA)AR9(MFUJHbSmT8mbqSu|M|C@L*ViDFS?Nuiguuo7lr0!NGr zX(1)VLf8t{00U{T1TECC7}$UY7KX_RvN=L&&03SyhqcI*(u%brD;F$KWTlxk6V!tg zdNnCctO@eq2WVm%c0fN!Kp|KI45Yylt>A&hzy>t1$U0}s$Pug*StFqjYmqT4Cin`u zV1c3{Rs;3ry4U%$;nF- zrBbn2EEn{ief)z6-Jp;EBfd`ky_8jVeTK&hz2O8aFtv^S73*9B2zWtF;HMPE?f}2k=uA(oM PSLc_Xzst?bp)>yhr3M#0 diff --git a/public/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif b/public/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif deleted file mode 100644 index ccb26fbebdff5521eab7418d22e99fbae6c1d08c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1001 zcmW+#TS$~q5FViig{X~sv5e>~C`M52PqY*C`39biRR&OdL%%zX2G-<*@4v2#=EF&o(^Or%XH zt)_scWI{;6Qjn1g7AUfi%#sP} zK?=Q+gd~;(dGG@?F%3JQA0(gc0k$hWT1#y8Q>U^EiJ(_cNaAO=Ed9XQ}e*ob1A$rqR0<`46gx0%!XIm#cEx9b24x9#1v-6J4L2;{%(Yx0E;vP_|dsDD=Bqr6K zlHm7+$8t;U2TSW-{OnCS>CRfYv7yHk`q$jys&5*5AI!X%Ro!^Ls4C>TvM3?g5=?S; dtLf~)4_`YgyED9bxo14v@(;Dvr3@ER+J8}<4t)Rs diff --git a/public/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif b/public/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif deleted file mode 100644 index 2e8743a2705b98b9c546c28c97fe724dd4668b16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1009 zcmW+#T}V|y5FX8kBEk#Si<*%J5ovK9!7{1n!IT1pEV7cg5JRb%rl^$FgQNr{MG-7& zA`xU1A_`tmEGaW%)l9|mH^r2+ydDOkN^7H)(PA_kO}44DQOYPWij5*WE82)MB1YH<*;Uqtm0>Z=h6zZ9v>|0k46z{; zzy>t1u#9Q4JoYKAMQhfYEG;Ufv=XgYE3zuk6s1M9uokkSFw07_XlBg>jab#BG>InG z1Xid97(_!QWT6LQU;`RhSSD-8)_9^6D@E2HXiU9wr2Ei%NyMkpF_J&`0YLK7n!ypd%%@ko>=}l@3A-fW=Hs`+liI4{u!_R zJ@o-MCR`=o!|wiwC~n{V@aK+;)v;~|ifp4t6BC)6X zNY-$)^uNy?@fJ-lrA;-xIvblk5|a^9wr8sK+EnAE)Y`6)xT`ZQ_lBpVDtf99_0~L{ z=}wQmmDtrA(ebGEQ;{!hVQw(_Nqo)eoe7sa%4^;g4K8%`{k=aLSLzy1U$>H7*_tKo z?hDH)jF-g$H!2(mEu+l^ml1h9)R3{_R zN+{4&BvL7dheA~CWs)UwOqF5B!RW`y}SP8Q*0ZGURX(1)VLMVU@ zXkcL((`0$<)5a)c*ch_3sI)d(8O=tMRe`3`Mk%A%D6*n3%i6Fq%!UaXv1&*gQij+N zSfLtV5Dk@(g&v534QOCtnXDmO<0-9KYqI`8i%Kc2SSzx2p#n`-nprc!Jw#zvlhVYR zU=MjfCbkg={6hpBLN&l38Y(dg9Uulapn*j;Ion2!$4Ze668=DoidiusSJ;ILG!?NT z`cdZNvdhFbs!K4KRqtCS*Yeh=C1gvL~|BXrsm>Tns_NA81iA z*^k5K>fGBlofF!aovYYcCup0xlbv04;;=_>99kqtw7rR=!vZ_d_#AL0ga=QcT3T8< z<=R-i>3I9ihKoM2lSwUuoqZ$2BQrmK#>X8XzYq$FpIcabGw!|J+&@0~jgD6Rn*IHD zYU*J_gIA>EUC-4U*8(b%5;IQ(N3L1D-lx5b+S*z!r;vBaQ?%dj<&*o3m6bEy-Cgzd z%gf7Nuh;E%eU|NsNa*$rtBcF| zyk*2Qx4ovf+`S`nruXcsh=cR3xoPb?(_#u%q!dP%WtCUfMD^y5?XF6Her}@Ud*@JN zR#JAj$JM;zL)wdit+9jteY2rawR5d!2K?9E8$Mq`ciulptVrE=A*%YMZ*gr`TuJ|{ z(z2$eFL}wMSGG+Dq$lSUuPlpR9NA3ywWC9IrH}KT<}duqn4ccJzBi_D;`Bu5K&ybF0xCVru0xy zLa>Ldm34nuFN?9hw?M?7)Rv5bKzH}sb=_Uxp7)#Ed^7XR^E~r@SFc?;bGE0MnyE}= zT^MWCTCtX`C6^gvjanntur=h0YOJbNvC3A-^@_2gR>TThAvem#vRW3)Y?**$$yicL zVu>vw0XCq4g<*7)+v7rw5o6dGa%+*P8Wp2#lpG5bMU99NHbRaRdRYyNVKz+Qh*3jo zNDQ$dYz1q8fizfx7HU`wY(N7G!{h|H93iT#N=_fvA`?+z6>@UH0!0>ORwk$iDfB9d z5-UL-`~Xc%!w%>N2`B_>fPpkvq7^)_7}$UY7CGl!899PQ$QcQJSc{BVnBXhqf(42~ zECe6nGz zR(E#l^?I#Vt4>c($K&x>EH*eeSSXZoxnJ}13)SlO_I9OSt5&wk<&sy(Z+eA7F`uuY zP^nb5w(z-JDwRCXD;765Hda?wve|4VlS!x3sZ=VNOePYEXf!%8F%gMG!r^c*7{t>* zQrW!=Lg@rJ;E!k~Y8)rqpWD-SyM1VBq23t_FUFtz{Mx?sD0C|jZ2C9Sbm)4^Oz+y? z)NEU5?fiq>-2Lw#Pj*iB{YZA*d>J~N?LXc*G#V&$2YN3)-Dis(c-P&AvG|vcl}Pm7 ha8EkcUOioGJ2wXc!R{Rj722e<$L diff --git a/public/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif b/public/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif deleted file mode 100644 index e86c1c6631b34ecd605b655baf3d7b1ae643d014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1005 zcmW+#Sx8n<5S~OS9}KaFd{U%W$zY07N%BQgM2kWK39;Zvw5XMcSs{ptw3ukd!DvAW zOUSa^MRP$(k0NGD>TjW9qHS6!zy3LW=bpD=X1;Cijg5;r5T52w{na(1=w-+K@8DhQJEd z0E1|#ge>$x3~WFH3(I5;*&0u2&03T72U=80X~kNRwF?z!veL|&3GN{ZvznA9)&zUV z12VCVIN%>5;1H?-2GLN7QRo0MumKG$vdP&tYCKkoY>@B=T2#!63Aw^9RG_Jd6(L6? zjR2qv;|LmV5he0~Ol%_#Xo6ulgld36G&Ug%IzS9;K$AU@okklq9^qmL68=DoiphQ) zHdp7~w&|SE#_U|h&N@Nc)Sc|?suPDjg5%I4Iil@N932+efyU>6D&6#&)VjN>|V zv-8~R>nCf{GTvkb-3s1$HZb}{bVgT3@w?(fB~dl5>apdK*}q@9UF`{1qs)Bgsw~gR z=r5V~h#Q}Nh}(M$j8Z5x;E(Vp+SX66eUHZ;aWxlg`{dh`oKe|bG})HBk$k7J>&nXF znW?~}na0bDp}hrOKKbvIaHygA>osR74c^g{8LV9&?8bPWVl?=6FUHC(Dw~C1%a`M-0X^ zUTDZ(=qbF}x@WkhBY(X3Lqp?a*Tv5PRVfK4D#P2o2A&MKE9$~CZ}>dh(HH(8{nF#G b^xlfyQ$tzRM+;I8wp1>Sze?TeO_BcrMy(F| diff --git a/public/ueditor/dialogs/attachment/images/alignicon.gif b/public/ueditor/dialogs/attachment/images/alignicon.gif deleted file mode 100644 index 005a5ac65a3ddc9cdac037abdb5fe92267155a0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1051 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 diff --git a/public/ueditor/dialogs/attachment/images/file-icons.png b/public/ueditor/dialogs/attachment/images/file-icons.png deleted file mode 100644 index 3ff82c8c488f53a7aff67fbe39742e3321183eca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44070 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

    *vGSxI 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 diff --git a/public/ueditor/dialogs/attachment/images/icons.gif b/public/ueditor/dialogs/attachment/images/icons.gif deleted file mode 100644 index 78459dea7b12ccbeec81d19ecdab22b1658e93b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmZ?wbhEHbbY#$A*vtR||Ns9FJNP^N(4UCIf1{56|NHmvpFe+o|NadW2g{=nia%Kx z85lSjbU>mYGZarn*x(aH@fLZq!wgUiaA+%BrQuMGlI(3v}$4ket=c%G-JG_a6@d zUMtW1Dv_dMk(#;&JDULU);6IIt*+RD80Beh(v#{r8-@JE7rOMyrKZ@`PM+5- zK4PEn@UifH&1a7opNKNDvAy~H((Lt@PiCLrh`sqL^yyzFM}*_N9gV+*y1bvCcd{tw zP+atQ`ojjtR_?nOH&4iCw(0v^v}@~SfpwBi-JHA%0-p_?kEd#ga=ENn_|&M5?L?$c z!i1+jT>6R+ul!uQ+^$n$Hm~o7%Nb0wJ#GK7NE~>4aE?#6+>{R=oUZeJnouMg`B^J) rUi3;Xl^IQMkE|4#X6EZ{`gBG$ultcLuMHMNRKNMR>qv$%6N5DXx{1lO diff --git a/public/ueditor/dialogs/attachment/images/icons.png b/public/ueditor/dialogs/attachment/images/icons.png deleted file mode 100644 index 12e4700163ac87fa38ae3d92a2c39d0fb4690fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2678 zcmbVOX;>5I79PY3QcMF;v=DTJ2Cao`KoWu|Aqfy6h(IyOQj#!`2w6-5AW&qm{A@Vn47?^n2aU%})k0wvK3C07Okv?vJ=0$Cz%3={xy zqf~pe&}INI6bOSj3J%+s%9n_++yxtKqDTs(0bujiL@Ada3n@Sz6eAS7+30KQY(Qa@ zo6SyVHl8h|Ljs}qUKtd)*Dr{_HCwk^{ks>P(^% z$>3j?4eU)86-^Cbc>d)J9=X{F6bdO7hf^w*SfwLYB8$NhTwGihIEX|C*up`s5-Yfg z4r00OA_D`G^JPM*LMRb~3yfTzBwpcW14sHc1(B4^{+n1V|4S%XGF&28iX&k0IFV=} zuQ%3mMF8}lF#ge69;A{&xBy5liI?%={fM?*1jE|>yQ2j|I2!79nGoI-ZX83xj~78= z1&iTk1FvACgi%yHfdZ>YcEXd1coKy`pb&{P3YkJCkmxiDok&~c_(v?PIup$-B z5`{!AkVrv#APL;a=JJK&g^3RrHt21>3`izSfTBEQ5)t@DVXE*SA|O%d45o(%o=Ey% znZLzG{XeSV;9zhI* z*~k0Z^G~&Z-c7Xw#U+Dr?Cg&42yA(9*^$glv(nbKwok8JbGh^2fn9ZV^^MlnECDr% zb8Rs8C8IoDeQzNCoR;2}!wUCvRMpV!J9E|5P56qVSBFh4T0Y;2i6|=%vhzEOZ^qncd+?}N_bX*{ znIC?`)c7~$4FQSwzwzCOojcU0H=er9Th5iEB3DIX5_dF9pacXTJI>B~>68qESsvP2=ichF(pvo+k4SU)M~s z3+?sA#l_+!^_(ni$K3hWpYvO@(V>(R7s{iDO6K~mgMjhb#~a;iLRMs%6Morxqp@)+ zJ11v+j#Q)R8@*bY-^NRurddL=!0Kz49SxqGJ&)t#ALNBh9UchxYqVgy=FS2Q)2-GG zBd14SCdB|xCIa#W@6`ozw2tq(*SqVL6m(b4BgGYUcz8H7tm5RY4LjVYtB#yD%WIiL z^ok2`{E08ble_h+YjPxp-p^aDd8axLc2xNv4I44|GNGnPPd*e)aneY2alYqb9*45qn=`wHT|PE1MH)jbikTfENQ(LU04R%o4GX7X;)Jz~k@;+*h@ujN~uo%_H2Vt#)9-SuZ8 zD(`znx@z1*Fc?})4yp3{yMwz%f3p3^_`td}jYgB*JZ<~5{o^*n97-MLN`u1+WP=og zG~N;$va+wQFMG^R<8tg!zbtv)zmj%$*=6~JHf{#PVsN6mpPUoW!COmjHa8>BpFe-| zviJ7wsWesFOw!q|0Zmd!GK3nK4i|YKKmE;d9H9tD?#s9pU3R==t>dhsJ`NpNT6t@# z>bvSrv*xK&x%1B=UMGzB-BC7Vw2ftZ@0X$v&Y840W1O8Q6#!^1lgqc)kL(yB)Le=8 z=T=v)?T?7Ey|HH4%EB;>|Af=wc|K2&Wo#TaFw`-{JDys3#>dB}&&TIO#g8>AVApU$ zt=rXe@74BHRaNmELusolZfLdI$M(mvG@O(Dz4?yH_d|!{EIB#j0Rtzj`|*uIYILgq ztW8PmrPs*^+){hCug`mGw|PnDebMsUP`H=IzTQ4QV{GIFucdh)Jw4siba)hSNtxXH z<2!>gR4NgL3iX`KelH{#*9jjIIct8zmJ`on8|gx>n+4xbJ{ci_{515Ueb%M z_d;CG<=vC_{(f=;@|oKWby1nsZbV)PaPKK@(zYTx7wEe1W*3B_g@$xR${3`=9{n z^jx{5(=Foe&%s~(I@!H?NRo?N70XHp3J$g$LnK`+9O&;)_SPBXc|eDW1uGJ2lQU?? z(3=`x>_4uiufh3t9_?yDa8SXgm1%3n5UqP~Dx+6k>B=WpjNSD0C$ny$TjRe?G_AmISp9T7R8oQndf>2sl4f z*Q+)Z)u<0zW)SlFM=k911pK9m9=J$kKII$NfP=n8d9 z_5R=XSPzxewWHyWjb|>hqTEDBdpM&qYK*jR3}fpN>&FrOc8Nw01u7#{_#oBA;+Qag z98vNrKKd&}z6#EjbJU=q-&*=dcaJp(ISHq7v%_OxSG{XiR(gB)=^pEQUR|QJs_=g6 z0z4yL6Rn)4v zv)yNtNTj)n2&tMFwZy-gMkf07%J%iduo#zV@n|#ww?G(766w)+7*H6YEwCDf^l94~ z;7}6D-rJzj;#%bzP=^|skPXAM8chV7L<(JLH9@*07zg6vEe0fv@uKDu12E{r7#sLX zw$dbl6AcmDF*tgAlt#BbNf)ALtPBT2tso&_gmDP48j}$-XboeG>w?7Gw#{My;}AS4 zj4@$Kt5g9J6oUailNX?4b2xxNz~lt-1p#5{RT#D%e}kcq`%vTaA20xFgN4>cO6(Pmr?|Lb=~ zVY4R91hdqz8BM`-#KR?c*-Du}2?j$rifK?ZdFmEbi71Ym6HyZ&i537pN=RowY#YAg z45boOAZ8pwbg)7i#vnA927?~tOJt%Tb|9C-W%D^4880|QAQ8)WQofuMEEaJjQ(P&k zOEJO-KE>7l%jJEPYYT(XL{yf-m?0I`%Q4glj2{{_%;1I13uFtpaz3HQo7u|*S3iT7 zNv`0dToz%5WqaEHJoVHTkssT1I=IAQI{Gj|s zLrABQMF5Sm8=zAjTlVMGdII}WHeGsvSex8>aPW*~dEN^00n4|U<+`F)0+VSYbQ~WV z?F%~8cr8%bc)qMXNq@X|msi$rCx(p8ocoxvx95hP+ww7tVLzn=Dw}7u}%eHk8iyK22DPh{^tP z;8yePo+0GIiepheWjSKe7i~Cr%%6U%^FRaT+&;zKWI;yr)=Htb`;H~Dtv3>QdomZO zx?7%U#21`hX#U}z&+kj(Dq>0t3fzD1{LAk;=X>(P~1p?y-g&qe1}@0io|o5x=H z{k~yG;hpr+z9nb%C)FKYW7g36$AgPzSF1B*L3P7~x01H!jfYh9zSJYpH-vWSwGS*0 z9k5wfq^Y87ZYAwKPqD=-7B9#ulJ4(Z?b}N2rRFd6tR&}rUQ;I@OUoYF_>%W{SBSG; zOJyu`iA??nIWcheW%Lt#9#xJy!m>d^1>^7*Xzr3{YHG7TH`UuA+7(^ zqh7~c*~n7gqt4%h2dR`(bxr1l4`SNv%@iD(L0l(bA7m-!EPjeb=C diff --git a/public/ueditor/dialogs/attachment/images/progress.png b/public/ueditor/dialogs/attachment/images/progress.png deleted file mode 100644 index 717c4865c90a959c6a0e9ad1af9c777d900a2e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1269 zcmeAS@N?(olHy`uVBq!ia0vp^f8U}fi7AzZCsS=07??9MLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}t-3#_`hBq$Z(46Le)Ln;eW^@CE2 z^Gl18f$@>14ATq@JNy=b6armi>cVAJd5X6R;MWawh(V&G(G=xXffXz1o@ zX=ZL{;B08&Z0-!x>zP+vl9-pA3bQv8XfIT+GhV$`&PAz-CHX}m`T04p6cCV+Uy@&( zkzb(T9Bihb;hUJ8nFkWk1Vs?Uzb>gonPsUdZbkXI3g8g7%EaOV0~10%hv-cqC)D(T zj?o7t52WM*69T3|5EGvGfgE`DNzDW1nId53*cQ_-&cMK^?CIhdQgN$ga=rIq1A(^5 zYKwg&`wo`WvF`u>{iFU|`!+wz>b#B?t8F4hxRm$~lz-tTH#6E8xZnKlv%`YRwvA{oKseqmK8(Gfx|> z#)dT+Zy!CGH{+89Q&m{rC!PyyIjq?Y9m+ziHPqr6qxfF`+2Qt=-KQ=fE8_j%1#Y2} z>NffN)P;AQIhrE)QQzeqbFS^A8(M1XGuQqTO<=fcH+M~2lzlL$Ao6teb6Mw<&;$U? C61Fb@ diff --git a/public/ueditor/dialogs/attachment/images/success.gif b/public/ueditor/dialogs/attachment/images/success.gif deleted file mode 100644 index 8d4f3112b9d1df2147ed3b67d9736163dedd11e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmZ?wbhEHb)L_tHxXJ(m|NsC0{`>#WKmY&!`~ULm|4%>v3rzVXIOUh{)L$ageu+>2 zB{Acd%*pZwE#>TlQSztb-KopJH+%!_|l-~7Ag*59?a z{_c7B@6_{ur(gU#_wwKE_y6vG`1j=VzZYNsfBgCX$DjXizW@L859r4KV8@~pia%Kx z85k@WbU+dyKQXY~a+p)#p(E9QVoA}-BeJtDJbfs+R&065YSGzOop#2q7tzUUTK@E- z1Qpqe*fm*b*T-Fam_8!ZPiJg?eRTb9ku+5;xVnw>Wr$>Ce}(b zvq{bgY~#~oR8Cparp&0%zbdUw!o*Z6ds70hP&$teqekA&7*16-748@%Mnl0vSqU6+ zOpICr!NSHY@7SLk+rBLP3&#jWP!Xxbb jiN%_{Rv%uKKTTNF#>acL^G5)OtDBg<-IWs>91PX~W`xy? diff --git a/public/ueditor/dialogs/attachment/images/success.png b/public/ueditor/dialogs/attachment/images/success.png deleted file mode 100644 index 94f968dc8fd3c7ca8f6cb599d006ef3f23b62c7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#?>2=9ZF3nBND}m`vLFhHXsTY(OatnYqyQCInmZhe+73JqDfIV%MiQ6rPIL(9V zO~LIJBb<8mfsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV;u(vXbonl~MI_~M>7*cWT z%njcRVMh`65C6~Q2yI{K`NBQQh9heAinXE1(JfB=Ul%M;Ke#x6g%L8^f5l4Te zj&BcK1znDIyZS2~eC7F3K+}tVTa$=u*HTU0W4>0#`+Qf%|GkyBERBs#$Y}P@k7@U2 zd#*XsYr~WGeCA1uSK>2HTD)g9mP}Xrpg$+`K&8dx2JS~bjCx(hj5}1;-8qn2_>|?> zp{d+2q{I0hbQS!U-jOut`kSEi+IhQJGmBl4O%se*W?OGKZ0Mp?XmGnRgezL^8vCJ4 z#-ek9(R&%4!h+;oXA~Mtbyie=u#0PDiI#!iX`%2?^@kRL8ma*r6?+*}W4e|_8~J&& z+-+*Ub3{dDcAIF|!MTDz0#78qKYeaeVU$wDOOs3cR=e5FZ*O2e-6xc{Uu=$;!s>*M z>nZ|V>zUp8-oE6^wXjV+_UOvuE&SORr`;3hnBKu~e3rzlY@NRjD|5Ui2t>^@Ve7jy z)2vT>u1vesjJgG`f;l_n`FmbR~b^~{VzXB}7CdU_pt>lO9l=E;X#4<2bZu32r~J^e^%TSISQ_Qm$= z7d{rOo2%^RUGseJkpn9(MWszUQdl(i&RN5PBgZ0d#S7ZipShU3W`>Nsy6C#pCD*KW zyxHW%b?m|pr;dF;L$saa#oaeO`u=>jkXTjl9*cLEvOD!Jdr4ooKJW9gY7?D{e?uM^ z`_}E4`0yR0boA=9>3>WXzUH{&pDfpZ;_2xb=j*pKsk#WyD%J#5t{1#azeB z4SJq8H2*dJVX$xugZHVh{7U`u4@oM|quz5j-hRJi{qwh1k5uNqu`W>3HJG&Y^R}6R z$Gq-HPue$sd${oT*XKO8zN>Oe_%K^bZNm3^-vf7@5X# - - - - - - - -

    -
    - - -
    -
    -
    -
    - -
    -
    - - -
    -
    -
    - : -
    -
    -
    -
    -
    - -
    -
    - : -
    -
    - :x:px  y:px -
    -
    -
    - -
    -
    -
    -
    -
    -
    - - - diff --git a/public/ueditor/dialogs/background/background.js b/public/ueditor/dialogs/background/background.js deleted file mode 100644 index 9a4a131..0000000 --- a/public/ueditor/dialogs/background/background.js +++ /dev/null @@ -1,376 +0,0 @@ -(function () { - - var onlineImage, - backupStyle = editor.queryCommandValue('background'); - - window.onload = function () { - initTabs(); - initColorSelector(); - }; - - /* 初始化tab标签 */ - function initTabs(){ - var tabs = $G('tabHeads').children; - for (var i = 0; i < tabs.length; i++) { - domUtils.on(tabs[i], "click", function (e) { - var target = e.target || e.srcElement; - for (var j = 0; j < tabs.length; j++) { - if(tabs[j] == target){ - tabs[j].className = "focus"; - var contentId = tabs[j].getAttribute('data-content-id'); - $G(contentId).style.display = "block"; - if(contentId == 'imgManager') { - initImagePanel(); - } - }else { - tabs[j].className = ""; - $G(tabs[j].getAttribute('data-content-id')).style.display = "none"; - } - } - }); - } - } - - /* 初始化颜色设置 */ - function initColorSelector () { - var obj = editor.queryCommandValue('background'); - if (obj) { - var color = obj['background-color'], - repeat = obj['background-repeat'] || 'repeat', - image = obj['background-image'] || '', - position = obj['background-position'] || 'center center', - pos = position.split(' '), - x = parseInt(pos[0]) || 0, - y = parseInt(pos[1]) || 0; - - if(repeat == 'no-repeat' && (x || y)) repeat = 'self'; - - image = image.match(/url[\s]*\(([^\)]*)\)/); - image = image ? image[1]:''; - updateFormState('colored', color, image, repeat, x, y); - } else { - updateFormState(); - } - - var updateHandler = function () { - updateFormState(); - updateBackground(); - } - domUtils.on($G('nocolorRadio'), 'click', updateBackground); - domUtils.on($G('coloredRadio'), 'click', updateHandler); - domUtils.on($G('url'), 'keyup', function(){ - if($G('url').value && $G('alignment').style.display == "none") { - utils.each($G('repeatType').children, function(item){ - item.selected = ('repeat' == item.getAttribute('value') ? 'selected':false); - }); - } - updateHandler(); - }); - domUtils.on($G('repeatType'), 'change', updateHandler); - domUtils.on($G('x'), 'keyup', updateBackground); - domUtils.on($G('y'), 'keyup', updateBackground); - - initColorPicker(); - } - - /* 初始化颜色选择器 */ - function initColorPicker() { - var me = editor, - cp = $G("colorPicker"); - - /* 生成颜色选择器ui对象 */ - var popup = new UE.ui.Popup({ - content: new UE.ui.ColorPicker({ - noColorText: me.getLang("clearColor"), - editor: me, - onpickcolor: function (t, color) { - updateFormState('colored', color); - updateBackground(); - UE.ui.Popup.postHide(); - }, - onpicknocolor: function (t, color) { - updateFormState('colored', 'transparent'); - updateBackground(); - UE.ui.Popup.postHide(); - } - }), - editor: me, - onhide: function () { - } - }); - - /* 设置颜色选择器 */ - domUtils.on(cp, "click", function () { - popup.showAnchor(this); - }); - domUtils.on(document, 'mousedown', function (evt) { - var el = evt.target || evt.srcElement; - UE.ui.Popup.postHide(el); - }); - domUtils.on(window, 'scroll', function () { - UE.ui.Popup.postHide(); - }); - } - - /* 初始化在线图片列表 */ - function initImagePanel() { - onlineImage = onlineImage || new OnlineImage('imageList'); - } - - /* 更新背景色设置面板 */ - function updateFormState (radio, color, url, align, x, y) { - var nocolorRadio = $G('nocolorRadio'), - coloredRadio = $G('coloredRadio'); - - if(radio) { - nocolorRadio.checked = (radio == 'colored' ? false:'checked'); - coloredRadio.checked = (radio == 'colored' ? 'checked':false); - } - if(color) { - domUtils.setStyle($G("colorPicker"), "background-color", color); - } - - if(url && /^\//.test(url)) { - var a = document.createElement('a'); - a.href = url; - browser.ie && (a.href = a.href); - url = browser.ie ? a.href:(a.protocol + '//' + a.host + a.pathname + a.search + a.hash); - } - - if(url || url === '') { - $G('url').value = url; - } - if(align) { - utils.each($G('repeatType').children, function(item){ - item.selected = (align == item.getAttribute('value') ? 'selected':false); - }); - } - if(x || y) { - $G('x').value = parseInt(x) || 0; - $G('y').value = parseInt(y) || 0; - } - - $G('alignment').style.display = coloredRadio.checked && $G('url').value ? '':'none'; - $G('custom').style.display = coloredRadio.checked && $G('url').value && $G('repeatType').value == 'self' ? '':'none'; - } - - /* 更新背景颜色 */ - function updateBackground () { - if ($G('coloredRadio').checked) { - var color = domUtils.getStyle($G("colorPicker"), "background-color"), - bgimg = $G("url").value, - align = $G("repeatType").value, - backgroundObj = { - "background-repeat": "no-repeat", - "background-position": "center center" - }; - - if (color) backgroundObj["background-color"] = color; - if (bgimg) backgroundObj["background-image"] = 'url(' + bgimg + ')'; - if (align == 'self') { - backgroundObj["background-position"] = $G("x").value + "px " + $G("y").value + "px"; - } else if (align == 'repeat-x' || align == 'repeat-y' || align == 'repeat') { - backgroundObj["background-repeat"] = align; - } - - editor.execCommand('background', backgroundObj); - } else { - editor.execCommand('background', null); - } - } - - - /* 在线图片 */ - function OnlineImage(target) { - this.container = utils.isString(target) ? document.getElementById(target) : target; - this.init(); - } - OnlineImage.prototype = { - init: function () { - this.reset(); - this.initEvents(); - }, - /* 初始化容器 */ - initContainer: function () { - this.container.innerHTML = ''; - this.list = document.createElement('ul'); - this.clearFloat = document.createElement('li'); - - domUtils.addClass(this.list, 'list'); - domUtils.addClass(this.clearFloat, 'clearFloat'); - - this.list.id = 'imageListUl'; - this.list.appendChild(this.clearFloat); - this.container.appendChild(this.list); - }, - /* 初始化滚动事件,滚动到地步自动拉取数据 */ - initEvents: function () { - var _this = this; - - /* 滚动拉取图片 */ - domUtils.on($G('imageList'), 'scroll', function(e){ - var panel = this; - if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) { - _this.getImageData(); - } - }); - /* 选中图片 */ - domUtils.on(this.container, 'click', function (e) { - var target = e.target || e.srcElement, - li = target.parentNode, - nodes = $G('imageListUl').childNodes; - - if (li.tagName.toLowerCase() == 'li') { - updateFormState('nocolor', null, ''); - for (var i = 0, node; node = nodes[i++];) { - if (node == li && !domUtils.hasClass(node, 'selected')) { - domUtils.addClass(node, 'selected'); - updateFormState('colored', null, li.firstChild.getAttribute("_src"), 'repeat'); - } else { - domUtils.removeClasses(node, 'selected'); - } - } - updateBackground(); - } - }); - }, - /* 初始化第一次的数据 */ - initData: function () { - - /* 拉取数据需要使用的值 */ - this.state = 0; - this.listSize = editor.getOpt('imageManagerListSize'); - this.listIndex = 0; - this.listEnd = false; - - /* 第一次拉取数据 */ - this.getImageData(); - }, - /* 重置界面 */ - reset: function() { - this.initContainer(); - this.initData(); - }, - /* 向后台拉取图片列表数据 */ - getImageData: function () { - var _this = this; - - if(!_this.listEnd && !this.isLoadingData) { - this.isLoadingData = true; - var url = editor.getActionUrl(editor.getOpt('imageManagerActionName')), - isJsonp = utils.isCrossDomainUrl(url); - ajax.request(url, { - 'timeout': 100000, - 'dataType': isJsonp ? 'jsonp':'', - 'data': utils.extend({ - start: this.listIndex, - size: this.listSize - }, editor.queryCommandValue('serverparam')), - 'method': 'get', - 'onsuccess': function (r) { - try { - var json = isJsonp ? r:eval('(' + r.responseText + ')'); - if (json.state == 'SUCCESS') { - _this.pushData(json.list); - _this.listIndex = parseInt(json.start) + parseInt(json.list.length); - if(_this.listIndex >= json.total) { - _this.listEnd = true; - } - _this.isLoadingData = false; - } - } catch (e) { - if(r.responseText.indexOf('ue_separate_ue') != -1) { - var list = r.responseText.split(r.responseText); - _this.pushData(list); - _this.listIndex = parseInt(list.length); - _this.listEnd = true; - _this.isLoadingData = false; - } - } - }, - 'onerror': function () { - _this.isLoadingData = false; - } - }); - } - }, - /* 添加图片到列表界面上 */ - pushData: function (list) { - var i, item, img, icon, _this = this, - urlPrefix = editor.getOpt('imageManagerUrlPrefix'); - for (i = 0; i < list.length; i++) { - if(list[i] && list[i].url) { - item = document.createElement('li'); - img = document.createElement('img'); - icon = document.createElement('span'); - - domUtils.on(img, 'load', (function(image){ - return function(){ - _this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight); - } - })(img)); - img.width = 113; - img.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) ); - img.setAttribute('_src', urlPrefix + list[i].url); - domUtils.addClass(icon, 'icon'); - - item.appendChild(img); - item.appendChild(icon); - this.list.insertBefore(item, this.clearFloat); - } - } - }, - /* 改变图片大小 */ - scale: function (img, w, h, type) { - var ow = img.width, - oh = img.height; - - if (type == 'justify') { - if (ow >= oh) { - img.width = w; - img.height = h * oh / ow; - img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; - } else { - img.width = w * ow / oh; - img.height = h; - img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; - } - } else { - if (ow >= oh) { - img.width = w * ow / oh; - img.height = h; - img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; - } else { - img.width = w; - img.height = h * oh / ow; - img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; - } - } - }, - getInsertList: function () { - var i, lis = this.list.children, list = [], align = getAlign(); - for (i = 0; i < lis.length; i++) { - if (domUtils.hasClass(lis[i], 'selected')) { - var img = lis[i].firstChild, - src = img.getAttribute('_src'); - list.push({ - src: src, - _src: src, - floatStyle: align - }); - } - - } - return list; - } - }; - - dialog.onok = function () { - updateBackground(); - editor.fireEvent('saveScene'); - }; - dialog.oncancel = function () { - editor.execCommand('background', backupStyle); - }; - -})(); \ No newline at end of file diff --git a/public/ueditor/dialogs/background/images/bg.png b/public/ueditor/dialogs/background/images/bg.png deleted file mode 100644 index 580be0a01dff4c70c72f78a3f40186660ee8eee0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2810 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'+ this.point.name +': '+ ( Math.round( this.point.percentage*100 ) / 100 ) +' %'; - } - } - } - } - } -]; diff --git a/public/ueditor/dialogs/charts/charts.css b/public/ueditor/dialogs/charts/charts.css deleted file mode 100644 index ac3c764..0000000 --- a/public/ueditor/dialogs/charts/charts.css +++ /dev/null @@ -1,165 +0,0 @@ -html, body { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - overflow-x: hidden; -} - -.main { - width: 100%; - overflow: hidden; -} - -.table-view { - height: 100%; - float: left; - margin: 20px; - width: 40%; -} - -.table-view .table-container { - width: 100%; - margin-bottom: 50px; - overflow: scroll; -} - -.table-view th { - padding: 5px 10px; - background-color: #F7F7F7; -} - -.table-view td { - width: 50px; - text-align: center; - padding:0; -} - -.table-container input { - width: 40px; - padding: 5px; - border: none; - outline: none; -} - -.table-view caption { - font-size: 18px; - text-align: left; -} - -.charts-view { - /*margin-left: 49%!important;*/ - width: 50%; - margin-left: 49%; - height: 400px; -} - -.charts-container { - border-left: 1px solid #c3c3c3; -} - -.charts-format fieldset { - padding-left: 20px; - margin-bottom: 50px; -} - -.charts-format legend { - padding-left: 10px; - padding-right: 10px; -} - -.format-item-container { - padding: 20px; -} - -.format-item-container label { - display: block; - margin: 10px 0; -} - -.charts-format .data-item { - border: 1px solid black; - outline: none; - padding: 2px 3px; -} - -/* 图表类型 */ - -.charts-type { - margin-top: 50px; - height: 300px; -} - -.scroll-view { - border: 1px solid #c3c3c3; - border-left: none; - border-right: none; - overflow: hidden; -} - -.scroll-container { - margin: 20px; - width: 100%; - overflow: hidden; -} - -.scroll-bed { - width: 10000px; - _margin-top: 20px; - -webkit-transition: margin-left .5s ease; - -moz-transition: margin-left .5s ease; - transition: margin-left .5s ease; -} - -.view-box { - display: inline-block; - *display: inline; - *zoom: 1; - margin-right: 20px; - border: 2px solid white; - line-height: 0; - overflow: hidden; - cursor: pointer; -} - -.view-box img { - border: 1px solid #cecece; -} - -.view-box.selected { - border-color: #7274A7; -} - -.button-container { - margin-bottom: 20px; - text-align: center; -} - -.button-container a { - display: inline-block; - width: 100px; - height: 25px; - line-height: 25px; - border: 1px solid #c2ccd1; - margin-right: 30px; - text-decoration: none; - color: black; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} - -.button-container a:HOVER { - background: #fcfcfc; -} - -.button-container a:ACTIVE { - border-top-color: #c2ccd1; - box-shadow:inset 0 5px 4px -4px rgba(49, 49, 64, 0.1); -} - -.edui-charts-not-data { - height: 100px; - line-height: 100px; - text-align: center; -} \ No newline at end of file diff --git a/public/ueditor/dialogs/charts/charts.html b/public/ueditor/dialogs/charts/charts.html deleted file mode 100644 index 70e2314..0000000 --- a/public/ueditor/dialogs/charts/charts.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - chart - - - - - -
    -
    -

    -
    -

    -
    -
    -
    - -
    - - -
    -
    -
    -
    - -
    - - - - -
    -
    -
    - -
    - -

    -
    -
    -
    - -
    - -

    -
    -
    -
    -
    -
    -
    -
    -
    -

    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - - - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/charts/charts.js b/public/ueditor/dialogs/charts/charts.js deleted file mode 100644 index 37344fd..0000000 --- a/public/ueditor/dialogs/charts/charts.js +++ /dev/null @@ -1,519 +0,0 @@ -/* - * 图片转换对话框脚本 - **/ - -var tableData = [], - //编辑器页面table - editorTable = null, - chartsConfig = window.typeConfig, - resizeTimer = null, - //初始默认图表类型 - currentChartType = 0; - -window.onload = function () { - - editorTable = domUtils.findParentByTagName( editor.selection.getRange().startContainer, 'table', true); - - //未找到表格, 显示错误页面 - if ( !editorTable ) { - document.body.innerHTML = "
    未找到数据
    "; - return; - } - - //初始化图表类型选择 - initChartsTypeView(); - renderTable( editorTable ); - initEvent(); - initUserConfig( editorTable.getAttribute( "data-chart" ) ); - $( "#scrollBed .view-box:eq("+ currentChartType +")" ).trigger( "click" ); - updateViewType( currentChartType ); - - dialog.addListener( "resize", function () { - - if ( resizeTimer != null ) { - window.clearTimeout( resizeTimer ); - } - - resizeTimer = window.setTimeout( function () { - - resizeTimer = null; - - renderCharts(); - - }, 500 ); - - } ); - -}; - -function initChartsTypeView () { - - var contents = []; - - for ( var i = 0, len = chartsConfig.length; i
    ' ); - - } - - $( "#scrollBed" ).html( contents.join( "" ) ); - -} - -//渲染table, 以便用户修改数据 -function renderTable ( table ) { - - var tableHtml = []; - - //构造数据 - for ( var i = 0, row; row = table.rows[ i ]; i++ ) { - - tableData[ i ] = []; - tableHtml[ i ] = []; - - for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) { - - var value = getCellValue( cell ); - - if ( i > 0 && j > 0 ) { - value = +value; - } - - if ( i === 0 || j === 0 ) { - tableHtml[ i ].push( ''+ value +'' ); - } else { - tableHtml[ i ].push( '' ); - } - - tableData[ i ][ j ] = value; - - } - - tableHtml[ i ] = tableHtml[ i ].join( "" ); - - } - - //draw 表格 - $( "#tableContainer" ).html( ''+ tableHtml.join( "" ) +'
    ' ); - -} - -/* - * 根据表格已有的图表属性初始化当前图表属性 - */ -function initUserConfig ( config ) { - - var parsedConfig = {}; - - if ( !config ) { - return; - } - - config = config.split( ";" ); - - $.each( config, function ( index, item ) { - - item = item.split( ":" ); - parsedConfig[ item[ 0 ] ] = item[ 1 ]; - - } ); - - setUserConfig( parsedConfig ); - -} - -function initEvent () { - - var cacheValue = null, - //图表类型数 - typeViewCount = chartsConfig.length- 1, - $chartsTypeViewBox = $( '#scrollBed .view-box' ); - - $( ".charts-format" ).delegate( ".format-ctrl", "change", function () { - - renderCharts(); - - } ) - - $( ".table-view" ).delegate( ".data-item", "focus", function () { - - cacheValue = this.value; - - } ).delegate( ".data-item", "blur", function () { - - if ( this.value !== cacheValue ) { - renderCharts(); - } - - cacheValue = null; - - } ); - - $( "#buttonContainer" ).delegate( "a", "click", function (e) { - - e.preventDefault(); - - if ( this.getAttribute( "data-title" ) === 'prev' ) { - - if ( currentChartType > 0 ) { - currentChartType--; - updateViewType( currentChartType ); - } - - } else { - - if ( currentChartType < typeViewCount ) { - currentChartType++; - updateViewType( currentChartType ); - } - - } - - } ); - - //图表类型变化 - $( '#scrollBed' ).delegate( ".view-box", "click", function (e) { - - var index = $( this ).attr( "data-chart-type" ); - $chartsTypeViewBox.removeClass( "selected" ); - $( $chartsTypeViewBox[ index ] ).addClass( "selected" ); - - currentChartType = index | 0; - - //饼图, 禁用部分配置 - if ( currentChartType === chartsConfig.length - 1 ) { - - disableNotPieConfig(); - - //启用完整配置 - } else { - - enableNotPieConfig(); - - } - - renderCharts(); - - } ); - -} - -function renderCharts () { - - var data = collectData(); - - $('#chartsContainer').highcharts( $.extend( {}, chartsConfig[ currentChartType ], { - - credits: { - enabled: false - }, - exporting: { - enabled: false - }, - title: { - text: data.title, - x: -20 //center - }, - subtitle: { - text: data.subTitle, - x: -20 - }, - xAxis: { - title: { - text: data.xTitle - }, - categories: data.categories - }, - yAxis: { - title: { - text: data.yTitle - }, - plotLines: [{ - value: 0, - width: 1, - color: '#808080' - }] - }, - tooltip: { - enabled: true, - valueSuffix: data.suffix - }, - legend: { - layout: 'vertical', - align: 'right', - verticalAlign: 'middle', - borderWidth: 1 - }, - series: data.series - - } )); - -} - -function updateViewType ( index ) { - - $( "#scrollBed" ).css( 'marginLeft', -index*324+'px' ); - -} - -function collectData () { - - var form = document.forms[ 'data-form' ], - data = null; - - if ( currentChartType !== chartsConfig.length - 1 ) { - - data = getSeriesAndCategories(); - $.extend( data, getUserConfig() ); - - //饼图数据格式 - } else { - data = getSeriesForPieChart(); - data.title = form[ 'title' ].value; - data.suffix = form[ 'unit' ].value; - } - - return data; - -} - -/** - * 获取用户配置信息 - */ -function getUserConfig () { - - var form = document.forms[ 'data-form' ], - info = { - title: form[ 'title' ].value, - subTitle: form[ 'sub-title' ].value, - xTitle: form[ 'x-title' ].value, - yTitle: form[ 'y-title' ].value, - suffix: form[ 'unit' ].value, - //数据对齐方式 - tableDataFormat: getTableDataFormat (), - //饼图提示文字 - tip: $( "#tipInput" ).val() - }; - - return info; - -} - -function setUserConfig ( config ) { - - var form = document.forms[ 'data-form' ]; - - config.title && ( form[ 'title' ].value = config.title ); - config.subTitle && ( form[ 'sub-title' ].value = config.subTitle ); - config.xTitle && ( form[ 'x-title' ].value = config.xTitle ); - config.yTitle && ( form[ 'y-title' ].value = config.yTitle ); - config.suffix && ( form[ 'unit' ].value = config.suffix ); - config.dataFormat == "-1" && ( form[ 'charts-format' ][ 1 ].checked = true ); - config.tip && ( form[ 'tip' ].value = config.tip ); - currentChartType = config.chartType || 0; - -} - -function getSeriesAndCategories () { - - var form = document.forms[ 'data-form' ], - series = [], - categories = [], - tmp = [], - tableData = getTableData(); - - //反转数据 - if ( getTableDataFormat() === "-1" ) { - - for ( var i = 0, len = tableData.length; i < len; i++ ) { - - for ( var j = 0, jlen = tableData[ i ].length; j < jlen; j++ ) { - - if ( !tmp[ j ] ) { - tmp[ j ] = []; - } - - tmp[ j ][ i ] = tableData[ i ][ j ]; - - } - - } - - tableData = tmp; - - } - - categories = tableData[0].slice( 1 ); - - for ( var i = 1, data; data = tableData[ i ]; i++ ) { - - series.push( { - name: data[ 0 ], - data: data.slice( 1 ) - } ); - - } - - return { - series: series, - categories: categories - }; - -} - -/* - * 获取数据源数据对齐方式 - */ -function getTableDataFormat () { - - var form = document.forms[ 'data-form' ], - items = form['charts-format']; - - return items[ 0 ].checked ? items[ 0 ].value : items[ 1 ].value; - -} - -/* - * 禁用非饼图类型的配置项 - */ -function disableNotPieConfig() { - - updateConfigItem( 'disable' ); - -} - -/* - * 启用非饼图类型的配置项 - */ -function enableNotPieConfig() { - - updateConfigItem( 'enable' ); - -} - -function updateConfigItem ( value ) { - - var table = $( "#showTable" )[ 0 ], - isDisable = value === 'disable' ? true : false; - - //table中的input处理 - for ( var i = 2 , row; row = table.rows[ i ]; i++ ) { - - for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { - - $( "input", cell ).attr( "disabled", isDisable ); - - } - - } - - //其他项处理 - $( "input.not-pie-item" ).attr( "disabled", isDisable ); - $( "#tipInput" ).attr( "disabled", !isDisable ) - -} - -/* - * 获取饼图数据 - * 饼图的数据只取第一行的 - **/ -function getSeriesForPieChart () { - - var series = { - type: 'pie', - name: $("#tipInput").val(), - data: [] - }, - tableData = getTableData(); - - - for ( var j = 1, jlen = tableData[ 0 ].length; j < jlen; j++ ) { - - var title = tableData[ 0 ][ j ], - val = tableData[ 1 ][ j ]; - - series.data.push( [ title, val ] ); - - } - - return { - series: [ series ] - }; - -} - -function getTableData () { - - var table = document.getElementById( "showTable" ), - xCount = table.rows[0].cells.length - 1, - values = getTableInputValue(); - - for ( var i = 0, value; value = values[ i ]; i++ ) { - - tableData[ Math.floor( i / xCount ) + 1 ][ i % xCount + 1 ] = values[ i ]; - - } - - return tableData; - -} - -function getTableInputValue () { - - var table = document.getElementById( "showTable" ), - inputs = table.getElementsByTagName( "input" ), - values = []; - - for ( var i = 0, input; input = inputs[ i ]; i++ ) { - values.push( input.value | 0 ); - } - - return values; - -} - -function getCellValue ( cell ) { - - var value = utils.trim( ( cell.innerText || cell.textContent || '' ) ); - - return value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\s+|\s+$/g, '' ); - -} - - -//dialog确认事件 -dialog.onok = function () { - - //收集信息 - var form = document.forms[ 'data-form' ], - info = getUserConfig(); - - //添加图表类型 - info.chartType = currentChartType; - - //同步表格数据到编辑器 - syncTableData(); - - //执行图表命令 - editor.execCommand( 'charts', info ); - -}; - -/* - * 同步图表编辑视图的表格数据到编辑器里的原始表格 - */ -function syncTableData () { - - var tableData = getTableData(); - - for ( var i = 1, row; row = editorTable.rows[ i ]; i++ ) { - - for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { - - cell.innerHTML = tableData[ i ] [ j ]; - - } - - } - -} \ No newline at end of file diff --git a/public/ueditor/dialogs/charts/images/charts0.png b/public/ueditor/dialogs/charts/images/charts0.png deleted file mode 100644 index 9485e5ed8f83888e782eafae6f7505c79671a985..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25306 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 diff --git a/public/ueditor/dialogs/charts/images/charts2.png b/public/ueditor/dialogs/charts/images/charts2.png deleted file mode 100644 index 7c91a39ffac43e0867bec1df89b73e10e0b28c43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23016 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 PFatGZEv0+~v#0+BCDM7e diff --git a/public/ueditor/dialogs/charts/images/charts4.png b/public/ueditor/dialogs/charts/images/charts4.png deleted file mode 100644 index 742006adc9cee3c07b1a390da6991a84d1da99d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8344 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 diff --git a/public/ueditor/dialogs/charts/images/charts5.png b/public/ueditor/dialogs/charts/images/charts5.png deleted file mode 100644 index c49a29609d8e8f9bdf101e91021d40c1cb3d4175..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47084 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'*4h4^s0#X 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 g*Z&=uhxp - - - - - - - - - -
    -
    - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    - - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/emotion/emotion.js b/public/ueditor/dialogs/emotion/emotion.js deleted file mode 100644 index 6e158a9..0000000 --- a/public/ueditor/dialogs/emotion/emotion.js +++ /dev/null @@ -1,186 +0,0 @@ -window.onload = function () { - editor.setOpt({ - emotionLocalization:false - }); - - emotion.SmileyPath = editor.options.emotionLocalization === true ? 'images/' : "http://img.baidu.com/hi/"; - emotion.SmileyBox = createTabList( emotion.tabNum ); - emotion.tabExist = createArr( emotion.tabNum ); - - initImgName(); - initEvtHandler( "tabHeads" ); -}; - -function initImgName() { - for ( var pro in emotion.SmilmgName ) { - var tempName = emotion.SmilmgName[pro], - tempBox = emotion.SmileyBox[pro], - tempStr = ""; - - if ( tempBox.length ) return; - for ( var i = 1; i <= tempName[1]; i++ ) { - tempStr = tempName[0]; - if ( i < 10 ) tempStr = tempStr + '0'; - tempStr = tempStr + i + '.gif'; - tempBox.push( tempStr ); - } - } -} - -function initEvtHandler( conId ) { - var tabHeads = $G( conId ); - for ( var i = 0, j = 0; i < tabHeads.childNodes.length; i++ ) { - var tabObj = tabHeads.childNodes[i]; - if ( tabObj.nodeType == 1 ) { - domUtils.on( tabObj, "click", (function ( index ) { - return function () { - switchTab( index ); - }; - })( j ) ); - j++; - } - } - switchTab( 0 ); - $G( "tabIconReview" ).style.display = 'none'; -} - -function InsertSmiley( url, evt ) { - var obj = { - src:editor.options.emotionLocalization ? editor.options.UEDITOR_HOME_URL + "dialogs/emotion/" + url : url - }; - obj._src = obj.src; - editor.execCommand( 'insertimage', obj ); - if ( !evt.ctrlKey ) { - dialog.popup.hide(); - } -} - -function switchTab( index ) { - - autoHeight( index ); - if ( emotion.tabExist[index] == 0 ) { - emotion.tabExist[index] = 1; - createTab( 'tab' + index ); - } - //获取呈现元素句柄数组 - var tabHeads = $G( "tabHeads" ).getElementsByTagName( "span" ), - tabBodys = $G( "tabBodys" ).getElementsByTagName( "div" ), - i = 0, L = tabHeads.length; - //隐藏所有呈现元素 - for ( ; i < L; i++ ) { - tabHeads[i].className = ""; - tabBodys[i].style.display = "none"; - } - //显示对应呈现元素 - tabHeads[index].className = "focus"; - tabBodys[index].style.display = "block"; -} - -function autoHeight( index ) { - var iframe = dialog.getDom( "iframe" ), - parent = iframe.parentNode.parentNode; - switch ( index ) { - case 0: - iframe.style.height = "380px"; - parent.style.height = "392px"; - break; - case 1: - iframe.style.height = "220px"; - parent.style.height = "232px"; - break; - case 2: - iframe.style.height = "260px"; - parent.style.height = "272px"; - break; - case 3: - iframe.style.height = "300px"; - parent.style.height = "312px"; - break; - case 4: - iframe.style.height = "140px"; - parent.style.height = "152px"; - break; - case 5: - iframe.style.height = "260px"; - parent.style.height = "272px"; - break; - case 6: - iframe.style.height = "230px"; - parent.style.height = "242px"; - break; - default: - - } -} - - -function createTab( tabName ) { - var faceVersion = "?v=1.1", //版本号 - tab = $G( tabName ), //获取将要生成的Div句柄 - imagePath = emotion.SmileyPath + emotion.imageFolders[tabName], //获取显示表情和预览表情的路径 - positionLine = 11 / 2, //中间数 - iWidth = iHeight = 35, //图片长宽 - iColWidth = 3, //表格剩余空间的显示比例 - tableCss = emotion.imageCss[tabName], - cssOffset = emotion.imageCssOffset[tabName], - textHTML = [''], - i = 0, imgNum = emotion.SmileyBox[tabName].length, imgColNum = 11, faceImage, - sUrl, realUrl, posflag, offset, infor; - - for ( ; i < imgNum; ) { - textHTML.push( '' ); - for ( var j = 0; j < imgColNum; j++, i++ ) { - faceImage = emotion.SmileyBox[tabName][i]; - if ( faceImage ) { - sUrl = imagePath + faceImage + faceVersion; - realUrl = imagePath + faceImage; - posflag = j < positionLine ? 0 : 1; - offset = cssOffset * i * (-1) - 1; - infor = emotion.SmileyInfor[tabName][i]; - - textHTML.push( '' ); - } - textHTML.push( '' ); - } - textHTML.push( '
    ' ); - textHTML.push( '' ); - textHTML.push( '' ); - textHTML.push( '' ); - } else { - textHTML.push( '' ); - } - textHTML.push( '
    ' ); - textHTML = textHTML.join( "" ); - tab.innerHTML = textHTML; -} - -function over( td, srcPath, posFlag ) { - td.style.backgroundColor = "#ACCD3C"; - $G( 'faceReview' ).style.backgroundImage = "url(" + srcPath + ")"; - if ( posFlag == 1 ) $G( "tabIconReview" ).className = "show"; - $G( "tabIconReview" ).style.display = 'block'; -} - -function out( td ) { - td.style.backgroundColor = "transparent"; - var tabIconRevew = $G( "tabIconReview" ); - tabIconRevew.className = ""; - tabIconRevew.style.display = 'none'; -} - -function createTabList( tabNum ) { - var obj = {}; - for ( var i = 0; i < tabNum; i++ ) { - obj["tab" + i] = []; - } - return obj; -} - -function createArr( tabNum ) { - var arr = []; - for ( var i = 0; i < tabNum; i++ ) { - arr[i] = 0; - } - return arr; -} - diff --git a/public/ueditor/dialogs/emotion/images/0.gif b/public/ueditor/dialogs/emotion/images/0.gif deleted file mode 100644 index 6964168b947afc2cf76780a85f43d4f77c257b77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 qcmZ?wbhEHbWMp7uXkcLY4+e@qSs2-Y0y+#p0Fq%~V)9{Rum%7ZDGCMv diff --git a/public/ueditor/dialogs/emotion/images/bface.gif b/public/ueditor/dialogs/emotion/images/bface.gif deleted file mode 100644 index 14fe618ab58a9d46fee90074386b5581d47b92c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27167 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 diff --git a/public/ueditor/dialogs/emotion/images/cface.gif b/public/ueditor/dialogs/emotion/images/cface.gif deleted file mode 100644 index bff947f5216a49d8cd7fdd8d4e825808b3d14f6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8603 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 diff --git a/public/ueditor/dialogs/emotion/images/fface.gif b/public/ueditor/dialogs/emotion/images/fface.gif deleted file mode 100644 index 0d8a6afeb1cb2cc40c5d76f90630d8a9c1323ffe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18479 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 Z1*(9jYzjdPQwkU=rV+{lAZZd106V&Waa;fZ diff --git a/public/ueditor/dialogs/emotion/images/jxface2.gif b/public/ueditor/dialogs/emotion/images/jxface2.gif deleted file mode 100644 index a959c90f7eb17adc455982b040244fd583eed888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40706 zcmW)ncRUr2_y6y{mwR!!cE-K-cFk<}+T+T#ciE#TBFV^Iwz5M>W=7Gq%Bt?QvWg@m z6;jcgB9!L+eZIf*IDeh?QIMUgJc1z$R8ZQ|Kfb_r_e{Z9w5lq*XQcc z9jVL6+Z7d@0e-Xx^soxJ!g&+_IKmeR_|x)cG)v5|>2%*>(b9OMU6b@q|En{{Mc>Fd zmAqBv=v4OHAng6n6B89pNx4*7QZPUF^6&SRMFNih3@mB5qAAnw?U?%>hx72^!5P}kmX;QMmWJ{1@n2Fw;g#Vtu4MMN(f#!H zXB|_tz)fkBO&l>)6C=DtUUmnTxRQsRw8{4rwUKskKS!E-V3Yyezf=Q#gm%1l#kzM{%aVio9lmP6|zV{ z1>aIGIoEb=%4a$p@b5!lSs=M}SM$_elk9Q7Pd`3|-f`NRs_Yo;XG}(LcK#b)n`mro zc=hFtX1?5;H*e0de0q9%6fTQ6HAO7|U>CR{?Y22qj_J`i2Al)bFf* z%b&fIpP%>d!Fx0s&A40oHE-%GXT_*Sd2V;IxFfr8y!=A<*=c$|4u|{jZRFn({oDOu z#lT}ad9r9O{_DX;*uC7&U-eFzj_4dp{K1_Vu`H_*4oEL+fHy*QC6WZWL|i`n(4p{rUnS@N2ks{X2mo*ZYX7H%|I-8j!2$f`lCWd0 zvV0`lMg5P?;n>>$E)UW-3x-P+LCQwaoA`QjV=E)8jn#r|i*#|G^Zs^wa2wvPaGw1i zRzZ`c|2z}bx~8PnFkb`9*h_IWC$h}5OD{c%@NR2JY+qGNn#aMVyArt$KLv>b&D^dC z3vE&?F;Kv^JG`a$R>JLKw!=nNx#hDQ&gj%jE?s+kXuubtR5(7Hy|`URc$!jY>Ab7MVNQ;8V&Gr&(FwV2RfwG{=fYoxhVN(QR05?( z?8A)q?$mD3!vWocD)5;OTjRS1;l}^2=+6ob{5j;a?pn!wg?HWzd!kWI6kJFR=CQJ( z{M;$N8pRux08KXfxhmodidzj3OFXzwrZ)?@JECT}KAut+&;2y(tZudegrgVgZV{Zf z>lQU~)i->v!UBS5Tn=TxsmuT7wM#6e&>kK{CsS%|;A`~*`b95+4NH_YZ^MTZc18)e zi9Pdro)uzofLn3h7ZOJCL2Q_!gH?ik#C7Du_n&U1{A-yr&sJ#NtjpJ5Zmx}-yY|VO zE)|MxkVJGi`dT%VTusmDbgzcbBp5oP(r64{F|QVWef%Q&>E}*h6I=nXsecH5%kzg^-JTi#qgd&_tt%giqOt#R5{gEGDy*K*`I}~d zM3FT!<=1Zsy}t_GF*E2?@%s>y_W>hfmu9U3bj|ijqU777R4(R{-Em*3NbUz?QvAA( zMg|#Nd0SfvtCkKPDmPDzdtFCc-kyn$O;+#1i`^qC+)ikOZ%qeB!v_#+2Jqj{Pn%ki z=_mbA1535K7FvKRPn03}*DM`VJ{XhqW2eVaT|8s*G|2)zfL41(l!yj+mr5gW>0`>^ z@!a#~_4siakxLdv-$&cytqZ}!2r#q}%2w<>O9)sBM4>DwJo-3!X~A)b@)4@)ZtN-G zA0Xh5Vh>Lu@GOXb2=-TT81LSSnpwg=;#?=Nd6b-dxwT)wT&@*izufVJ6a|U≶_= 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 diff --git a/public/ueditor/dialogs/emotion/images/neweditor-tab-bg.png b/public/ueditor/dialogs/emotion/images/neweditor-tab-bg.png deleted file mode 100644 index 8f398b0958cdc5136a23b9745becc23a833aa325..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^96&72!3HGF`uUCmDVAa<&kznEsNqQI0P;BtJR*x3 z7^L@rFypT63w8qqANLt@XPdKI8X22WQ%mvv4FO#q2N BK}7%n diff --git a/public/ueditor/dialogs/emotion/images/tface.gif b/public/ueditor/dialogs/emotion/images/tface.gif deleted file mode 100644 index 1354f54b961211fb0253ccbd27a81da5dab5a639..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19805 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
    Q#B)e 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℞!!p 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 Yl`jGz%R9~u(Lcw{+`;~ZL;$@14{R%g2><{9 diff --git a/public/ueditor/dialogs/gmap/gmap.html b/public/ueditor/dialogs/gmap/gmap.html deleted file mode 100644 index c4cbfe6..0000000 --- a/public/ueditor/dialogs/gmap/gmap.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - -
    - - - - - - -
    -
    -
    - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/help/help.css b/public/ueditor/dialogs/help/help.css deleted file mode 100644 index 4478475..0000000 --- a/public/ueditor/dialogs/help/help.css +++ /dev/null @@ -1,7 +0,0 @@ -.wrapper{width: 370px;margin: 10px auto;zoom: 1;} -.tabbody{height: 360px;} -.tabbody .panel{width:100%;height: 360px;position: absolute;background: #fff;} -.tabbody .panel h1{font-size:26px;margin: 5px 0 0 5px;} -.tabbody .panel p{font-size:12px;margin: 5px 0 0 5px;} -.tabbody table{width:90%;line-height: 20px;margin: 5px 0 0 5px;;} -.tabbody table thead{font-weight: bold;line-height: 25px;} \ No newline at end of file diff --git a/public/ueditor/dialogs/help/help.html b/public/ueditor/dialogs/help/help.html deleted file mode 100644 index 9e50060..0000000 --- a/public/ueditor/dialogs/help/help.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - 帮助 - - - - - -
    -
    - - -
    -
    -
    -

    UEditor

    -

    -

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ctrl+b
    ctrl+c
    ctrl+x
    ctrl+v
    ctrl+y
    ctrl+z
    ctrl+i
    ctrl+u
    ctrl+a
    shift+enter
    alt+z
    -
    -
    -
    - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/help/help.js b/public/ueditor/dialogs/help/help.js deleted file mode 100644 index 9a2272e..0000000 --- a/public/ueditor/dialogs/help/help.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Created with JetBrains PhpStorm. - * User: xuheng - * Date: 12-9-26 - * Time: 下午1:06 - * To change this template use File | Settings | File Templates. - */ -/** - * tab点击处理事件 - * @param tabHeads - * @param tabBodys - * @param obj - */ -function clickHandler( tabHeads,tabBodys,obj ) { - //head样式更改 - for ( var k = 0, len = tabHeads.length; k < len; k++ ) { - tabHeads[k].className = ""; - } - obj.className = "focus"; - //body显隐 - var tabSrc = obj.getAttribute( "tabSrc" ); - for ( var j = 0, length = tabBodys.length; j < length; j++ ) { - var body = tabBodys[j], - id = body.getAttribute( "id" ); - body.onclick = function(){ - this.style.zoom = 1; - }; - if ( id != tabSrc ) { - body.style.zIndex = 1; - } else { - body.style.zIndex = 200; - } - } - -} - -/** - * TAB切换 - * @param tabParentId tab的父节点ID或者对象本身 - */ -function switchTab( tabParentId ) { - var tabElements = $G( tabParentId ).children, - tabHeads = tabElements[0].children, - tabBodys = tabElements[1].children; - - for ( var i = 0, length = tabHeads.length; i < length; i++ ) { - var head = tabHeads[i]; - if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head ); - head.onclick = function () { - clickHandler(tabHeads,tabBodys,this); - } - } -} -switchTab("helptab"); - -document.getElementById('version').innerHTML = parent.UE.version; \ No newline at end of file diff --git a/public/ueditor/dialogs/image/image.css b/public/ueditor/dialogs/image/image.css deleted file mode 100644 index 52c2295..0000000 --- a/public/ueditor/dialogs/image/image.css +++ /dev/null @@ -1,894 +0,0 @@ -@charset "utf-8"; -/* dialog样式 */ -.wrapper { - zoom: 1; - width: 630px; - *width: 626px; - height: 380px; - margin: 0 auto; - padding: 10px; - position: relative; - font-family: sans-serif; -} - -/*tab样式框大小*/ -.tabhead { - float:left; -} -.tabbody { - width: 100%; - height: 346px; - position: relative; - clear: both; -} - -.tabbody .panel { - position: absolute; - width: 0; - height: 0; - background: #fff; - overflow: hidden; - display: none; -} - -.tabbody .panel.focus { - width: 100%; - height: 346px; - display: block; -} - -/* 图片对齐方式 */ -.alignBar{ - float:right; - margin-top: 5px; - position: relative; -} - -.alignBar .algnLabel{ - float:left; - height: 20px; - line-height: 20px; -} - -.alignBar #alignIcon{ - zoom:1; - _display: inline; - display: inline-block; - position: relative; -} -.alignBar #alignIcon span{ - float: left; - cursor: pointer; - display: block; - width: 19px; - height: 17px; - margin-right: 3px; - margin-left: 3px; - background-image: url(./images/alignicon.jpg); -} -.alignBar #alignIcon .none-align{ - background-position: 0 -18px; -} -.alignBar #alignIcon .left-align{ - background-position: -20px -18px; -} -.alignBar #alignIcon .right-align{ - background-position: -40px -18px; -} -.alignBar #alignIcon .center-align{ - background-position: -60px -18px; -} -.alignBar #alignIcon .none-align.focus{ - background-position: 0 0; -} -.alignBar #alignIcon .left-align.focus{ - background-position: -20px 0; -} -.alignBar #alignIcon .right-align.focus{ - background-position: -40px 0; -} -.alignBar #alignIcon .center-align.focus{ - background-position: -60px 0; -} - - - - -/* 远程图片样式 */ -#remote { - z-index: 200; -} - -#remote .top{ - width: 100%; - margin-top: 25px; -} -#remote .left{ - display: block; - float: left; - width: 300px; - height:10px; -} -#remote .right{ - display: block; - float: right; - width: 300px; - height:10px; -} -#remote .row{ - margin-left: 20px; - clear: both; - height: 40px; -} - -#remote .row label{ - text-align: center; - width: 50px; - zoom:1; - _display: inline; - display:inline-block; - vertical-align: middle; -} -#remote .row label.algnLabel{ - float: left; - -} - -#remote input.text{ - width: 150px; - padding: 3px 6px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -#remote input.text:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); -} -#remote #url{ - width: 500px; - margin-bottom: 2px; -} -#remote #width, -#remote #height{ - width: 20px; - margin-left: 2px; - margin-right: 2px; -} -#remote #border, -#remote #vhSpace, -#remote #title{ - width: 180px; - margin-right: 5px; -} -#remote #lock{ -} -#remote #lockicon{ - zoom: 1; - _display:inline; - display: inline-block; - width: 20px; - height: 20px; - background: url("../../themes/default/images/lock.gif") -13px -13px no-repeat; - vertical-align: middle; -} -#remote #preview{ - clear: both; - width: 260px; - height: 240px; - z-index: 9999; - margin-top: 10px; - background-color: #eee; - overflow: hidden; -} - -/* 上传图片 */ -.tabbody #upload.panel { - width: 0; - height: 0; - overflow: hidden; - position: absolute !important; - clip: rect(1px, 1px, 1px, 1px); - background: #fff; - display: block; -} - -.tabbody #upload.panel.focus { - width: 100%; - height: 346px; - display: block; - clip: auto; -} - -#upload .queueList { - margin: 0; - width: 100%; - height: 100%; - position: absolute; - overflow: hidden; -} - -#upload p { - margin: 0; -} - -.element-invisible { - width: 0 !important; - height: 0 !important; - border: 0; - padding: 0; - margin: 0; - overflow: hidden; - position: absolute !important; - clip: rect(1px, 1px, 1px, 1px); -} - -#upload .placeholder { - margin: 10px; - border: 2px dashed #e6e6e6; - *border: 0px dashed #e6e6e6; - height: 172px; - padding-top: 150px; - text-align: center; - background: url(./images/image.png) center 70px no-repeat; - color: #cccccc; - font-size: 18px; - position: relative; - top:0; - *top: 10px; -} - -#upload .placeholder .webuploader-pick { - font-size: 18px; - background: #00b7ee; - border-radius: 3px; - line-height: 44px; - padding: 0 30px; - *width: 120px; - color: #fff; - display: inline-block; - margin: 0 auto 20px auto; - cursor: pointer; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); -} - -#upload .placeholder .webuploader-pick-hover { - background: #00a2d4; -} - - -#filePickerContainer { - text-align: center; -} - -#upload .placeholder .flashTip { - color: #666666; - font-size: 12px; - position: absolute; - width: 100%; - text-align: center; - bottom: 20px; -} - -#upload .placeholder .flashTip a { - color: #0785d1; - text-decoration: none; -} - -#upload .placeholder .flashTip a:hover { - text-decoration: underline; -} - -#upload .placeholder.webuploader-dnd-over { - border-color: #999999; -} - -#upload .filelist { - list-style: none; - margin: 0; - padding: 0; - overflow-x: hidden; - overflow-y: auto; - position: relative; - height: 300px; -} - -#upload .filelist:after { - content: ''; - display: block; - width: 0; - height: 0; - overflow: hidden; - clear: both; - position: relative; -} - -#upload .filelist li { - width: 113px; - height: 113px; - background: url(./images/bg.png); - text-align: center; - margin: 9px 0 0 9px; - *margin: 6px 0 0 6px; - position: relative; - display: block; - float: left; - overflow: hidden; - font-size: 12px; -} - -#upload .filelist li p.log { - position: relative; - top: -45px; -} - -#upload .filelist li p.title { - position: absolute; - top: 0; - left: 0; - width: 100%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - top: 5px; - text-indent: 5px; - text-align: left; -} - -#upload .filelist li p.progress { - position: absolute; - width: 100%; - bottom: 0; - left: 0; - height: 8px; - overflow: hidden; - z-index: 50; - margin: 0; - border-radius: 0; - background: none; - -webkit-box-shadow: 0 0 0; -} - -#upload .filelist li p.progress span { - display: none; - overflow: hidden; - width: 0; - height: 100%; - background: #1483d8 url(./images/progress.png) repeat-x; - - -webit-transition: width 200ms linear; - -moz-transition: width 200ms linear; - -o-transition: width 200ms linear; - -ms-transition: width 200ms linear; - transition: width 200ms linear; - - -webkit-animation: progressmove 2s linear infinite; - -moz-animation: progressmove 2s linear infinite; - -o-animation: progressmove 2s linear infinite; - -ms-animation: progressmove 2s linear infinite; - animation: progressmove 2s linear infinite; - - -webkit-transform: translateZ(0); -} - -@-webkit-keyframes progressmove { - 0% { - background-position: 0 0; - } - 100% { - background-position: 17px 0; - } -} - -@-moz-keyframes progressmove { - 0% { - background-position: 0 0; - } - 100% { - background-position: 17px 0; - } -} - -@keyframes progressmove { - 0% { - background-position: 0 0; - } - 100% { - background-position: 17px 0; - } -} - -#upload .filelist li p.imgWrap { - position: relative; - z-index: 2; - line-height: 113px; - vertical-align: middle; - overflow: hidden; - width: 113px; - height: 113px; - - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; - -o-transform-origin: 50% 50%; - -ms-transform-origin: 50% 50%; - transform-origin: 50% 50%; - - -webit-transition: 200ms ease-out; - -moz-transition: 200ms ease-out; - -o-transition: 200ms ease-out; - -ms-transition: 200ms ease-out; - transition: 200ms ease-out; -} - -#upload .filelist li img { - width: 100%; -} - -#upload .filelist li p.error { - background: #f43838; - color: #fff; - position: absolute; - bottom: 0; - left: 0; - height: 28px; - line-height: 28px; - width: 100%; - z-index: 100; - display:none; -} - -#upload .filelist li .success { - display: block; - position: absolute; - left: 0; - bottom: 0; - height: 40px; - width: 100%; - z-index: 200; - background: url(./images/success.png) no-repeat right bottom; - background: url(./images/success.gif) no-repeat right bottom \9; -} - -#upload .filelist li.filePickerBlock { - width: 113px; - height: 113px; - background: url(./images/image.png) no-repeat center 12px; - border: 1px solid #eeeeee; - border-radius: 0; -} -#upload .filelist li.filePickerBlock div.webuploader-pick { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - opacity: 0; - background: none; - font-size: 0; -} - -#upload .filelist div.file-panel { - position: absolute; - height: 0; - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#80000000', endColorstr='#80000000') \0; - background: rgba(0, 0, 0, 0.5); - width: 100%; - top: 0; - left: 0; - overflow: hidden; - z-index: 300; -} - -#upload .filelist div.file-panel span { - width: 24px; - height: 24px; - display: inline; - float: right; - text-indent: -9999px; - overflow: hidden; - background: url(./images/icons.png) no-repeat; - background: url(./images/icons.gif) no-repeat \9; - margin: 5px 1px 1px; - cursor: pointer; - -webkit-tap-highlight-color: rgba(0,0,0,0); - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -#upload .filelist div.file-panel span.rotateLeft { - display:none; - background-position: 0 -24px; -} - -#upload .filelist div.file-panel span.rotateLeft:hover { - background-position: 0 0; -} - -#upload .filelist div.file-panel span.rotateRight { - display:none; - background-position: -24px -24px; -} - -#upload .filelist div.file-panel span.rotateRight:hover { - background-position: -24px 0; -} - -#upload .filelist div.file-panel span.cancel { - background-position: -48px -24px; -} - -#upload .filelist div.file-panel span.cancel:hover { - background-position: -48px 0; -} - -#upload .statusBar { - height: 45px; - border-bottom: 1px solid #dadada; - margin: 0 10px; - padding: 0; - line-height: 45px; - vertical-align: middle; - position: relative; -} - -#upload .statusBar .progress { - border: 1px solid #1483d8; - width: 198px; - background: #fff; - height: 18px; - position: absolute; - top: 12px; - display: none; - text-align: center; - line-height: 18px; - color: #6dbfff; - margin: 0 10px 0 0; -} -#upload .statusBar .progress span.percentage { - width: 0; - height: 100%; - left: 0; - top: 0; - background: #1483d8; - position: absolute; -} -#upload .statusBar .progress span.text { - position: relative; - z-index: 10; -} - -#upload .statusBar .info { - display: inline-block; - font-size: 14px; - color: #666666; -} - -#upload .statusBar .btns { - position: absolute; - top: 7px; - right: 0; - line-height: 30px; -} - -#filePickerBtn { - display: inline-block; - float: left; -} -#upload .statusBar .btns .webuploader-pick, -#upload .statusBar .btns .uploadBtn, -#upload .statusBar .btns .uploadBtn.state-uploading, -#upload .statusBar .btns .uploadBtn.state-paused { - background: #ffffff; - border: 1px solid #cfcfcf; - color: #565656; - padding: 0 18px; - display: inline-block; - border-radius: 3px; - margin-left: 10px; - cursor: pointer; - font-size: 14px; - float: left; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -#upload .statusBar .btns .webuploader-pick-hover, -#upload .statusBar .btns .uploadBtn:hover, -#upload .statusBar .btns .uploadBtn.state-uploading:hover, -#upload .statusBar .btns .uploadBtn.state-paused:hover { - background: #f0f0f0; -} - -#upload .statusBar .btns .uploadBtn, -#upload .statusBar .btns .uploadBtn.state-paused{ - background: #00b7ee; - color: #fff; - border-color: transparent; -} -#upload .statusBar .btns .uploadBtn:hover, -#upload .statusBar .btns .uploadBtn.state-paused:hover{ - background: #00a2d4; -} - -#upload .statusBar .btns .uploadBtn.disabled { - pointer-events: none; - filter:alpha(opacity=60); - -moz-opacity:0.6; - -khtml-opacity: 0.6; - opacity: 0.6; -} - - - -/* 图片管理样式 */ -#online { - width: 100%; - height: 336px; - padding: 10px 0 0 0; -} -#online #imageList{ - width: 100%; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - position: relative; -} -#online ul { - display: block; - list-style: none; - margin: 0; - padding: 0; -} -#online li { - float: left; - display: block; - list-style: none; - padding: 0; - width: 113px; - height: 113px; - margin: 0 0 9px 9px; - *margin: 0 0 6px 6px; - background-color: #eee; - overflow: hidden; - cursor: pointer; - position: relative; -} -#online li.clearFloat { - float: none; - clear: both; - display: block; - width:0; - height:0; - margin: 0; - padding: 0; -} -#online li img { - cursor: pointer; -} -#online li .icon { - cursor: pointer; - width: 113px; - height: 113px; - position: absolute; - top: 0; - left: 0; - z-index: 2; - border: 0; - background-repeat: no-repeat; -} -#online li .icon:hover { - width: 107px; - height: 107px; - border: 3px solid #1094fa; -} -#online li.selected .icon { - background-image: url(images/success.png); - background-image: url(images/success.gif)\9; - background-position: 75px 75px; -} -#online li.selected .icon:hover { - width: 107px; - height: 107px; - border: 3px solid #1094fa; - background-position: 72px 72px; -} - - -/* 图片搜索样式 */ -#search .searchBar { - width: 100%; - height: 30px; - margin: 10px 0 5px 0; - padding: 0; -} - -#search input.text{ - width: 150px; - padding: 3px 6px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -#search input.text:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); -} -#search input.searchTxt { - margin-left:5px; - padding-left: 5px; - background: #FFF; - width: 300px; - *width: 260px; - height: 21px; - line-height: 21px; - float: left; - dislay: block; -} - -#search .searchType { - width: 65px; - height: 28px; - padding:0; - line-height: 28px; - border: 1px solid #d7d7d7; - border-radius: 0; - vertical-align: top; - margin-left: 5px; - float: left; - dislay: block; -} - -#search #searchBtn, -#search #searchReset { - display: inline-block; - margin-bottom: 0; - margin-right: 5px; - padding: 4px 10px; - font-weight: 400; - text-align: center; - vertical-align: middle; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - font-size: 14px; - border-radius: 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - vertical-align: top; - float: right; -} - -#search #searchBtn { - color: white; - border-color: #285e8e; - background-color: #3b97d7; -} -#search #searchReset { - color: #333; - border-color: #ccc; - background-color: #fff; -} -#search #searchBtn:hover { - background-color: #3276b1; -} -#search #searchReset:hover { - background-color: #eee; -} - -#search .msg { - margin-left: 5px; -} - -#search .searchList{ - width: 100%; - height: 300px; - overflow: hidden; - clear: both; -} -#search .searchList ul{ - margin:0; - padding:0; - list-style:none; - clear: both; - width: 100%; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - zoom: 1; - position: relative; -} - -#search .searchList li { - list-style:none; - float: left; - display: block; - width: 115px; - margin: 5px 10px 5px 20px; - *margin: 5px 10px 5px 15px; - padding:0; - font-size: 12px; - box-shadow: 0 1px 3px rgba(0, 0, 0, .3); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); - position: relative; - vertical-align: top; - text-align: center; - overflow: hidden; - cursor: pointer; - filter: alpha(Opacity=100); - -moz-opacity: 1; - opacity: 1; - border: 2px solid #eee; -} - -#search .searchList li.selected { - filter: alpha(Opacity=40); - -moz-opacity: 0.4; - opacity: 0.4; - border: 2px solid #00a0e9; -} - -#search .searchList li p { - background-color: #eee; - margin: 0; - padding: 0; - position: relative; - width:100%; - height:115px; - overflow: hidden; -} - -#search .searchList li p img { - cursor: pointer; - border: 0; -} - -#search .searchList li a { - color: #999; - border-top: 1px solid #F2F2F2; - background: #FAFAFA; - text-align: center; - display: block; - padding: 0 5px; - width: 105px; - height:32px; - line-height:32px; - white-space:nowrap; - text-overflow:ellipsis; - text-decoration: none; - overflow: hidden; - word-break: break-all; -} - -#search .searchList a:hover { - text-decoration: underline; - color: #333; -} -#search .searchList .clearFloat{ - clear: both; -} \ No newline at end of file diff --git a/public/ueditor/dialogs/image/image.html b/public/ueditor/dialogs/image/image.html deleted file mode 100644 index 08ca022..0000000 --- a/public/ueditor/dialogs/image/image.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - ueditor图片对话框 - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    - - -
    -
    -
    -
    - -   px -   px - -
    -
    - - px -
    -
    - - px -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    - 0% - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
      -
    • -
    -
    -
    - - -
    -
    -
    - - - - -
    -
    - - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/image/image.js b/public/ueditor/dialogs/image/image.js deleted file mode 100644 index 3cff524..0000000 --- a/public/ueditor/dialogs/image/image.js +++ /dev/null @@ -1,1127 +0,0 @@ -/** - * User: Jinqn - * Date: 14-04-08 - * Time: 下午16:34 - * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片 - */ - -(function () { - - var remoteImage, - uploadImage, - onlineImage, - searchImage; - - window.onload = function () { - initTabs(); - initAlign(); - initButtons(); - }; - - /* 初始化tab标签 */ - function initTabs() { - var tabs = $G('tabhead').children; - for (var i = 0; i < tabs.length; i++) { - domUtils.on(tabs[i], "click", function (e) { - var target = e.target || e.srcElement; - setTabFocus(target.getAttribute('data-content-id')); - }); - } - - var img = editor.selection.getRange().getClosedNode(); - if (img && img.tagName && img.tagName.toLowerCase() == 'img') { - setTabFocus('remote'); - } else { - setTabFocus('upload'); - } - } - - /* 初始化tabbody */ - function setTabFocus(id) { - if(!id) return; - var i, bodyId, tabs = $G('tabhead').children; - for (i = 0; i < tabs.length; i++) { - bodyId = tabs[i].getAttribute('data-content-id'); - if (bodyId == id) { - domUtils.addClass(tabs[i], 'focus'); - domUtils.addClass($G(bodyId), 'focus'); - } else { - domUtils.removeClasses(tabs[i], 'focus'); - domUtils.removeClasses($G(bodyId), 'focus'); - } - } - switch (id) { - case 'remote': - remoteImage = remoteImage || new RemoteImage(); - break; - case 'upload': - setAlign(editor.getOpt('imageInsertAlign')); - uploadImage = uploadImage || new UploadImage('queueList'); - break; - case 'online': - setAlign(editor.getOpt('imageManagerInsertAlign')); - onlineImage = onlineImage || new OnlineImage('imageList'); - onlineImage.reset(); - break; - case 'search': - setAlign(editor.getOpt('imageManagerInsertAlign')); - searchImage = searchImage || new SearchImage(); - break; - } - } - - /* 初始化onok事件 */ - function initButtons() { - - dialog.onok = function () { - var remote = false, list = [], id, tabs = $G('tabhead').children; - for (var i = 0; i < tabs.length; i++) { - if (domUtils.hasClass(tabs[i], 'focus')) { - id = tabs[i].getAttribute('data-content-id'); - break; - } - } - - switch (id) { - case 'remote': - list = remoteImage.getInsertList(); - break; - case 'upload': - list = uploadImage.getInsertList(); - var count = uploadImage.getQueueCount(); - if (count) { - $('.info', '#queueList').html('' + '还有2个未上传文件'.replace(/[\d]/, count) + ''); - return false; - } - break; - case 'online': - list = onlineImage.getInsertList(); - break; - case 'search': - list = searchImage.getInsertList(); - remote = true; - break; - } - - if(list) { - editor.execCommand('insertimage', list); - remote && editor.fireEvent("catchRemoteImage"); - } - }; - } - - - /* 初始化对其方式的点击事件 */ - function initAlign(){ - /* 点击align图标 */ - domUtils.on($G("alignIcon"), 'click', function(e){ - var target = e.target || e.srcElement; - if(target.className && target.className.indexOf('-align') != -1) { - setAlign(target.getAttribute('data-align')); - } - }); - } - - /* 设置对齐方式 */ - function setAlign(align){ - align = align || 'none'; - var aligns = $G("alignIcon").children; - for(i = 0; i < aligns.length; i++){ - if(aligns[i].getAttribute('data-align') == align) { - domUtils.addClass(aligns[i], 'focus'); - $G("align").value = aligns[i].getAttribute('data-align'); - } else { - domUtils.removeClasses(aligns[i], 'focus'); - } - } - } - /* 获取对齐方式 */ - function getAlign(){ - var align = $G("align").value || 'none'; - return align == 'none' ? '':align; - } - - - /* 在线图片 */ - function RemoteImage(target) { - this.container = utils.isString(target) ? document.getElementById(target) : target; - this.init(); - } - RemoteImage.prototype = { - init: function () { - this.initContainer(); - this.initEvents(); - }, - initContainer: function () { - this.dom = { - 'url': $G('url'), - 'width': $G('width'), - 'height': $G('height'), - 'border': $G('border'), - 'vhSpace': $G('vhSpace'), - 'title': $G('title'), - 'align': $G('align') - }; - var img = editor.selection.getRange().getClosedNode(); - if (img) { - this.setImage(img); - } - }, - initEvents: function () { - var _this = this, - locker = $G('lock'); - - /* 改变url */ - domUtils.on($G("url"), 'keyup', updatePreview); - domUtils.on($G("border"), 'keyup', updatePreview); - domUtils.on($G("title"), 'keyup', updatePreview); - - domUtils.on($G("width"), 'keyup', function(){ - if(locker.checked) { - var proportion =locker.getAttribute('data-proportion'); - $G('height').value = Math.round(this.value / proportion); - } else { - _this.updateLocker(); - } - updatePreview(); - }); - domUtils.on($G("height"), 'keyup', function(){ - if(locker.checked) { - var proportion =locker.getAttribute('data-proportion'); - $G('width').value = Math.round(this.value * proportion); - } else { - _this.updateLocker(); - } - updatePreview(); - }); - domUtils.on($G("lock"), 'change', function(){ - var proportion = parseInt($G("width").value) /parseInt($G("height").value); - locker.setAttribute('data-proportion', proportion); - }); - - function updatePreview(){ - _this.setPreview(); - } - }, - updateLocker: function(){ - var width = $G('width').value, - height = $G('height').value, - locker = $G('lock'); - if(width && height && width == parseInt(width) && height == parseInt(height)) { - locker.disabled = false; - locker.title = ''; - } else { - locker.checked = false; - locker.disabled = 'disabled'; - locker.title = lang.remoteLockError; - } - }, - setImage: function(img){ - /* 不是正常的图片 */ - if (!img.tagName || img.tagName.toLowerCase() != 'img' && !img.getAttribute("src") || !img.src) return; - - var wordImgFlag = img.getAttribute("word_img"), - src = wordImgFlag ? wordImgFlag.replace("&", "&") : (img.getAttribute('_src') || img.getAttribute("src", 2).replace("&", "&")), - align = editor.queryCommandValue("imageFloat"); - - /* 防止onchange事件循环调用 */ - if (src !== $G("url").value) $G("url").value = src; - if(src) { - /* 设置表单内容 */ - $G("width").value = img.width || ''; - $G("height").value = img.height || ''; - $G("border").value = img.getAttribute("border") || '0'; - $G("vhSpace").value = img.getAttribute("vspace") || '0'; - $G("title").value = img.title || img.alt || ''; - setAlign(align); - this.setPreview(); - this.updateLocker(); - } - }, - getData: function(){ - var data = {}; - for(var k in this.dom){ - data[k] = this.dom[k].value; - } - return data; - }, - setPreview: function(){ - var url = $G('url').value, - ow = $G('width').value, - oh = $G('height').value, - border = $G('border').value, - title = $G('title').value, - preview = $G('preview'), - width, - height; - - width = ((!ow || !oh) ? preview.offsetWidth:Math.min(ow, preview.offsetWidth)); - width = width+(border*2) > preview.offsetWidth ? width:(preview.offsetWidth - (border*2)); - height = (!ow || !oh) ? '':width*oh/ow; - - if(url) { - preview.innerHTML = ''; - } - }, - getInsertList: function () { - var data = this.getData(); - if(data['url']) { - return [{ - src: data['url'], - _src: data['url'], - width: data['width'] || '', - height: data['height'] || '', - border: data['border'] || '', - floatStyle: data['align'] || '', - vspace: data['vhSpace'] || '', - alt: data['title'] || '', - style: "width:" + data['width'] + "px;height:" + data['height'] + "px;" - }]; - } else { - return []; - } - } - }; - - - - /* 上传图片 */ - function UploadImage(target) { - this.$wrap = target.constructor == String ? $('#' + target) : $(target); - this.init(); - } - UploadImage.prototype = { - init: function () { - this.imageList = []; - this.initContainer(); - this.initUploader(); - }, - initContainer: function () { - this.$queue = this.$wrap.find('.filelist'); - }, - /* 初始化容器 */ - initUploader: function () { - var _this = this, - $ = jQuery, // just in case. Make sure it's not an other libaray. - $wrap = _this.$wrap, - // 图片容器 - $queue = $wrap.find('.filelist'), - // 状态栏,包括进度和控制按钮 - $statusBar = $wrap.find('.statusBar'), - // 文件总体选择信息。 - $info = $statusBar.find('.info'), - // 上传按钮 - $upload = $wrap.find('.uploadBtn'), - // 上传按钮 - $filePickerBtn = $wrap.find('.filePickerBtn'), - // 上传按钮 - $filePickerBlock = $wrap.find('.filePickerBlock'), - // 没选择文件之前的内容。 - $placeHolder = $wrap.find('.placeholder'), - // 总体进度条 - $progress = $statusBar.find('.progress').hide(), - // 添加的文件数量 - fileCount = 0, - // 添加的文件总大小 - fileSize = 0, - // 优化retina, 在retina下这个值是2 - ratio = window.devicePixelRatio || 1, - // 缩略图大小 - thumbnailWidth = 113 * ratio, - thumbnailHeight = 113 * ratio, - // 可能有pedding, ready, uploading, confirm, done. - state = '', - // 所有文件的进度信息,key为file id - percentages = {}, - supportTransition = (function () { - var s = document.createElement('p').style, - r = 'transition' in s || - 'WebkitTransition' in s || - 'MozTransition' in s || - 'msTransition' in s || - 'OTransition' in s; - s = null; - return r; - })(), - // WebUploader实例 - uploader, - actionUrl = editor.getActionUrl(editor.getOpt('imageActionName')), - acceptExtensions = (editor.getOpt('imageAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, ''), - imageMaxSize = editor.getOpt('imageMaxSize'), - imageCompressBorder = editor.getOpt('imageCompressBorder'); - - if (!WebUploader.Uploader.support()) { - $('#filePickerReady').after($('
    ').html(lang.errorNotSupport)).hide(); - return; - } else if (!editor.getOpt('imageActionName')) { - $('#filePickerReady').after($('
    ').html(lang.errorLoadConfig)).hide(); - return; - } - - uploader = _this.uploader = WebUploader.create({ - pick: { - id: '#filePickerReady', - label: lang.uploadSelectFile - }, - accept: { - title: 'Images', - extensions: acceptExtensions, - mimeTypes: 'image/*' - }, - swf: '../../third-party/webuploader/Uploader.swf', - server: actionUrl, - fileVal: editor.getOpt('imageFieldName'), - duplicate: true, - fileSingleSizeLimit: imageMaxSize, // 默认 2 M - compress: editor.getOpt('imageCompressEnable') ? { - width: imageCompressBorder, - height: imageCompressBorder, - // 图片质量,只有type为`image/jpeg`的时候才有效。 - quality: 90, - // 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false. - allowMagnify: false, - // 是否允许裁剪。 - crop: false, - // 是否保留头部meta信息。 - preserveHeaders: true - }:false - }); - uploader.addButton({ - id: '#filePickerBlock' - }); - uploader.addButton({ - id: '#filePickerBtn', - label: lang.uploadAddFile - }); - - setState('pedding'); - - // 当有文件添加进来时执行,负责view的创建 - function addFile(file) { - var $li = $('
  • ' + - '

    ' + file.name + '

    ' + - '

    ' + - '

    ' + - '
  • '), - - $btns = $('
    ' + - '' + lang.uploadDelete + '' + - '' + lang.uploadTurnRight + '' + - '' + lang.uploadTurnLeft + '
    ').appendTo($li), - $prgress = $li.find('p.progress span'), - $wrap = $li.find('p.imgWrap'), - $info = $('

    ').hide().appendTo($li), - - showError = function (code) { - switch (code) { - case 'exceed_size': - text = lang.errorExceedSize; - break; - case 'interrupt': - text = lang.errorInterrupt; - break; - case 'http': - text = lang.errorHttp; - break; - case 'not_allow_type': - text = lang.errorFileType; - break; - default: - text = lang.errorUploadRetry; - break; - } - $info.text(text).show(); - }; - - if (file.getStatus() === 'invalid') { - showError(file.statusText); - } else { - $wrap.text(lang.uploadPreview); - if (browser.ie && browser.version <= 7) { - $wrap.text(lang.uploadNoPreview); - } else { - uploader.makeThumb(file, function (error, src) { - if (error || !src) { - $wrap.text(lang.uploadNoPreview); - } else { - var $img = $(''); - $wrap.empty().append($img); - $img.on('error', function () { - $wrap.text(lang.uploadNoPreview); - }); - } - }, thumbnailWidth, thumbnailHeight); - } - percentages[ file.id ] = [ file.size, 0 ]; - file.rotation = 0; - - /* 检查文件格式 */ - if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) { - showError('not_allow_type'); - uploader.removeFile(file); - } - } - - file.on('statuschange', function (cur, prev) { - if (prev === 'progress') { - $prgress.hide().width(0); - } else if (prev === 'queued') { - $li.off('mouseenter mouseleave'); - $btns.remove(); - } - // 成功 - if (cur === 'error' || cur === 'invalid') { - showError(file.statusText); - percentages[ file.id ][ 1 ] = 1; - } else if (cur === 'interrupt') { - showError('interrupt'); - } else if (cur === 'queued') { - percentages[ file.id ][ 1 ] = 0; - } else if (cur === 'progress') { - $info.hide(); - $prgress.css('display', 'block'); - } else if (cur === 'complete') { - } - - $li.removeClass('state-' + prev).addClass('state-' + cur); - }); - - $li.on('mouseenter', function () { - $btns.stop().animate({height: 30}); - }); - $li.on('mouseleave', function () { - $btns.stop().animate({height: 0}); - }); - - $btns.on('click', 'span', function () { - var index = $(this).index(), - deg; - - switch (index) { - case 0: - uploader.removeFile(file); - return; - case 1: - file.rotation += 90; - break; - case 2: - file.rotation -= 90; - break; - } - - if (supportTransition) { - deg = 'rotate(' + file.rotation + 'deg)'; - $wrap.css({ - '-webkit-transform': deg, - '-mos-transform': deg, - '-o-transform': deg, - 'transform': deg - }); - } else { - $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')'); - } - - }); - - $li.insertBefore($filePickerBlock); - } - - // 负责view的销毁 - function removeFile(file) { - var $li = $('#' + file.id); - delete percentages[ file.id ]; - updateTotalProgress(); - $li.off().find('.file-panel').off().end().remove(); - } - - function updateTotalProgress() { - var loaded = 0, - total = 0, - spans = $progress.children(), - percent; - - $.each(percentages, function (k, v) { - total += v[ 0 ]; - loaded += v[ 0 ] * v[ 1 ]; - }); - - percent = total ? loaded / total : 0; - - spans.eq(0).text(Math.round(percent * 100) + '%'); - spans.eq(1).css('width', Math.round(percent * 100) + '%'); - updateStatus(); - } - - function setState(val, files) { - - if (val != state) { - - var stats = uploader.getStats(); - - $upload.removeClass('state-' + state); - $upload.addClass('state-' + val); - - switch (val) { - - /* 未选择文件 */ - case 'pedding': - $queue.addClass('element-invisible'); - $statusBar.addClass('element-invisible'); - $placeHolder.removeClass('element-invisible'); - $progress.hide(); $info.hide(); - uploader.refresh(); - break; - - /* 可以开始上传 */ - case 'ready': - $placeHolder.addClass('element-invisible'); - $queue.removeClass('element-invisible'); - $statusBar.removeClass('element-invisible'); - $progress.hide(); $info.show(); - $upload.text(lang.uploadStart); - uploader.refresh(); - break; - - /* 上传中 */ - case 'uploading': - $progress.show(); $info.hide(); - $upload.text(lang.uploadPause); - break; - - /* 暂停上传 */ - case 'paused': - $progress.show(); $info.hide(); - $upload.text(lang.uploadContinue); - break; - - case 'confirm': - $progress.show(); $info.hide(); - $upload.text(lang.uploadStart); - - stats = uploader.getStats(); - if (stats.successNum && !stats.uploadFailNum) { - setState('finish'); - return; - } - break; - - case 'finish': - $progress.hide(); $info.show(); - if (stats.uploadFailNum) { - $upload.text(lang.uploadRetry); - } else { - $upload.text(lang.uploadStart); - } - break; - } - - state = val; - updateStatus(); - - } - - if (!_this.getQueueCount()) { - $upload.addClass('disabled') - } else { - $upload.removeClass('disabled') - } - - } - - function updateStatus() { - var text = '', stats; - - if (state === 'ready') { - text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize)); - } else if (state === 'confirm') { - stats = uploader.getStats(); - if (stats.uploadFailNum) { - text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum); - } - } else { - stats = uploader.getStats(); - text = lang.updateStatusFinish.replace('_', fileCount). - replace('_KB', WebUploader.formatSize(fileSize)). - replace('_', stats.successNum); - - if (stats.uploadFailNum) { - text += lang.updateStatusError.replace('_', stats.uploadFailNum); - } - } - - $info.html(text); - } - - uploader.on('fileQueued', function (file) { - fileCount++; - fileSize += file.size; - - if (fileCount === 1) { - $placeHolder.addClass('element-invisible'); - $statusBar.show(); - } - - addFile(file); - }); - - uploader.on('fileDequeued', function (file) { - if (file.ext && acceptExtensions.indexOf(file.ext.toLowerCase()) != -1 && file.size <= imageMaxSize) { - fileCount--; - fileSize -= file.size; - } - - removeFile(file); - updateTotalProgress(); - }); - - uploader.on('filesQueued', function (file) { - if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) { - setState('ready'); - } - updateTotalProgress(); - }); - - uploader.on('all', function (type, files) { - switch (type) { - case 'uploadFinished': - setState('confirm', files); - break; - case 'startUpload': - /* 添加额外的GET参数 */ - var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', - url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params); - uploader.option('server', url); - setState('uploading', files); - break; - case 'stopUpload': - setState('paused', files); - break; - } - }); - - uploader.on('uploadBeforeSend', function (file, data, header) { - const token = JSON.parse(localStorage.getItem('IASF_server_token')).value - console.log("🚀 ~ file: image.js:704 ~ token:", token) - header['Authorization'] = token - //这里可以通过data对象添加POST参数 - if (actionUrl.toLowerCase().indexOf('jsp') != -1) { - header['X-Requested-With'] = 'XMLHttpRequest'; - } - }); - - uploader.on('uploadProgress', function (file, percentage) { - var $li = $('#' + file.id), - $percent = $li.find('.progress span'); - - $percent.css('width', percentage * 100 + '%'); - percentages[ file.id ][ 1 ] = percentage; - updateTotalProgress(); - }); - - uploader.on('uploadSuccess', function (file, ret) { - var $file = $('#' + file.id); - try { - var responseText = (ret._raw || ret), - json = utils.str2json(responseText); - if (json.state == 'SUCCESS') { - _this.imageList.push(json); - $file.append(''); - } else { - $file.find('.error').text(json.state).show(); - } - } catch (e) { - $file.find('.error').text(lang.errorServerUpload).show(); - } - }); - - uploader.on('uploadError', function (file, code) { - }); - uploader.on('error', function (code, file) { - if (code == 'Q_TYPE_DENIED' || code == 'F_EXCEED_SIZE') { - addFile(file); - } - }); - uploader.on('uploadComplete', function (file, ret) { - }); - - $upload.on('click', function () { - if ($(this).hasClass('disabled')) { - return false; - } - - if (state === 'ready') { - uploader.upload(); - } else if (state === 'paused') { - uploader.upload(); - } else if (state === 'uploading') { - uploader.stop(); - } - }); - - $upload.addClass('state-' + state); - updateTotalProgress(); - }, - getQueueCount: function () { - var file, i, status, readyFile = 0, files = this.uploader.getFiles(); - for (i = 0; file = files[i++]; ) { - status = file.getStatus(); - if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++; - } - return readyFile; - }, - destroy: function () { - this.$wrap.remove(); - }, - getInsertList: function () { - var i, data, list = [], - align = getAlign(), - prefix = editor.getOpt('imageUrlPrefix'); - console.log("🚀 ~ file: image.js:779 ~ prefix:", prefix) - for (i = 0; i < this.imageList.length; i++) { - data = this.imageList[i]; - list.push({ - src: prefix + data.url, - _src: prefix + data.url, - alt: data.original, - floatStyle: align - }); - } - return list; - } - }; - - - /* 在线图片 */ - function OnlineImage(target) { - this.container = utils.isString(target) ? document.getElementById(target) : target; - this.init(); - } - OnlineImage.prototype = { - init: function () { - this.reset(); - this.initEvents(); - }, - /* 初始化容器 */ - initContainer: function () { - this.container.innerHTML = ''; - this.list = document.createElement('ul'); - this.clearFloat = document.createElement('li'); - - domUtils.addClass(this.list, 'list'); - domUtils.addClass(this.clearFloat, 'clearFloat'); - - this.list.appendChild(this.clearFloat); - this.container.appendChild(this.list); - }, - /* 初始化滚动事件,滚动到地步自动拉取数据 */ - initEvents: function () { - var _this = this; - - /* 滚动拉取图片 */ - domUtils.on($G('imageList'), 'scroll', function(e){ - var panel = this; - if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) { - _this.getImageData(); - } - }); - /* 选中图片 */ - domUtils.on(this.container, 'click', function (e) { - var target = e.target || e.srcElement, - li = target.parentNode; - - if (li.tagName.toLowerCase() == 'li') { - if (domUtils.hasClass(li, 'selected')) { - domUtils.removeClasses(li, 'selected'); - } else { - domUtils.addClass(li, 'selected'); - } - } - }); - }, - /* 初始化第一次的数据 */ - initData: function () { - - /* 拉取数据需要使用的值 */ - this.state = 0; - this.listSize = editor.getOpt('imageManagerListSize'); - this.listIndex = 0; - this.listEnd = false; - - /* 第一次拉取数据 */ - this.getImageData(); - }, - /* 重置界面 */ - reset: function() { - this.initContainer(); - this.initData(); - }, - /* 向后台拉取图片列表数据 */ - getImageData: function () { - var _this = this; - - if(!_this.listEnd && !this.isLoadingData) { - this.isLoadingData = true; - var url = editor.getActionUrl(editor.getOpt('imageManagerActionName')), - isJsonp = utils.isCrossDomainUrl(url); - ajax.request(url, { - 'timeout': 100000, - 'dataType': isJsonp ? 'jsonp':'', - 'data': utils.extend({ - start: this.listIndex, - size: this.listSize - }, editor.queryCommandValue('serverparam')), - 'method': 'get', - 'onsuccess': function (r) { - try { - var json = isJsonp ? r:eval('(' + r.responseText + ')'); - if (json.state == 'SUCCESS') { - _this.pushData(json.list); - _this.listIndex = parseInt(json.start) + parseInt(json.list.length); - if(_this.listIndex >= json.total) { - _this.listEnd = true; - } - _this.isLoadingData = false; - } - } catch (e) { - if(r.responseText.indexOf('ue_separate_ue') != -1) { - var list = r.responseText.split(r.responseText); - _this.pushData(list); - _this.listIndex = parseInt(list.length); - _this.listEnd = true; - _this.isLoadingData = false; - } - } - }, - 'onerror': function () { - _this.isLoadingData = false; - } - }); - } - }, - /* 添加图片到列表界面上 */ - pushData: function (list) { - var i, item, img, icon, _this = this, - urlPrefix = editor.getOpt('imageManagerUrlPrefix'); - for (i = 0; i < list.length; i++) { - if(list[i] && list[i].url) { - item = document.createElement('li'); - img = document.createElement('img'); - icon = document.createElement('span'); - - domUtils.on(img, 'load', (function(image){ - return function(){ - _this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight); - } - })(img)); - img.width = 113; - img.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) ); - img.setAttribute('_src', urlPrefix + list[i].url); - domUtils.addClass(icon, 'icon'); - - item.appendChild(img); - item.appendChild(icon); - this.list.insertBefore(item, this.clearFloat); - } - } - }, - /* 改变图片大小 */ - scale: function (img, w, h, type) { - var ow = img.width, - oh = img.height; - - if (type == 'justify') { - if (ow >= oh) { - img.width = w; - img.height = h * oh / ow; - img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; - } else { - img.width = w * ow / oh; - img.height = h; - img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; - } - } else { - if (ow >= oh) { - img.width = w * ow / oh; - img.height = h; - img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; - } else { - img.width = w; - img.height = h * oh / ow; - img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; - } - } - }, - getInsertList: function () { - var i, lis = this.list.children, list = [], align = getAlign(); - for (i = 0; i < lis.length; i++) { - if (domUtils.hasClass(lis[i], 'selected')) { - var img = lis[i].firstChild, - src = img.getAttribute('_src'); - list.push({ - src: src, - _src: src, - alt: src.substr(src.lastIndexOf('/') + 1), - floatStyle: align - }); - } - - } - return list; - } - }; - - /*搜索图片 */ - function SearchImage() { - this.init(); - } - SearchImage.prototype = { - init: function () { - this.initEvents(); - }, - initEvents: function(){ - var _this = this; - - /* 点击搜索按钮 */ - domUtils.on($G('searchBtn'), 'click', function(){ - var key = $G('searchTxt').value; - if(key && key != lang.searchRemind) { - _this.getImageData(); - } - }); - /* 点击清除妞 */ - domUtils.on($G('searchReset'), 'click', function(){ - $G('searchTxt').value = lang.searchRemind; - $G('searchListUl').innerHTML = ''; - $G('searchType').selectedIndex = 0; - }); - /* 搜索框聚焦 */ - domUtils.on($G('searchTxt'), 'focus', function(){ - var key = $G('searchTxt').value; - if(key && key == lang.searchRemind) { - $G('searchTxt').value = ''; - } - }); - /* 搜索框回车键搜索 */ - domUtils.on($G('searchTxt'), 'keydown', function(e){ - var keyCode = e.keyCode || e.which; - if (keyCode == 13) { - $G('searchBtn').click(); - } - }); - - /* 选中图片 */ - domUtils.on($G('searchList'), 'click', function(e){ - var target = e.target || e.srcElement, - li = target.parentNode.parentNode; - - if (li.tagName.toLowerCase() == 'li') { - if (domUtils.hasClass(li, 'selected')) { - domUtils.removeClasses(li, 'selected'); - } else { - domUtils.addClass(li, 'selected'); - } - } - }); - }, - /* 改变图片大小 */ - scale: function (img, w, h) { - var ow = img.width, - oh = img.height; - - if (ow >= oh) { - img.width = w * ow / oh; - img.height = h; - img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; - } else { - img.width = w; - img.height = h * oh / ow; - img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; - } - }, - getImageData: function(){ - var _this = this, - key = $G('searchTxt').value, - type = $G('searchType').value, - keepOriginName = editor.options.keepOriginName ? "1" : "0", - url = "http://image.baidu.com/i?ct=201326592&cl=2&lm=-1&st=-1&tn=baiduimagejson&istype=2&rn=32&fm=index&pv=&word=" + key + type + "&ie=utf-8&oe=utf-8&keeporiginname=" + keepOriginName + "&" + +new Date; - - $G('searchListUl').innerHTML = lang.searchLoading; - ajax.request(url, { - 'dataType': 'jsonp', - 'charset': 'GB18030', - 'onsuccess':function(json){ - var list = []; - if(json && json.data) { - for(var i = 0; i < json.data.length; i++) { - if(json.data[i].objURL) { - list.push({ - title: json.data[i].fromPageTitleEnc, - src: json.data[i].objURL, - url: json.data[i].fromURL - }); - } - } - } - _this.setList(list); - }, - 'onerror':function(){ - $G('searchListUl').innerHTML = lang.searchRetry; - } - }); - }, - /* 添加图片到列表界面上 */ - setList: function (list) { - var i, item, p, img, link, _this = this, - listUl = $G('searchListUl'); - - listUl.innerHTML = ''; - if(list.length) { - for (i = 0; i < list.length; i++) { - item = document.createElement('li'); - p = document.createElement('p'); - img = document.createElement('img'); - link = document.createElement('a'); - - img.onload = function () { - _this.scale(this, 113, 113); - }; - img.width = 113; - img.setAttribute('src', list[i].src); - - link.href = list[i].url; - link.target = '_blank'; - link.title = list[i].title; - link.innerHTML = list[i].title; - - p.appendChild(img); - item.appendChild(p); - item.appendChild(link); - listUl.appendChild(item); - } - } else { - listUl.innerHTML = lang.searchRetry; - } - }, - getInsertList: function () { - var child, - src, - align = getAlign(), - list = [], - items = $G('searchListUl').children; - for(var i = 0; i < items.length; i++) { - child = items[i].firstChild && items[i].firstChild.firstChild; - if(child.tagName && child.tagName.toLowerCase() == 'img' && domUtils.hasClass(items[i], 'selected')) { - src = child.src; - list.push({ - src: src, - _src: src, - alt: src.substr(src.lastIndexOf('/') + 1), - floatStyle: align - }); - } - } - return list; - } - }; - -})(); diff --git a/public/ueditor/dialogs/image/images/alignicon.jpg b/public/ueditor/dialogs/image/images/alignicon.jpg deleted file mode 100644 index 754755b1b6e2b37d6090f68b80e91867fdcf1042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16101 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 diff --git a/public/ueditor/dialogs/image/images/bg.png b/public/ueditor/dialogs/image/images/bg.png deleted file mode 100644 index 580be0a01dff4c70c72f78a3f40186660ee8eee0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2810 zcmVKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z04GUAK~#9!Vtn`R9RmY{pr9ZF0|OHS5@7uQ|33o*!~6H|(PaPw01s0L&KTmYGZarn*x(aH@fLZq!wgUiaA+%BrQuMGlI(3v}$4ket=c%G-JG_a6@d zUMtW1Dv_dMk(#;&JDULU);6IIt*+RD80Beh(v#{r8-@JE7rOMyrKZ@`PM+5- zK4PEn@UifH&1a7opNKNDvAy~H((Lt@PiCLrh`sqL^yyzFM}*_N9gV+*y1bvCcd{tw zP+atQ`ojjtR_?nOH&4iCw(0v^v}@~SfpwBi-JHA%0-p_?kEd#ga=ENn_|&M5?L?$c z!i1+jT>6R+ul!uQ+^$n$Hm~o7%Nb0wJ#GK7NE~>4aE?#6+>{R=oUZeJnouMg`B^J) rUi3;Xl^IQMkE|4#X6EZ{`gBG$ultcLuMHMNRKNMR>qv$%6N5DXx{1lO diff --git a/public/ueditor/dialogs/image/images/icons.png b/public/ueditor/dialogs/image/images/icons.png deleted file mode 100644 index 12e4700163ac87fa38ae3d92a2c39d0fb4690fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2678 zcmbVOX;>5I79PY3QcMF;v=DTJ2Cao`KoWu|Aqfy6h(IyOQj#!`2w6-5AW&qm{A@Vn47?^n2aU%})k0wvK3C07Okv?vJ=0$Cz%3={xy zqf~pe&}INI6bOSj3J%+s%9n_++yxtKqDTs(0bujiL@Ada3n@Sz6eAS7+30KQY(Qa@ zo6SyVHl8h|Ljs}qUKtd)*Dr{_HCwk^{ks>P(^% z$>3j?4eU)86-^Cbc>d)J9=X{F6bdO7hf^w*SfwLYB8$NhTwGihIEX|C*up`s5-Yfg z4r00OA_D`G^JPM*LMRb~3yfTzBwpcW14sHc1(B4^{+n1V|4S%XGF&28iX&k0IFV=} zuQ%3mMF8}lF#ge69;A{&xBy5liI?%={fM?*1jE|>yQ2j|I2!79nGoI-ZX83xj~78= z1&iTk1FvACgi%yHfdZ>YcEXd1coKy`pb&{P3YkJCkmxiDok&~c_(v?PIup$-B z5`{!AkVrv#APL;a=JJK&g^3RrHt21>3`izSfTBEQ5)t@DVXE*SA|O%d45o(%o=Ey% znZLzG{XeSV;9zhI* z*~k0Z^G~&Z-c7Xw#U+Dr?Cg&42yA(9*^$glv(nbKwok8JbGh^2fn9ZV^^MlnECDr% zb8Rs8C8IoDeQzNCoR;2}!wUCvRMpV!J9E|5P56qVSBFh4T0Y;2i6|=%vhzEOZ^qncd+?}N_bX*{ znIC?`)c7~$4FQSwzwzCOojcU0H=er9Th5iEB3DIX5_dF9pacXTJI>B~>68qESsvP2=ichF(pvo+k4SU)M~s z3+?sA#l_+!^_(ni$K3hWpYvO@(V>(R7s{iDO6K~mgMjhb#~a;iLRMs%6Morxqp@)+ zJ11v+j#Q)R8@*bY-^NRurddL=!0Kz49SxqGJ&)t#ALNBh9UchxYqVgy=FS2Q)2-GG zBd14SCdB|xCIa#W@6`ozw2tq(*SqVL6m(b4BgGYUcz8H7tm5RY4LjVYtB#yD%WIiL z^ok2`{E08ble_h+YjPxp-p^aDd8axLc2xNv4I44|GNGnPPd*e)aneY2alYqb9*45qn=`wHT|PE1MH)jbikTfENQ(LU04R%o4GX7X;)Jz~k@;+*h@ujN~uo%_H2Vt#)9-SuZ8 zD(`znx@z1*Fc?})4yp3{yMwz%f3p3^_`td}jYgB*JZ<~5{o^*n97-MLN`u1+WP=og zG~N;$va+wQFMG^R<8tg!zbtv)zmj%$*=6~JHf{#PVsN6mpPUoW!COmjHa8>BpFe-| zviJ7wsWesFOw!q|0Zmd!GK3nK4i|YKKmE;d9H9tD?#s9pU3R==t>dhsJ`NpNT6t@# z>bvSrv*xK&x%1B=UMGzB-BC7Vw2ftZ@0X$v&Y840W1O8Q6#!^1lgqc)kL(yB)Le=8 z=T=v)?T?7Ey|HH4%EB;>|Af=wc|K2&Wo#TaFw`-{JDys3#>dB}&&TIO#g8>AVApU$ zt=rXe@74BHRaNmELusolZfLdI$M(mvG@O(Dz4?yH_d|!{EIB#j0Rtzj`|*uIYILgq ztW8PmrPs*^+){hCug`mGw|PnDebMsUP`H=IzTQ4QV{GIFucdh)Jw4siba)hSNtxXH z<2!>gR4NgL3iX`KelH{#*9jjIIct8zmJ`on8|gx>n+4xbJ{ci_{515Ueb%M z_d;CG<=vC_{(f=;@|oKWby1nsZbV)PaPKK@(zYTx7wEe1W*3B_g@$xR${3`=9{n z^jx{5(=Foe&%s~(I@!H?NRo?N70XHp3J$g$LnK`+9O&;)_SPBXc|eDW1uGJ2lQU?? z(3=`x>_4uiufh3t9_?yDa8SXgm1%3n5UqP~Dx+6k>B=WpjNSD0C$ny$TjRe?G_AmISp9T7R8oQndf>2sl4f z*Q+)Z)u<0zW)SlFM=k911pK9m9=J$kKII$NfP=n8d9 z_5R=XSPzxewWHyWjb|>hqTEDBdpM&qYK*jR3}fpN>&FrOc8Nw01u7#{_#oBA;+Qag z98vNrKKd&}z6#EjbJU=q-&*=dcaJp(ISHq7v%_OxSG{XiR(gB)=^pEQUR|QJs_=g6 z0z4yL6Rn)4v zv)yNtNTj)n2&tMFwZy-gMkf07%J%iduo#zV@n|#ww?G(766w)+7*H6YEwCDf^l94~ z;7}6D-rJzj;#%bzP=^|skPXAM8chV7L<(JLH9@*07zg6vEe0fv@uKDu12E{r7#sLX zw$dbl6AcmDF*tgAlt#BbNf)ALtPBT2tso&_gmDP48j}$-XboeG>w?7Gw#{My;}AS4 zj4@$Kt5g9J6oUailNX?4b2xxNz~lt-1p#5{RT#D%e}kcq`%vTaA20xFgN4>cO6(Pmr?|Lb=~ zVY4R91hdqz8BM`-#KR?c*-Du}2?j$rifK?ZdFmEbi71Ym6HyZ&i537pN=RowY#YAg z45boOAZ8pwbg)7i#vnA927?~tOJt%Tb|9C-W%D^4880|QAQ8)WQofuMEEaJjQ(P&k zOEJO-KE>7l%jJEPYYT(XL{yf-m?0I`%Q4glj2{{_%;1I13uFtpaz3HQo7u|*S3iT7 zNv`0dToz%5WqaEHJoVHTkssT1I=IAQI{Gj|s zLrABQMF5Sm8=zAjTlVMGdII}WHeGsvSex8>aPW*~dEN^00n4|U<+`F)0+VSYbQ~WV z?F%~8cr8%bc)qMXNq@X|msi$rCx(p8ocoxvx95hP+ww7tVLzn=Dw}7u}%eHk8iyK22DPh{^tP z;8yePo+0GIiepheWjSKe7i~Cr%%6U%^FRaT+&;zKWI;yr)=Htb`;H~Dtv3>QdomZO zx?7%U#21`hX#U}z&+kj(Dq>0t3fzD1{LAk;=X>(P~1p?y-g&qe1}@0io|o5x=H z{k~yG;hpr+z9nb%C)FKYW7g36$AgPzSF1B*L3P7~x01H!jfYh9zSJYpH-vWSwGS*0 z9k5wfq^Y87ZYAwKPqD=-7B9#ulJ4(Z?b}N2rRFd6tR&}rUQ;I@OUoYF_>%W{SBSG; zOJyu`iA??nIWcheW%Lt#9#xJy!m>d^1>^7*Xzr3{YHG7TH`UuA+7(^ zqh7~c*~n7gqt4%h2dR`(bxr1l4`SNv%@iD(L0l(bA7m-!EPjeb=C diff --git a/public/ueditor/dialogs/image/images/progress.png b/public/ueditor/dialogs/image/images/progress.png deleted file mode 100644 index 717c4865c90a959c6a0e9ad1af9c777d900a2e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1269 zcmeAS@N?(olHy`uVBq!ia0vp^f8U}fi7AzZCsS=07??9MLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}t-3#_`hBq$Z(46Le)Ln;eW^@CE2 z^Gl18f$@>14ATq@JNy=b6armi>cVAJd5X6R;MWawh(V&G(G=xXffXz1o@ zX=ZL{;B08&Z0-!x>zP+vl9-pA3bQv8XfIT+GhV$`&PAz-CHX}m`T04p6cCV+Uy@&( zkzb(T9Bihb;hUJ8nFkWk1Vs?Uzb>gonPsUdZbkXI3g8g7%EaOV0~10%hv-cqC)D(T zj?o7t52WM*69T3|5EGvGfgE`DNzDW1nId53*cQ_-&cMK^?CIhdQgN$ga=rIq1A(^5 zYKwg&`wo`WvF`u>{iFU|`!+wz>b#B?t8F4hxRm$~lz-tTH#6E8xZnKlv%`YRwvA{oKseqmK8(Gfx|> z#)dT+Zy!CGH{+89Q&m{rC!PyyIjq?Y9m+ziHPqr6qxfF`+2Qt=-KQ=fE8_j%1#Y2} z>NffN)P;AQIhrE)QQzeqbFS^A8(M1XGuQqTO<=fcH+M~2lzlL$Ao6teb6Mw<&;$U? C61Fb@ diff --git a/public/ueditor/dialogs/image/images/success.gif b/public/ueditor/dialogs/image/images/success.gif deleted file mode 100644 index 8d4f3112b9d1df2147ed3b67d9736163dedd11e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmZ?wbhEHb)L_tHxXJ(m|NsC0{`>#WKmY&!`~ULm|4%>v3rzVXIOUh{)L$ageu+>2 zB{Acd%*pZwE#>TlQSztb-KopJH+%!_|l-~7Ag*59?a z{_c7B@6_{ur(gU#_wwKE_y6vG`1j=VzZYNsfBgCX$DjXizW@L859r4KV8@~pia%Kx z85k@WbU+dyKQXY~a+p)#p(E9QVoA}-BeJtDJbfs+R&065YSGzOop#2q7tzUUTK@E- z1Qpqe*fm*b*T-Fam_8!ZPiJg?eRTb9ku+5;xVnw>Wr$>Ce}(b zvq{bgY~#~oR8Cparp&0%zbdUw!o*Z6ds70hP&$teqekA&7*16-748@%Mnl0vSqU6+ zOpICr!NSHY@7SLk+rBLP3&#jWP!Xxbb jiN%_{Rv%uKKTTNF#>acL^G5)OtDBg<-IWs>91PX~W`xy? diff --git a/public/ueditor/dialogs/image/images/success.png b/public/ueditor/dialogs/image/images/success.png deleted file mode 100644 index 94f968dc8fd3c7ca8f6cb599d006ef3f23b62c7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#?>2=9ZF3nBND}m`vLFhHXsTY(OatnYqyQCInmZhe+73JqDfIV%MiQ6rPIL(9V zO~LIJBb<8mfsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV;u(vXbonl~MI_~M>7*cWT z%njcRVMh`65C6~Q2yI{K`NBQQh9heAinXE1(JfB=Ul%M;Ke#x6g%L8^f5l4Te zj&BcK1znDIyZS2~eC7F3K+}tVTa$=u*HTU0W4>0#`+Qf%|GkyBERBs#$Y}P@k7@U2 zd#*XsYr~WGeCA1uSK>2HTD)g9mP}Xrpg$+`K&8dx2JS~bjCx(hj5}1;-8qn2_>|?> zp{d+2q{I0hbQS!U-jOut`kSEi+IhQJGmBl4O%se*W?OGKZ0Mp?XmGnRgezL^8vCJ4 z#-ek9(R&%4!h+;oXA~Mtbyie=u#0PDiI#!iX`%2?^@kRL8ma*r6?+*}W4e|_8~J&& z+-+*Ub3{dDcAIF|!MTDz0#78qKYeaeVU$wDOOs3cR=e5FZ*O2e-6xc{Uu=$;!s>*M z>nZ|V>zUp8-oE6^wXjV+_UOvuE&SORr`;3hnBKu~e3rzlY@NRjD|5Ui2t>^@Ve7jy z)2vT>u1vesjJgG`f;l_n`FmbR~b^~{VzXB}7CdU_pt>lO9l=E;X#4<2bZu32r~J^e^%TSISQ_Qm$= z7d{rOo2%^RUGseJkpn9(MWszUQdl(i&RN5PBgZ0d#S7ZipShU3W`>Nsy6C#pCD*KW zyxHW%b?m|pr;dF;L$saa#oaeO`u=>jkXTjl9*cLEvOD!Jdr4ooKJW9gY7?D{e?uM^ z`_}E4`0yR0boA=9>3>WXzUH{&pDfpZ;_2xb=j*pKsk#WyD%J#5t{1#azeB z4SJq8H2*dJVX$xugZHVh{7U`u4@oM|quz5j-hRJi{qwh1k5uNqu`W>3HJG&Y^R}6R z$Gq-HPue$sd${oT*XKO8zN>Oe_%K^bZNm3^-vf7@5X# - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    - - -
    px
    px
    - -
    -
    - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/internal.js b/public/ueditor/dialogs/internal.js deleted file mode 100644 index 44dc17f..0000000 --- a/public/ueditor/dialogs/internal.js +++ /dev/null @@ -1,81 +0,0 @@ -(function () { - var parent = window.parent; - //dialog对象 - dialog = parent.$EDITORUI[window.frameElement.id.replace( /_iframe$/, '' )]; - //当前打开dialog的编辑器实例 - editor = dialog.editor; - - UE = parent.UE; - - domUtils = UE.dom.domUtils; - - utils = UE.utils; - - browser = UE.browser; - - ajax = UE.ajax; - - $G = function ( id ) { - return document.getElementById( id ) - }; - //focus元素 - $focus = function ( node ) { - setTimeout( function () { - if ( browser.ie ) { - var r = node.createTextRange(); - r.collapse( false ); - r.select(); - } else { - node.focus() - } - }, 0 ) - }; - utils.loadFile(document,{ - href:editor.options.themePath + editor.options.theme + "/dialogbase.css?cache="+Math.random(), - tag:"link", - type:"text/css", - rel:"stylesheet" - }); - lang = editor.getLang(dialog.className.split( "-" )[2]); - if(lang){ - domUtils.on(window,'load',function () { - - var langImgPath = editor.options.langPath + editor.options.lang + "/images/"; - //针对静态资源 - for ( var i in lang["static"] ) { - var dom = $G( i ); - if(!dom) continue; - var tagName = dom.tagName, - content = lang["static"][i]; - if(content.src){ - //clone - content = utils.extend({},content,false); - content.src = langImgPath + content.src; - } - if(content.style){ - content = utils.extend({},content,false); - content.style = content.style.replace(/url\s*\(/g,"url(" + langImgPath) - } - switch ( tagName.toLowerCase() ) { - case "var": - dom.parentNode.replaceChild( document.createTextNode( content ), dom ); - break; - case "select": - var ops = dom.options; - for ( var j = 0, oj; oj = ops[j]; ) { - oj.innerHTML = content.options[j++]; - } - for ( var p in content ) { - p != "options" && dom.setAttribute( p, content[p] ); - } - break; - default : - domUtils.setAttributes( dom, content); - } - } - } ); - } - - -})(); - diff --git a/public/ueditor/dialogs/link/link.html b/public/ueditor/dialogs/link/link.html deleted file mode 100644 index 01d19f7..0000000 --- a/public/ueditor/dialogs/link/link.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - -
    - - - diff --git a/public/ueditor/dialogs/map/map.html b/public/ueditor/dialogs/map/map.html deleted file mode 100644 index e763b8e..0000000 --- a/public/ueditor/dialogs/map/map.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - -
    - - - - - - - - - -
    ::
    -
    - -
    - - - - - diff --git a/public/ueditor/dialogs/map/show.html b/public/ueditor/dialogs/map/show.html deleted file mode 100644 index 329cfeb..0000000 --- a/public/ueditor/dialogs/map/show.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - 百度地图API自定义地图 - - - - - - - -
    - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/music/music.css b/public/ueditor/dialogs/music/music.css deleted file mode 100644 index 8fb7a94..0000000 --- a/public/ueditor/dialogs/music/music.css +++ /dev/null @@ -1,30 +0,0 @@ -.wrapper{margin: 5px 10px;} - -.searchBar{height:30px;padding:7px 0 3px;text-align:center;} -.searchBtn{font-size:13px;height:24px;} - -.resultBar{width:460px;margin:5px auto;border: 1px solid #CCC;border-radius: 5px;box-shadow: 2px 2px 5px #D3D6DA;overflow: hidden;} - -.listPanel{overflow: hidden;} -.panelon{display:block;} -.paneloff{display:none} - -.page{width:220px;margin:20px auto;overflow: hidden;} -.pageon{float:right;width:24px;line-height:24px;height:24px;margin-right: 5px;background: none;border: none;color: #000;font-weight: bold;text-align:center} -.pageoff{float:right;width:24px;line-height:24px;height:24px;cursor:pointer;background-color: #fff; - border: 1px solid #E7ECF0;color: #2D64B3;margin-right: 5px;text-decoration: none;text-align:center;} - -.m-box{width:460px;} -.m-m{float: left;line-height: 20px;height: 20px;} -.m-h{height:24px;line-height:24px;padding-left: 46px;background-color:#FAFAFA;border-bottom: 1px solid #DAD8D8;font-weight: bold;font-size: 12px;color: #333;} -.m-l{float:left;width:40px; } -.m-t{float:left;width:140px;} -.m-s{float:left;width:110px;} -.m-z{float:left;width:100px;} -.m-try-t{float: left;width: 60px;;} - -.m-try{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/try_music.gif') no-repeat ;} -.m-trying{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/stop_music.gif') no-repeat ;} - -.loading{width:95px;height:7px;font-size:7px;margin:60px auto;background:url(http://static.tieba.baidu.com/tb/editor/images/loading.gif) no-repeat} -.empty{width:300px;height:40px;padding:2px;margin:50px auto;line-height:40px; color:#006699;text-align:center;} \ No newline at end of file diff --git a/public/ueditor/dialogs/music/music.html b/public/ueditor/dialogs/music/music.html deleted file mode 100644 index e7ef04f..0000000 --- a/public/ueditor/dialogs/music/music.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - 插入音乐 - - - - -
    - -
    - -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/music/music.js b/public/ueditor/dialogs/music/music.js deleted file mode 100644 index 1c538bf..0000000 --- a/public/ueditor/dialogs/music/music.js +++ /dev/null @@ -1,192 +0,0 @@ -function Music() { - this.init(); -} -(function () { - var pages = [], - panels = [], - selectedItem = null; - Music.prototype = { - total:70, - pageSize:10, - dataUrl:"http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.common", - playerUrl:"http://box.baidu.com/widget/flash/bdspacesong.swf", - - init:function () { - var me = this; - domUtils.on($G("J_searchName"), "keyup", function (event) { - var e = window.event || event; - if (e.keyCode == 13) { - me.dosearch(); - } - }); - domUtils.on($G("J_searchBtn"), "click", function () { - me.dosearch(); - }); - }, - callback:function (data) { - var me = this; - me.data = data.song_list; - setTimeout(function () { - $G('J_resultBar').innerHTML = me._renderTemplate(data.song_list); - }, 300); - }, - dosearch:function () { - var me = this; - selectedItem = null; - var key = $G('J_searchName').value; - if (utils.trim(key) == "")return false; - key = encodeURIComponent(key); - me._sent(key); - }, - doselect:function (i) { - var me = this; - if (typeof i == 'object') { - selectedItem = i; - } else if (typeof i == 'number') { - selectedItem = me.data[i]; - } - }, - onpageclick:function (id) { - var me = this; - for (var i = 0; i < pages.length; i++) { - $G(pages[i]).className = 'pageoff'; - $G(panels[i]).className = 'paneloff'; - } - $G('page' + id).className = 'pageon'; - $G('panel' + id).className = 'panelon'; - }, - listenTest:function (elem) { - var me = this, - view = $G('J_preview'), - is_play_action = (elem.className == 'm-try'), - old_trying = me._getTryingElem(); - - if (old_trying) { - old_trying.className = 'm-try'; - view.innerHTML = ''; - } - if (is_play_action) { - elem.className = 'm-trying'; - view.innerHTML = me._buildMusicHtml(me._getUrl(true)); - } - }, - _sent:function (param) { - var me = this; - $G('J_resultBar').innerHTML = '
    '; - - utils.loadFile(document, { - src:me.dataUrl + '&query=' + param + '&page_size=' + me.total + '&callback=music.callback&.r=' + Math.random(), - tag:"script", - type:"text/javascript", - defer:"defer" - }); - }, - _removeHtml:function (str) { - var reg = /<\s*\/?\s*[^>]*\s*>/gi; - return str.replace(reg, ""); - }, - _getUrl:function (isTryListen) { - var me = this; - var param = 'from=tiebasongwidget&url=&name=' + encodeURIComponent(me._removeHtml(selectedItem.title)) + '&artist=' - + encodeURIComponent(me._removeHtml(selectedItem.author)) + '&extra=' - + encodeURIComponent(me._removeHtml(selectedItem.album_title)) - + '&autoPlay='+isTryListen+'' + '&loop=true'; - return me.playerUrl + "?" + param; - }, - _getTryingElem:function () { - var s = $G('J_listPanel').getElementsByTagName('span'); - - for (var i = 0; i < s.length; i++) { - if (s[i].className == 'm-trying') - return s[i]; - } - return null; - }, - _buildMusicHtml:function (playerUrl) { - var html = ' 12) - return s.substring(0, 5) + '...'; - if (!s) s = " "; - return s; - }, - _rebuildData:function (data) { - var me = this, - newData = [], - d = me.pageSize, - itembox; - for (var i = 0; i < data.length; i++) { - if ((i + d) % d == 0) { - itembox = []; - newData.push(itembox) - } - itembox.push(data[i]); - } - return newData; - }, - _renderTemplate:function (data) { - var me = this; - if (data.length == 0)return '
    ' + lang.emptyTxt + '
    '; - data = me._rebuildData(data); - var s = [], p = [], t = []; - s.push('
    '); - p.push('
    '); - for (var i = 0, tmpList; tmpList = data[i++];) { - panels.push('panel' + i); - pages.push('page' + i); - if (i == 1) { - s.push('
    '); - if (data.length != 1) { - t.push('
    ' + (i ) + '
    '); - } - } else { - s.push('
    '); - t.push('
    ' + (i ) + '
    '); - } - s.push('
    '); - s.push('
    ' + lang.chapter + '' + lang.singer - + '' + lang.special + '' + lang.listenTest + '
    '); - for (var j = 0, tmpObj; tmpObj = tmpList[j++];) { - s.push(''); - } - s.push('
    '); - s.push('
    '); - } - t.reverse(); - p.push(t.join('')); - s.push('
    '); - p.push('
    '); - return s.join('') + p.join(''); - }, - exec:function () { - var me = this; - if (selectedItem == null) return; - $G('J_preview').innerHTML = ""; - editor.execCommand('music', { - url:me._getUrl(false), - width:400, - height:95 - }); - } - }; -})(); - - - diff --git a/public/ueditor/dialogs/preview/preview.html b/public/ueditor/dialogs/preview/preview.html deleted file mode 100644 index f6b433b..0000000 --- a/public/ueditor/dialogs/preview/preview.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - -
    - -
    - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/scrawl/images/addimg.png b/public/ueditor/dialogs/scrawl/images/addimg.png deleted file mode 100644 index 03a87135bab65fa2633156789ed0f4a906d6c48b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 628 zcmV-)0*n2LP)LlfO?CQ4q&JZ};uuDR(Ob))OTXC`@eBz!@zF z+HgV%Hu^952Y4l=g(2n$i9ae63lhXcqYyM9#DWA|@b(rsk9+f;1wl+yj4;&{^Z8EZ zJ2T2T$4NrJSzdPEvg}xJM?R0MBtb zF(d!&V7bvXOyyt%V+_VxCMVl|G4K0L2`GSu4nDMoTw7VvC?4}634OnCk@;@JLnc3FEH3Q_>)m5edixGKIt7FkHcF4 O0000LlRapYQ51%sn|z5A!;eU>8r+{HJr7$}yPjp=Xw4K1Ua#f7iuXvM4a5!@5mnb6Jy5;4f zq^GClVK^)=CMV^$zAd#p)X9w(bjvTJaV6W6Y< zHElN4Fd9h58CQpMwnbCF0&&|nt--a91jfSjz&XY;RG1F=2?rH8AKl0($O&qx#;_=`eAIGPkrEiZ*t@m5rL2F^2%$?h~iba07-RvG6!+$Z#-hF)* z*wUa-u1NavBOIv|-+OxK963tx@)g|sy&J-7BIJt|`BL~qAQEA|QlZmXAv_UdV92*A z3}9Ln#}*y)LEQe`d0jImLzJL!8vd uXg6z^rfGozG)+U(G#m~GPN$P@*OZ@vE+GjWfY&Ji0000Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzf=NU{R5(w?lReA9Q5c8MckvC3CRr4rWH3k}lHF)Du^B`%h=dG6 zguL4*gWaS^NGOSZ`kg^f{XGLc^_;r8yYF+Z`@GZ<;@`(&vA|?9`3kyXJRalQL01fi zLp&Z2WV6|iphH*mdOh6lcNB}ox0FgHl*{E8%(<2hUD0m0al73R4u_FWr%|m|U({+f zG#U+byIr{(BXid2&=t*Q6W8k%I-L%By=@ zm&*kzl?rOL8d|Lu!C(;4XcW0z4*h-~yWI|l!$HRBbc(@XARW4*QmNo{I>BPGNUT;X zoK7cPE*HFBFG8UZX0sXA>ow-{IbyLG;_u=hIe}(G|5Z=0000LlRs}0K@i1%ySKhz{O1fJ$i!Hn&_fERK@ibd zbP=ieOf+<);v-NHQBXy)C?X|I5W=L1LJA~<17{zJ<9KG5!k{1wk%*@njpn`4doyD~ z2uu@pDm37>c6P$IEISwYQmKSH==W(ZE}o0v_2wonsNzFl`^D^kf$u!}LQutt_h<;j zar~DygE3(2IEO&+5CUiji1#=ZK||o}yDIhi33JuKDcl%rWQp=QqMSoVf(}M_9S>Cz zoT{SUv$l2tmn+e19`WG*;h4Z$Tz-aRexA6TaMJJ5+ucP5L)3dz6(_2Uyk~!Jk0eQW z^|DCs>qV~3L9K47-Y79!zJ;+$TrLymKV!r*@*Yt=mC$IUKuQ!vbUH=4-H3MEa`k$j zhnMqIZzgp1JzK3F1=nNY_D=~Sf_Tr$%FJ)(9slx>D9Y%(@ACbV<1iJj6ctqv?-3E) zNCY1O8yiQHJFtexf@?2R{@BJ?i!}ygEd8hVIIh)jS(Xvyay))=@XwvUSz2QG?!rX< zd8>shILEWq)iaM~SSaveeSM-{Y&0;#;gB>(^b diff --git a/public/ueditor/dialogs/scrawl/images/empty.png b/public/ueditor/dialogs/scrawl/images/empty.png deleted file mode 100644 index 0375196257ac3c859373b3ebebbabe6f16105587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 519 zcmV+i0{H!jP)Ll09-0Q4oZ`x4R&OpbGFo(29U6rOK6a3v&a7 z_DM+WM6pqhRKi!#4G@N6DKtGpus^URVFFJ&)8BN@dnqD#NM-jmudlA&{11>?2dmYJ zq9_;)28>1{cDr5ttSY|V-7%R=l6xQ-X2x_n?EuB!wC#2qd7hIOIeC_oWf>_YHk(bz zMaX$Q9;cHIE-o(@kBWl9lL2S1&UiW;@}sKQ@Am+B1TJ9`@6XQ{M-IY$At_veyCZkh z2#A0HNw}-$pgZDtT-F2Ob2F>OW^-Ac+hlWdQI_N05jzL&!X;$ZZFh;o!GLIH95bB; zNW$DPvl`UcHyv6%9(DgT!0PRm7pMi8VTV70h}zld2%+{!9YE@DjHv&@KO#8t7UG=) zNe~cC4#|6f?iJh}mm_H@6X8y{FD13$rOa5b*F8Xr2vSNfffuvc>}^?=9}+-HBod@% zcfjrE+jln~Z$1J0i1=~@0GiDNLcJQPqF|2002ov JPDHLkV1nZ!(%Jw3 diff --git a/public/ueditor/dialogs/scrawl/images/emptyH.png b/public/ueditor/dialogs/scrawl/images/emptyH.png deleted file mode 100644 index 838ca723119499465f29e881a745f4d8a051e22c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 657 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cMyUXw5Z8P6?!9~W&Mteod+EB17cYi1ZuhR-c=YJe)QJao zoqKZj)+^_N)hDk%kM7vxU%SOIZ)HU5u5H`4rB6P*;n@A6IVa_d+Vkc6Z`Cb3f9%S$swHPL zrX0?laV)ZJmtD^C)Jcaf-hX@G%JYPteGa)RpT7ON{^-5+yDx<|?_9t8V%D^yUKQ)t z9lf{e;O)TrtuBRYf*Q8PcI>guUcUO!os-vJoWJvW)22-q?!7sF_4&EmuM_+BN4D;= z&slDtz2el37q(f;)*ZQN z=N^Z=m4&lU_*8HD|Np=0=2?Njpo}XC@(TuXX$KfKp3qYR+O*iy#WAGfR#Jy6Gf%)R z4qpdHXJJo=hVYQC!~KV2MYI-VrJh`QUQ;LM&1;6x#M9b~#Ma7WK4-jqNPV%W#5&yr zqHMw)6OH>XB&SZ@(#H8io2zq2%cn~1gDgj6o15p{xKW{#z;wrkO(^fonRSm08Z|^C z74@VuOY>$h1UKwir)j@Gk;A27;=wb==bbzq+_Gcd9- Y9E)+P-Fqc+HPE>Xp00i_>zopr0P;w4-2eap diff --git a/public/ueditor/dialogs/scrawl/images/eraser.png b/public/ueditor/dialogs/scrawl/images/eraser.png deleted file mode 100644 index 63e87cecb90ed3ac0e4acbc257c6dddae5311e09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43271 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
    h>dGcdSlWeEFl}k2MrUUS^bR;=$@vE@GsDa9 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 diff --git a/public/ueditor/dialogs/scrawl/images/redoH.png b/public/ueditor/dialogs/scrawl/images/redoH.png deleted file mode 100644 index d9f33d38a3d11ce10447830ce409a0890ecad264..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmV+z0_XjSP)LlRro!K@`S+vst67f)FhPH9;i)IZy=QifsP%Q^7=yx~FIm{DVqJh#8yN2on55 zK6niC-hAJD?=d5!lvD$)D)w6iOxq2aw)?eGO}w=Q({?4W2uyj7_3$nS0b08|CV^$s zcEc4Nn6?`Q=790%;vf4s`J3kd?(rXB%yX=pvVdv3pMkYfEM|mb9T>VsU5&ud zHR{zG?2nRrWd3EgfMHFMKLD%wc#k35+Fxy@XQ-Rrp?E*AqO06&F51~7BhBb9F%{CA zdmJPWQouxT{!<~+LW6%qD0@z^RN@x6tuTZA%{2bb;RZ0`Io4$$5UD%$(J!*|z&Fpa za?fuyZTGrH*P6~!{%Io9+`*3VLY0+{d|s}SVM0@>uRpF)fd0F8hF zgjKx=6b8R6tZy&P{3zz{+r)RSrIc5o-hmLJL6K@zgnPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzF-b&0R5(wyQ*Ba%Fc9qxdXyf4gZLw&GE-Zj!G1tU_|R6xf-Mzw ztkqtHqs45L76*QWA2RbM@MiON_wCZ@{O7ZK+oR9deF10dJg3G9@~FqDz{krMf6sUA zM9%t%Ge#w-z&79UR#oU%de6AjwTpqy2_YI|tk+7Q3^s=6YMHYnLz^_O1&3i+?2mwN&7$-;U#S!Q9m{<3SMoh?w@E00BVyxZ+RCwFLF4JWG!G zOmY$;RtOYQz#3aQ*W5#AiVywHJM`%L@4v^Nzsx*vCin1#lEeQmy!?Oq z<)3F?{!hO2^5n}ed515YeEH$t2cY2pvoHVmpTDyB(*MfC{~Hedzw_aD z|6#-Q0^JY(AHHp1XAM(|igs|-_4sV4KK0;p@m*h1S8U_x=m<-jvZ+JR;{IBr4+&>f zSEaF?oUyAYF85cQWPSYh#i0ycQ4jWf_nW(8?Ylo51`N|SiTvgEn+*yn22WQ%mvv4F FO#t{IsF?r& diff --git a/public/ueditor/dialogs/scrawl/images/size.png b/public/ueditor/dialogs/scrawl/images/size.png deleted file mode 100644 index 8366845059c94089aef92aa3aeeee79e242732eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 775 zcmeAS@N?(olHy`uVBq!ia0vp^Iv_R&Gmw0`s%8O@k}PqJC<)F_D=AMbN@Z|N$xljE z@XSq2PYp^@^W{ zcO82EKXB&y{MKgq%sz{fI)==3d^r;&6MFPw(_IV71M|xGvv%v3_j2X!dGPP#L^Pja~hhtj9%m4qMKL2y%^Z&`q z=WTfUnlHCkByWLuLg&Z-{~5B^aHX`VrcW0wpCeN?gQ0YF|Ek^0Wm|o-iywUa@%aCL z)%2NBbM`Q#t<@@?!;!p&H+$mBlaI^_YB&B#>#{8s<9mu2JY zGd5l4N$XHbnR5BlcfNx4cmMupDBR$-Y>#a9e1@#m@BaT>^X!XNW-&wBx||KyZ~Xty zRkTzmtwcMm#U?#ZF@LgB=2WKq4bg@9JjHY3ON;;i|F13o-WwPzN)S72Y1Qc%6 zcJYYNXcAOgEAc9NiWcu<*Ig$*&7M7NgR1o_Dx<9^s3W?&d{SwZWC%AQ=Vq^CQZBv#02ZVBfRNMNWq`8qHxO6)(-0}P(7 KelF{r5}E+VpO-NJ diff --git a/public/ueditor/dialogs/scrawl/images/undo.png b/public/ueditor/dialogs/scrawl/images/undo.png deleted file mode 100644 index 084c7cc73f4058c8084e5ea3ab4e51fd105b7991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 444 zcmV;t0YmPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzI!Q!9R5(v#U>KAjGc&U&EiH|oEXQSKWlhM*$@yPcSjb6|0imIx zY(ULRYin!&1L^-HX$ETG0XlnEb#?Xs>C>nGudAyA8-k93YSsZ=r-))WP>}=>pQ);< z`afyXB(MQ<=FIuOaN)xL%ayrnkSp|9?S2!GDaj0*gvQ(FlretOfvW z6$E0%n3$MFK-vn3oq^aBh<%|nh;Lrlg%pxVI0RlGdnYDm%@o%7K^0FfxN6OiJOCi zi#RxuqoSN#Tot)WQew-+VO#$I2f6IQORU!0vXfFu4udr_4m%hxc|CaQ+tc&%`}Y0* zp6?@=rpaH1_@`<>2#kh5+8+kyfa~8Vm_`&Qf&1?$uoEc2lIZmeVHg0~PYAMri0Se6 zisfa<1zrI21FQgkJAn`w4d(-ql&7Fh^q1h21YD9xhMb<=^2_=%c1k>YpaK0r=t;rC zt=CtVDk}a`Zc&w=rjAAzFb_055%guKXWR05;yaef&C8{>rA7h90VLo8XqA)a5z{mR zl$UZFi*u7y-#5(Rpt#aUb$tcVwXHUL6R&`FK~-0c!y{7ZV&N?eU3VYvo=oj*?jtLb z0%Y5tQ3JY+q#F9ffd-5m?iOx)5tafl#kIoD<11{3}kbno$;nIA;p5?+| zPj_N{G3Qm3Edm$dw4eYE%Yq5$7Rj9jP5AfU_y|@8ao4ld0UH1S002ovPDHLkV1l6! B+-3j( diff --git a/public/ueditor/dialogs/scrawl/scrawl.css b/public/ueditor/dialogs/scrawl/scrawl.css deleted file mode 100644 index b18430d..0000000 --- a/public/ueditor/dialogs/scrawl/scrawl.css +++ /dev/null @@ -1,72 +0,0 @@ -/*common -*/ -body{margin: 0;} -table{width:100%;} -table td{padding:2px 4px;vertical-align: middle;} -a{text-decoration: none;} -em{font-style: normal;} -.border_style1{border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;} -/*module -*/ -.main{margin: 8px;overflow: hidden;} - -.hot{float:left;height:335px;} -.drawBoard{position: relative; cursor: crosshair;} -.brushBorad{position: absolute;left:0;top:0;z-index: 998;} -.picBoard{border: none;text-align: center;line-height: 300px;cursor: default;} -.operateBar{margin-top:10px;font-size:12px;text-align: center;} -.operateBar span{margin-left: 10px;} - -.drawToolbar{float:right;width:110px;height:300px;overflow: hidden;} -.colorBar{margin-top:10px;font-size: 12px;text-align: center;} -.colorBar a{display:block;width: 10px;height: 10px;border:1px solid #1006F1;border-radius: 3px; box-shadow:2px 2px 5px #d3d6da;opacity: 0.3} -.sectionBar{margin-top:15px;font-size: 12px;text-align: center;} -.sectionBar a{display:inline-block;width:10px;height:12px;color: #888;text-indent: -999px;opacity: 0.3} -.size1{background: url('images/size.png') 1px center no-repeat ;} -.size2{background: url('images/size.png') -10px center no-repeat;} -.size3{background: url('images/size.png') -22px center no-repeat;} -.size4{background: url('images/size.png') -35px center no-repeat;} - -.addImgH{position: relative;} -.addImgH_form{position: absolute;left: 18px;top: -1px;width: 75px;height: 21px;opacity: 0;cursor: pointer;} -.addImgH_form input{width: 100%;} -/*scrawl遮罩层 -*/ -.maskLayerNull{display: none;} -.maskLayer{position: absolute;top:0;left:0;width: 100%; height: 100%;opacity: 0.7; - background-color: #fff;text-align:center;font-weight:bold;line-height:300px;z-index: 1000;} -/*btn state -*/ -.previousStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undoH.png');cursor: pointer;} -.previousStepH .text{color:#888;cursor:pointer;} -.previousStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undo.png');cursor:default;} -.previousStep .text{color:#ccc;cursor:default;} - -.nextStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redoH.png');cursor: pointer;} -.nextStepH .text{color:#888;cursor:pointer;} -.nextStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redo.png');cursor:default;} -.nextStep .text{color:#ccc;cursor:default;} - -.clearBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/emptyH.png');cursor: pointer;} -.clearBoardH .text{color:#888;cursor:pointer;} -.clearBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/empty.png');cursor:default;} -.clearBoard .text{color:#ccc;cursor:default;} - -.scaleBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scaleH.png');cursor: pointer;} -.scaleBoardH .text{color:#888;cursor:pointer;} -.scaleBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scale.png');cursor:default;} -.scaleBoard .text{color:#ccc;cursor:default;} - -.removeImgH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimgH.png');cursor: pointer;} -.removeImgH .text{color:#888;cursor:pointer;} -.removeImg .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimg.png');cursor:default;} -.removeImg .text{color:#ccc;cursor:default;} - -.addImgH .icon{vertical-align:top;display: inline-block;width:16px;height:16px;background-image: url('images/addimg.png')} -.addImgH .text{color:#888;cursor:pointer;} -/*icon -*/ -.brushIcon{display: inline-block;width:16px;height:16px;background-image: url('images/brush.png')} -.eraserIcon{display: inline-block;width:16px;height:16px;background-image: url('images/eraser.png')} - - diff --git a/public/ueditor/dialogs/scrawl/scrawl.html b/public/ueditor/dialogs/scrawl/scrawl.html deleted file mode 100644 index 9371abd..0000000 --- a/public/ueditor/dialogs/scrawl/scrawl.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - -
    -
    -
    -
    -
    - - 1 - 3 - 5 - 7 -
    -
    - - 1 - 3 - 5 - 7 -
    -
    -
    - - -
    - -
    - -
    -
    -
    - - - - -
    -
    -
    -
    - - - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/scrawl/scrawl.js b/public/ueditor/dialogs/scrawl/scrawl.js deleted file mode 100644 index d0b451b..0000000 --- a/public/ueditor/dialogs/scrawl/scrawl.js +++ /dev/null @@ -1,670 +0,0 @@ -/** - * Created with JetBrains PhpStorm. - * User: xuheng - * Date: 12-5-22 - * Time: 上午11:38 - * To change this template use File | Settings | File Templates. - */ -var scrawl = function (options) { - options && this.initOptions(options); -}; -(function () { - var canvas = $G("J_brushBoard"), - context = canvas.getContext('2d'), - drawStep = [], //undo redo存储 - drawStepIndex = 0; //undo redo指针 - - scrawl.prototype = { - isScrawl:false, //是否涂鸦 - brushWidth:-1, //画笔粗细 - brushColor:"", //画笔颜色 - - initOptions:function (options) { - var me = this; - me.originalState(options);//初始页面状态 - me._buildToolbarColor(options.colorList);//动态生成颜色选择集合 - - me._addBoardListener(options.saveNum);//添加画板处理 - me._addOPerateListener(options.saveNum);//添加undo redo clearBoard处理 - me._addColorBarListener();//添加颜色选择处理 - me._addBrushBarListener();//添加画笔大小处理 - me._addEraserBarListener();//添加橡皮大小处理 - me._addAddImgListener();//添加增添背景图片处理 - me._addRemoveImgListenter();//删除背景图片处理 - me._addScalePicListenter();//添加缩放处理 - me._addClearSelectionListenter();//添加清楚选中状态处理 - - me._originalColorSelect(options.drawBrushColor);//初始化颜色选中 - me._originalBrushSelect(options.drawBrushSize);//初始化画笔选中 - me._clearSelection();//清楚选中状态 - }, - - originalState:function (options) { - var me = this; - - me.brushWidth = options.drawBrushSize;//同步画笔粗细 - me.brushColor = options.drawBrushColor;//同步画笔颜色 - - context.lineWidth = me.brushWidth;//初始画笔大小 - context.strokeStyle = me.brushColor;//初始画笔颜色 - context.fillStyle = "transparent";//初始画布背景颜色 - context.lineCap = "round";//去除锯齿 - context.fill(); - }, - _buildToolbarColor:function (colorList) { - var tmp = null, arr = []; - arr.push(""); - for (var i = 0, color; color = colorList[i++];) { - if ((i - 1) % 5 == 0) { - if (i != 1) { - arr.push(""); - } - arr.push(""); - } - tmp = '#' + color; - arr.push(""); - } - arr.push("
    "); - $G("J_colorBar").innerHTML = arr.join(""); - }, - - _addBoardListener:function (saveNum) { - var me = this, - margin = 0, - startX = -1, - startY = -1, - isMouseDown = false, - isMouseMove = false, - isMouseUp = false, - buttonPress = 0, button, flag = ''; - - margin = parseInt(domUtils.getComputedStyle($G("J_wrap"), "margin-left")); - drawStep.push(context.getImageData(0, 0, context.canvas.width, context.canvas.height)); - drawStepIndex += 1; - - domUtils.on(canvas, ["mousedown", "mousemove", "mouseup", "mouseout"], function (e) { - button = browser.webkit ? e.which : buttonPress; - switch (e.type) { - case 'mousedown': - buttonPress = 1; - flag = 1; - isMouseDown = true; - isMouseUp = false; - isMouseMove = false; - me.isScrawl = true; - startX = e.clientX - margin;//10为外边距总和 - startY = e.clientY - margin; - context.beginPath(); - break; - case 'mousemove' : - if (!flag && button == 0) { - return; - } - if (!flag && button) { - startX = e.clientX - margin;//10为外边距总和 - startY = e.clientY - margin; - context.beginPath(); - flag = 1; - } - if (isMouseUp || !isMouseDown) { - return; - } - var endX = e.clientX - margin, - endY = e.clientY - margin; - - context.moveTo(startX, startY); - context.lineTo(endX, endY); - context.stroke(); - startX = endX; - startY = endY; - isMouseMove = true; - break; - case 'mouseup': - buttonPress = 0; - if (!isMouseDown)return; - if (!isMouseMove) { - context.arc(startX, startY, context.lineWidth, 0, Math.PI * 2, false); - context.fillStyle = context.strokeStyle; - context.fill(); - } - context.closePath(); - me._saveOPerate(saveNum); - isMouseDown = false; - isMouseMove = false; - isMouseUp = true; - startX = -1; - startY = -1; - break; - case 'mouseout': - flag = ''; - buttonPress = 0; - if (button == 1) return; - context.closePath(); - break; - } - }); - }, - _addOPerateListener:function (saveNum) { - var me = this; - domUtils.on($G("J_previousStep"), "click", function () { - if (drawStepIndex > 1) { - drawStepIndex -= 1; - context.clearRect(0, 0, context.canvas.width, context.canvas.height); - context.putImageData(drawStep[drawStepIndex - 1], 0, 0); - me.btn2Highlight("J_nextStep"); - drawStepIndex == 1 && me.btn2disable("J_previousStep"); - } - }); - domUtils.on($G("J_nextStep"), "click", function () { - if (drawStepIndex > 0 && drawStepIndex < drawStep.length) { - context.clearRect(0, 0, context.canvas.width, context.canvas.height); - context.putImageData(drawStep[drawStepIndex], 0, 0); - drawStepIndex += 1; - me.btn2Highlight("J_previousStep"); - drawStepIndex == drawStep.length && me.btn2disable("J_nextStep"); - } - }); - domUtils.on($G("J_clearBoard"), "click", function () { - context.clearRect(0, 0, context.canvas.width, context.canvas.height); - drawStep = []; - me._saveOPerate(saveNum); - drawStepIndex = 1; - me.isScrawl = false; - me.btn2disable("J_previousStep"); - me.btn2disable("J_nextStep"); - me.btn2disable("J_clearBoard"); - }); - }, - _addColorBarListener:function () { - var me = this; - domUtils.on($G("J_colorBar"), "click", function (e) { - var target = me.getTarget(e), - color = target.title; - if (!!color) { - me._addColorSelect(target); - - me.brushColor = color; - context.globalCompositeOperation = "source-over"; - context.lineWidth = me.brushWidth; - context.strokeStyle = color; - } - }); - }, - _addBrushBarListener:function () { - var me = this; - domUtils.on($G("J_brushBar"), "click", function (e) { - var target = me.getTarget(e), - size = browser.ie ? target.innerText : target.text; - if (!!size) { - me._addBESelect(target); - - context.globalCompositeOperation = "source-over"; - context.lineWidth = parseInt(size); - context.strokeStyle = me.brushColor; - me.brushWidth = context.lineWidth; - } - }); - }, - _addEraserBarListener:function () { - var me = this; - domUtils.on($G("J_eraserBar"), "click", function (e) { - var target = me.getTarget(e), - size = browser.ie ? target.innerText : target.text; - if (!!size) { - me._addBESelect(target); - - context.lineWidth = parseInt(size); - context.globalCompositeOperation = "destination-out"; - context.strokeStyle = "#FFF"; - } - }); - }, - _addAddImgListener:function () { - var file = $G("J_imgTxt"); - if (!window.FileReader) { - $G("J_addImg").style.display = 'none'; - $G("J_removeImg").style.display = 'none'; - $G("J_sacleBoard").style.display = 'none'; - } - domUtils.on(file, "change", function (e) { - var frm = file.parentNode; - addMaskLayer(lang.backgroundUploading); - - var target = e.target || e.srcElement, - reader = new FileReader(); - reader.onload = function(evt){ - var target = evt.target || evt.srcElement; - ue_callback(target.result, 'SUCCESS'); - }; - reader.readAsDataURL(target.files[0]); - frm.reset(); - }); - }, - _addRemoveImgListenter:function () { - var me = this; - domUtils.on($G("J_removeImg"), "click", function () { - $G("J_picBoard").innerHTML = ""; - me.btn2disable("J_removeImg"); - me.btn2disable("J_sacleBoard"); - }); - }, - _addScalePicListenter:function () { - domUtils.on($G("J_sacleBoard"), "click", function () { - var picBoard = $G("J_picBoard"), - scaleCon = $G("J_scaleCon"), - img = picBoard.children[0]; - - if (img) { - if (!scaleCon) { - picBoard.style.cssText = "position:relative;z-index:999;"+picBoard.style.cssText; - img.style.cssText = "position: absolute;top:" + (canvas.height - img.height) / 2 + "px;left:" + (canvas.width - img.width) / 2 + "px;"; - var scale = new ScaleBoy(); - picBoard.appendChild(scale.init()); - scale.startScale(img); - } else { - if (scaleCon.style.visibility == "visible") { - scaleCon.style.visibility = "hidden"; - picBoard.style.position = ""; - picBoard.style.zIndex = ""; - } else { - scaleCon.style.visibility = "visible"; - picBoard.style.cssText += "position:relative;z-index:999"; - } - } - } - }); - }, - _addClearSelectionListenter:function () { - var doc = document; - domUtils.on(doc, 'mousemove', function (e) { - if (browser.ie && browser.version < 11) - doc.selection.clear(); - else - window.getSelection().removeAllRanges(); - }); - }, - _clearSelection:function () { - var list = ["J_operateBar", "J_colorBar", "J_brushBar", "J_eraserBar", "J_picBoard"]; - for (var i = 0, group; group = list[i++];) { - domUtils.unSelectable($G(group)); - } - }, - - _saveOPerate:function (saveNum) { - var me = this; - if (drawStep.length <= saveNum) { - if(drawStepIndex"); - } - scale.innerHTML = arr.join(""); - return scale; - } - - var rect = [ - //[left, top, width, height] - [1, 1, -1, -1], - [0, 1, 0, -1], - [0, 1, 1, -1], - [1, 0, -1, 0], - [0, 0, 1, 0], - [1, 0, -1, 1], - [0, 0, 0, 1], - [0, 0, 1, 1] - ]; - ScaleBoy.prototype = { - init:function () { - _appendStyle(); - var me = this, - scale = me.dom = _getDom(); - - me.scaleMousemove.fp = me; - domUtils.on(scale, 'mousedown', function (e) { - var target = e.target || e.srcElement; - me.start = {x:e.clientX, y:e.clientY}; - if (target.className.indexOf('hand') != -1) { - me.dir = target.className.replace('hand', ''); - } - domUtils.on(document.body, 'mousemove', me.scaleMousemove); - e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true; - }); - domUtils.on(document.body, 'mouseup', function (e) { - if (me.start) { - domUtils.un(document.body, 'mousemove', me.scaleMousemove); - if (me.moved) { - me.updateScaledElement({position:{x:scale.style.left, y:scale.style.top}, size:{w:scale.style.width, h:scale.style.height}}); - } - delete me.start; - delete me.moved; - delete me.dir; - } - }); - return scale; - }, - startScale:function (objElement) { - var me = this, Idom = me.dom; - - Idom.style.cssText = 'visibility:visible;top:' + objElement.style.top + ';left:' + objElement.style.left + ';width:' + objElement.offsetWidth + 'px;height:' + objElement.offsetHeight + 'px;'; - me.scalingElement = objElement; - }, - updateScaledElement:function (objStyle) { - var cur = this.scalingElement, - pos = objStyle.position, - size = objStyle.size; - if (pos) { - typeof pos.x != 'undefined' && (cur.style.left = pos.x); - typeof pos.y != 'undefined' && (cur.style.top = pos.y); - } - if (size) { - size.w && (cur.style.width = size.w); - size.h && (cur.style.height = size.h); - } - }, - updateStyleByDir:function (dir, offset) { - var me = this, - dom = me.dom, tmp; - - rect['def'] = [1, 1, 0, 0]; - if (rect[dir][0] != 0) { - tmp = parseInt(dom.style.left) + offset.x; - dom.style.left = me._validScaledProp('left', tmp) + 'px'; - } - if (rect[dir][1] != 0) { - tmp = parseInt(dom.style.top) + offset.y; - dom.style.top = me._validScaledProp('top', tmp) + 'px'; - } - if (rect[dir][2] != 0) { - tmp = dom.clientWidth + rect[dir][2] * offset.x; - dom.style.width = me._validScaledProp('width', tmp) + 'px'; - } - if (rect[dir][3] != 0) { - tmp = dom.clientHeight + rect[dir][3] * offset.y; - dom.style.height = me._validScaledProp('height', tmp) + 'px'; - } - if (dir === 'def') { - me.updateScaledElement({position:{x:dom.style.left, y:dom.style.top}}); - } - }, - scaleMousemove:function (e) { - var me = arguments.callee.fp, - start = me.start, - dir = me.dir || 'def', - offset = {x:e.clientX - start.x, y:e.clientY - start.y}; - - me.updateStyleByDir(dir, offset); - arguments.callee.fp.start = {x:e.clientX, y:e.clientY}; - arguments.callee.fp.moved = 1; - }, - _validScaledProp:function (prop, value) { - var ele = this.dom, - wrap = $G("J_picBoard"); - - value = isNaN(value) ? 0 : value; - switch (prop) { - case 'left': - return value < 0 ? 0 : (value + ele.clientWidth) > wrap.clientWidth ? wrap.clientWidth - ele.clientWidth : value; - case 'top': - return value < 0 ? 0 : (value + ele.clientHeight) > wrap.clientHeight ? wrap.clientHeight - ele.clientHeight : value; - case 'width': - return value <= 0 ? 1 : (value + ele.offsetLeft) > wrap.clientWidth ? wrap.clientWidth - ele.offsetLeft : value; - case 'height': - return value <= 0 ? 1 : (value + ele.offsetTop) > wrap.clientHeight ? wrap.clientHeight - ele.offsetTop : value; - } - } - }; -})(); - -//后台回调 -function ue_callback(url, state) { - var doc = document, - picBorard = $G("J_picBoard"), - img = doc.createElement("img"); - - //图片缩放 - function scale(img, max, oWidth, oHeight) { - var width = 0, height = 0, percent, ow = img.width || oWidth, oh = img.height || oHeight; - if (ow > max || oh > max) { - if (ow >= oh) { - if (width = ow - max) { - percent = (width / ow).toFixed(2); - img.height = oh - oh * percent; - img.width = max; - } - } else { - if (height = oh - max) { - percent = (height / oh).toFixed(2); - img.width = ow - ow * percent; - img.height = max; - } - } - } - } - - //移除遮罩层 - removeMaskLayer(); - //状态响应 - if (state == "SUCCESS") { - picBorard.innerHTML = ""; - img.onload = function () { - scale(this, 300); - picBorard.appendChild(img); - - var obj = new scrawl(); - obj.btn2Highlight("J_removeImg"); - //trace 2457 - obj.btn2Highlight("J_sacleBoard"); - }; - img.src = url; - } else { - alert(state); - } -} -//去掉遮罩层 -function removeMaskLayer() { - var maskLayer = $G("J_maskLayer"); - maskLayer.className = "maskLayerNull"; - maskLayer.innerHTML = ""; - dialog.buttons[0].setDisabled(false); -} -//添加遮罩层 -function addMaskLayer(html) { - var maskLayer = $G("J_maskLayer"); - dialog.buttons[0].setDisabled(true); - maskLayer.className = "maskLayer"; - maskLayer.innerHTML = html; -} -//执行确认按钮方法 -function exec(scrawlObj) { - if (scrawlObj.isScrawl) { - addMaskLayer(lang.scrawlUpLoading); - var base64 = scrawlObj.getCanvasData(); - if (!!base64) { - var options = { - timeout:100000, - onsuccess:function (xhr) { - if (!scrawlObj.isCancelScrawl) { - var responseObj; - responseObj = eval("(" + xhr.responseText + ")"); - if (responseObj.state == "SUCCESS") { - var imgObj = {}, - url = editor.options.scrawlUrlPrefix + responseObj.url; - imgObj.src = url; - imgObj._src = url; - imgObj.alt = responseObj.original || ''; - editor.execCommand("insertImage", imgObj); - dialog.close(); - } else { - alert(responseObj.state); - } - - } - }, - onerror:function () { - alert(lang.imageError); - dialog.close(); - } - }; - options[editor.getOpt('scrawlFieldName')] = base64; - - var actionUrl = editor.getActionUrl(editor.getOpt('scrawlActionName')), - params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', - url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + params); - ajax.request(url, options); - } - } else { - addMaskLayer(lang.noScarwl + "   "); - } -} - diff --git a/public/ueditor/dialogs/searchreplace/searchreplace.html b/public/ueditor/dialogs/searchreplace/searchreplace.html deleted file mode 100644 index b91f190..0000000 --- a/public/ueditor/dialogs/searchreplace/searchreplace.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    :
    - -
    - - -
    -   -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    - -
    - - - - -
    -   -
    - -
    -
    -
    -
    - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/searchreplace/searchreplace.js b/public/ueditor/dialogs/searchreplace/searchreplace.js deleted file mode 100644 index 02fa46c..0000000 --- a/public/ueditor/dialogs/searchreplace/searchreplace.js +++ /dev/null @@ -1,170 +0,0 @@ -/** - * Created with JetBrains PhpStorm. - * User: xuheng - * Date: 12-9-26 - * Time: 下午12:29 - * To change this template use File | Settings | File Templates. - */ - -//清空上次查选的痕迹 -editor.firstForSR = 0; -editor.currentRangeForSR = null; -//给tab注册切换事件 -/** - * tab点击处理事件 - * @param tabHeads - * @param tabBodys - * @param obj - */ -function clickHandler( tabHeads,tabBodys,obj ) { - //head样式更改 - for ( var k = 0, len = tabHeads.length; k < len; k++ ) { - tabHeads[k].className = ""; - } - obj.className = "focus"; - //body显隐 - var tabSrc = obj.getAttribute( "tabSrc" ); - for ( var j = 0, length = tabBodys.length; j < length; j++ ) { - var body = tabBodys[j], - id = body.getAttribute( "id" ); - if ( id != tabSrc ) { - body.style.zIndex = 1; - } else { - body.style.zIndex = 200; - } - } - -} - -/** - * TAB切换 - * @param tabParentId tab的父节点ID或者对象本身 - */ -function switchTab( tabParentId ) { - var tabElements = $G( tabParentId ).children, - tabHeads = tabElements[0].children, - tabBodys = tabElements[1].children; - - for ( var i = 0, length = tabHeads.length; i < length; i++ ) { - var head = tabHeads[i]; - if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head ); - head.onclick = function () { - clickHandler(tabHeads,tabBodys,this); - } - } -} -$G('searchtab').onmousedown = function(){ - $G('search-msg').innerHTML = ''; - $G('replace-msg').innerHTML = '' -} -//是否区分大小写 -function getMatchCase(id) { - return $G(id).checked ? true : false; -} -//查找 -$G("nextFindBtn").onclick = function (txt, dir, mcase) { - var findtxt = $G("findtxt").value, obj; - if (!findtxt) { - return false; - } - obj = { - searchStr:findtxt, - dir:1, - casesensitive:getMatchCase("matchCase") - }; - if (!frCommond(obj)) { - var bk = editor.selection.getRange().createBookmark(); - $G('search-msg').innerHTML = lang.getEnd; - editor.selection.getRange().moveToBookmark(bk).select(); - - - } -}; -$G("nextReplaceBtn").onclick = function (txt, dir, mcase) { - var findtxt = $G("findtxt1").value, obj; - if (!findtxt) { - return false; - } - obj = { - searchStr:findtxt, - dir:1, - casesensitive:getMatchCase("matchCase1") - }; - frCommond(obj); -}; -$G("preFindBtn").onclick = function (txt, dir, mcase) { - var findtxt = $G("findtxt").value, obj; - if (!findtxt) { - return false; - } - obj = { - searchStr:findtxt, - dir:-1, - casesensitive:getMatchCase("matchCase") - }; - if (!frCommond(obj)) { - $G('search-msg').innerHTML = lang.getStart; - } -}; -$G("preReplaceBtn").onclick = function (txt, dir, mcase) { - var findtxt = $G("findtxt1").value, obj; - if (!findtxt) { - return false; - } - obj = { - searchStr:findtxt, - dir:-1, - casesensitive:getMatchCase("matchCase1") - }; - frCommond(obj); -}; -//替换 -$G("repalceBtn").onclick = function () { - editor.trigger('clearLastSearchResult'); - var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, - replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, ""); - if (!findtxt) { - return false; - } - if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) { - return false; - } - obj = { - searchStr:findtxt, - dir:1, - casesensitive:getMatchCase("matchCase1"), - replaceStr:replacetxt - }; - frCommond(obj); -}; -//全部替换 -$G("repalceAllBtn").onclick = function () { - var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, - replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, ""); - if (!findtxt) { - return false; - } - if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) { - return false; - } - obj = { - searchStr:findtxt, - casesensitive:getMatchCase("matchCase1"), - replaceStr:replacetxt, - all:true - }; - var num = frCommond(obj); - if (num) { - $G('replace-msg').innerHTML = lang.countMsg.replace("{#count}", num); - } -}; -//执行 -var frCommond = function (obj) { - return editor.execCommand("searchreplace", obj); -}; -switchTab("searchtab"); - - -dialog.onclose = function(){ - editor.trigger('clearLastSearchResult') -}; \ No newline at end of file diff --git a/public/ueditor/dialogs/snapscreen/snapscreen.html b/public/ueditor/dialogs/snapscreen/snapscreen.html deleted file mode 100644 index cf8209e..0000000 --- a/public/ueditor/dialogs/snapscreen/snapscreen.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - -
    -

    -
    -
    -
    -
    -
    -
    - - \ No newline at end of file diff --git a/public/ueditor/dialogs/spechars/spechars.html b/public/ueditor/dialogs/spechars/spechars.html deleted file mode 100644 index 0b5c416..0000000 --- a/public/ueditor/dialogs/spechars/spechars.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - -
    -
    -
    - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/spechars/spechars.js b/public/ueditor/dialogs/spechars/spechars.js deleted file mode 100644 index f4c155e..0000000 --- a/public/ueditor/dialogs/spechars/spechars.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Created with JetBrains PhpStorm. - * User: xuheng - * Date: 12-9-26 - * Time: 下午1:09 - * To change this template use File | Settings | File Templates. - */ -var charsContent = [ - { name:"tsfh", title:lang.tsfh, content:toArray("、,。,·,ˉ,ˇ,¨,〃,々,—,~,‖,…,‘,’,“,”,〔,〕,〈,〉,《,》,「,」,『,』,〖,〗,【,】,±,×,÷,∶,∧,∨,∑,∏,∪,∩,∈,∷,√,⊥,∥,∠,⌒,⊙,∫,∮,≡,≌,≈,∽,∝,≠,≮,≯,≤,≥,∞,∵,∴,♂,♀,°,′,″,℃,$,¤,¢,£,‰,§,№,☆,★,○,●,◎,◇,◆,□,■,△,▲,※,→,←,↑,↓,〓,〡,〢,〣,〤,〥,〦,〧,〨,〩,㊣,㎎,㎏,㎜,㎝,㎞,㎡,㏄,㏎,㏑,㏒,㏕,︰,¬,¦,℡,ˊ,ˋ,˙,–,―,‥,‵,℅,℉,↖,↗,↘,↙,∕,∟,∣,≒,≦,≧,⊿,═,║,╒,╓,╔,╕,╖,╗,╘,╙,╚,╛,╜,╝,╞,╟,╠,╡,╢,╣,╤,╥,╦,╧,╨,╩,╪,╫,╬,╭,╮,╯,╰,╱,╲,╳,▁,▂,▃,▄,▅,▆,▇,�,█,▉,▊,▋,▌,▍,▎,▏,▓,▔,▕,▼,▽,◢,◣,◤,◥,☉,⊕,〒,〝,〞")}, - { name:"lmsz", title:lang.lmsz, content:toArray("ⅰ,ⅱ,ⅲ,ⅳ,ⅴ,ⅵ,ⅶ,ⅷ,ⅸ,ⅹ,Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ,Ⅶ,Ⅷ,Ⅸ,Ⅹ,Ⅺ,Ⅻ")}, - { name:"szfh", title:lang.szfh, content:toArray("⒈,⒉,⒊,⒋,⒌,⒍,⒎,⒏,⒐,⒑,⒒,⒓,⒔,⒕,⒖,⒗,⒘,⒙,⒚,⒛,⑴,⑵,⑶,⑷,⑸,⑹,⑺,⑻,⑼,⑽,⑾,⑿,⒀,⒁,⒂,⒃,⒄,⒅,⒆,⒇,①,②,③,④,⑤,⑥,⑦,⑧,⑨,⑩,㈠,㈡,㈢,㈣,㈤,㈥,㈦,㈧,㈨,㈩")}, - { name:"rwfh", title:lang.rwfh, content:toArray("ぁ,あ,ぃ,い,ぅ,う,ぇ,え,ぉ,お,か,が,き,ぎ,く,ぐ,け,げ,こ,ご,さ,ざ,し,じ,す,ず,せ,ぜ,そ,ぞ,た,だ,ち,ぢ,っ,つ,づ,て,で,と,ど,な,に,ぬ,ね,の,は,ば,ぱ,ひ,び,ぴ,ふ,ぶ,ぷ,へ,べ,ぺ,ほ,ぼ,ぽ,ま,み,む,め,も,ゃ,や,ゅ,ゆ,ょ,よ,ら,り,る,れ,ろ,ゎ,わ,ゐ,ゑ,を,ん,ァ,ア,ィ,イ,ゥ,ウ,ェ,エ,ォ,オ,カ,ガ,キ,ギ,ク,グ,ケ,ゲ,コ,ゴ,サ,ザ,シ,ジ,ス,ズ,セ,ゼ,ソ,ゾ,タ,ダ,チ,ヂ,ッ,ツ,ヅ,テ,デ,ト,ド,ナ,ニ,ヌ,ネ,ノ,ハ,バ,パ,ヒ,ビ,ピ,フ,ブ,プ,ヘ,ベ,ペ,ホ,ボ,ポ,マ,ミ,ム,メ,モ,ャ,ヤ,ュ,ユ,ョ,ヨ,ラ,リ,ル,レ,ロ,ヮ,ワ,ヰ,ヱ,ヲ,ン,ヴ,ヵ,ヶ")}, - { name:"xlzm", title:lang.xlzm, content:toArray("Α,Β,Γ,Δ,Ε,Ζ,Η,Θ,Ι,Κ,Λ,Μ,Ν,Ξ,Ο,Π,Ρ,Σ,Τ,Υ,Φ,Χ,Ψ,Ω,α,β,γ,δ,ε,ζ,η,θ,ι,κ,λ,μ,ν,ξ,ο,π,ρ,σ,τ,υ,φ,χ,ψ,ω")}, - { name:"ewzm", title:lang.ewzm, content:toArray("А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я,а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я")}, - { name:"pyzm", title:lang.pyzm, content:toArray("ā,á,ǎ,à,ē,é,ě,è,ī,í,ǐ,ì,ō,ó,ǒ,ò,ū,ú,ǔ,ù,ǖ,ǘ,ǚ,ǜ,ü")}, - { name:"yyyb", title:lang.yyyb, content:toArray("i:,i,e,æ,ʌ,ə:,ə,u:,u,ɔ:,ɔ,a:,ei,ai,ɔi,əu,au,iə,εə,uə,p,t,k,b,d,g,f,s,ʃ,θ,h,v,z,ʒ,ð,tʃ,tr,ts,dʒ,dr,dz,m,n,ŋ,l,r,w,j,")}, - { name:"zyzf", title:lang.zyzf, content:toArray("ㄅ,ㄆ,ㄇ,ㄈ,ㄉ,ㄊ,ㄋ,ㄌ,ㄍ,ㄎ,ㄏ,ㄐ,ㄑ,ㄒ,ㄓ,ㄔ,ㄕ,ㄖ,ㄗ,ㄘ,ㄙ,ㄚ,ㄛ,ㄜ,ㄝ,ㄞ,ㄟ,ㄠ,ㄡ,ㄢ,ㄣ,ㄤ,ㄥ,ㄦ,ㄧ,ㄨ")} -]; -(function createTab(content) { - for (var i = 0, ci; ci = content[i++];) { - var span = document.createElement("span"); - span.setAttribute("tabSrc", ci.name); - span.innerHTML = ci.title; - if (i == 1)span.className = "focus"; - domUtils.on(span, "click", function () { - var tmps = $G("tabHeads").children; - for (var k = 0, sk; sk = tmps[k++];) { - sk.className = ""; - } - tmps = $G("tabBodys").children; - for (var k = 0, sk; sk = tmps[k++];) { - sk.style.display = "none"; - } - this.className = "focus"; - $G(this.getAttribute("tabSrc")).style.display = ""; - }); - $G("tabHeads").appendChild(span); - domUtils.insertAfter(span, document.createTextNode("\n")); - var div = document.createElement("div"); - div.id = ci.name; - div.style.display = (i == 1) ? "" : "none"; - var cons = ci.content; - for (var j = 0, con; con = cons[j++];) { - var charSpan = document.createElement("span"); - charSpan.innerHTML = con; - domUtils.on(charSpan, "click", function () { - editor.execCommand("insertHTML", this.innerHTML); - dialog.close(); - }); - div.appendChild(charSpan); - } - $G("tabBodys").appendChild(div); - } -})(charsContent); -function toArray(str) { - return str.split(","); -} diff --git a/public/ueditor/dialogs/table/dragicon.png b/public/ueditor/dialogs/table/dragicon.png deleted file mode 100644 index f26203bf3f0026891fc8374f109724a69eb38b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmV-00nh%4P)p00001b5ch_0Itp) z=>Px#=t)FDR47x8lCciKP#A@KY2U+Oz-BN?3|$yZoaJ-YrY6>w+wB>;0|AN6r2r z_B6y2bQp%1X$_7DP`QFiq0z;_c3wk<3Lh&$^V;p?#e$PywxH71VT^XlHZ=jml#@|NVkRMLVaC0F_%) zcB=vWe$h}nSjAV$|0D - - - - - - - -
    -
    -
    -

    -
      -
    • - -
    • -
    • - -
    • -
    -
      -
    • - -
    • -
    • - -
    • -
    -
    -
    -
    -

    -
      -
    • - -
    • -
    • - -
    • -
    -
    -
    -
    -

    -
      -
    • - - -
    • -
    -
    -
    -
    -
    -
    -

    -
    -
    -
    -
    -
    - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/table/edittable.js b/public/ueditor/dialogs/table/edittable.js deleted file mode 100644 index 11dbee7..0000000 --- a/public/ueditor/dialogs/table/edittable.js +++ /dev/null @@ -1,237 +0,0 @@ -/** - * Created with JetBrains PhpStorm. - * User: xuheng - * Date: 12-12-19 - * Time: 下午4:55 - * To change this template use File | Settings | File Templates. - */ -(function () { - var title = $G("J_title"), - titleCol = $G("J_titleCol"), - caption = $G("J_caption"), - sorttable = $G("J_sorttable"), - autoSizeContent = $G("J_autoSizeContent"), - autoSizePage = $G("J_autoSizePage"), - tone = $G("J_tone"), - me, - preview = $G("J_preview"); - - var editTable = function () { - me = this; - me.init(); - }; - editTable.prototype = { - init:function () { - var colorPiker = new UE.ui.ColorPicker({ - editor:editor - }), - colorPop = new UE.ui.Popup({ - editor:editor, - content:colorPiker - }); - - title.checked = editor.queryCommandState("inserttitle") == -1; - titleCol.checked = editor.queryCommandState("inserttitlecol") == -1; - caption.checked = editor.queryCommandState("insertcaption") == -1; - sorttable.checked = editor.queryCommandState("enablesort") == 1; - - var enablesortState = editor.queryCommandState("enablesort"), - disablesortState = editor.queryCommandState("disablesort"); - - sorttable.checked = !!(enablesortState < 0 && disablesortState >=0); - sorttable.disabled = !!(enablesortState < 0 && disablesortState < 0); - sorttable.title = enablesortState < 0 && disablesortState < 0 ? lang.errorMsg:''; - - me.createTable(title.checked, titleCol.checked, caption.checked); - me.setAutoSize(); - me.setColor(me.getColor()); - - domUtils.on(title, "click", me.titleHanler); - domUtils.on(titleCol, "click", me.titleColHanler); - domUtils.on(caption, "click", me.captionHanler); - domUtils.on(sorttable, "click", me.sorttableHanler); - domUtils.on(autoSizeContent, "click", me.autoSizeContentHanler); - domUtils.on(autoSizePage, "click", me.autoSizePageHanler); - - domUtils.on(tone, "click", function () { - colorPop.showAnchor(tone); - }); - domUtils.on(document, 'mousedown', function () { - colorPop.hide(); - }); - colorPiker.addListener("pickcolor", function () { - me.setColor(arguments[1]); - colorPop.hide(); - }); - colorPiker.addListener("picknocolor", function () { - me.setColor(""); - colorPop.hide(); - }); - }, - - createTable:function (hasTitle, hasTitleCol, hasCaption) { - var arr = [], - sortSpan = '^'; - arr.push(""); - if (hasCaption) { - arr.push("") - } - if (hasTitle) { - arr.push(""); - if(hasTitleCol) { arr.push(""); } - for (var j = 0; j < 5; j++) { - arr.push(""); - } - arr.push(""); - } - for (var i = 0; i < 6; i++) { - arr.push(""); - if(hasTitleCol) { arr.push("") } - for (var k = 0; k < 5; k++) { - arr.push("") - } - arr.push(""); - } - arr.push("
    " + lang.captionName + "
    " + lang.titleName + "" + lang.titleName + "
    " + lang.titleName + "" + lang.cellsName + "
    "); - preview.innerHTML = arr.join(""); - this.updateSortSpan(); - }, - titleHanler:function () { - var example = $G("J_example"), - frg=document.createDocumentFragment(), - color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"), - colCount = example.rows[0].children.length; - - if (title.checked) { - example.insertRow(0); - for (var i = 0, node; i < colCount; i++) { - node = document.createElement("th"); - node.innerHTML = lang.titleName; - frg.appendChild(node); - } - example.rows[0].appendChild(frg); - - } else { - domUtils.remove(example.rows[0]); - } - me.setColor(color); - me.updateSortSpan(); - }, - titleColHanler:function () { - var example = $G("J_example"), - color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"), - colArr = example.rows, - colCount = colArr.length; - - if (titleCol.checked) { - for (var i = 0, node; i < colCount; i++) { - node = document.createElement("th"); - node.innerHTML = lang.titleName; - colArr[i].insertBefore(node, colArr[i].children[0]); - } - } else { - for (var i = 0; i < colCount; i++) { - domUtils.remove(colArr[i].children[0]); - } - } - me.setColor(color); - me.updateSortSpan(); - }, - captionHanler:function () { - var example = $G("J_example"); - if (caption.checked) { - var row = document.createElement('caption'); - row.innerHTML = lang.captionName; - example.insertBefore(row, example.firstChild); - } else { - domUtils.remove(domUtils.getElementsByTagName(example, 'caption')[0]); - } - }, - sorttableHanler:function(){ - me.updateSortSpan(); - }, - autoSizeContentHanler:function () { - var example = $G("J_example"); - example.removeAttribute("width"); - }, - autoSizePageHanler:function () { - var example = $G("J_example"); - var tds = example.getElementsByTagName(example, "td"); - utils.each(tds, function (td) { - td.removeAttribute("width"); - }); - example.setAttribute('width', '100%'); - }, - updateSortSpan: function(){ - var example = $G("J_example"), - row = example.rows[0]; - - var spans = domUtils.getElementsByTagName(example,"span"); - utils.each(spans,function(span){ - span.parentNode.removeChild(span); - }); - if (sorttable.checked) { - utils.each(row.cells, function(cell, i){ - var span = document.createElement("span"); - span.innerHTML = "^"; - cell.appendChild(span); - }); - } - }, - getColor:function () { - var start = editor.selection.getStart(), color, - cell = domUtils.findParentByTagName(start, ["td", "th", "caption"], true); - color = cell && domUtils.getComputedStyle(cell, "border-color"); - if (!color) color = "#DDDDDD"; - return color; - }, - setColor:function (color) { - var example = $G("J_example"), - arr = domUtils.getElementsByTagName(example, "td").concat( - domUtils.getElementsByTagName(example, "th"), - domUtils.getElementsByTagName(example, "caption") - ); - - tone.value = color; - utils.each(arr, function (node) { - node.style.borderColor = color; - }); - - }, - setAutoSize:function () { - var me = this; - autoSizePage.checked = true; - me.autoSizePageHanler(); - } - }; - - new editTable; - - dialog.onok = function () { - editor.__hasEnterExecCommand = true; - - var checks = { - title:"inserttitle deletetitle", - titleCol:"inserttitlecol deletetitlecol", - caption:"insertcaption deletecaption", - sorttable:"enablesort disablesort" - }; - editor.fireEvent('saveScene'); - for(var i in checks){ - var cmds = checks[i].split(" "), - input = $G("J_" + i); - if(input["checked"]){ - editor.queryCommandState(cmds[0])!=-1 &&editor.execCommand(cmds[0]); - }else{ - editor.queryCommandState(cmds[1])!=-1 &&editor.execCommand(cmds[1]); - } - } - - editor.execCommand("edittable", tone.value); - autoSizeContent.checked ?editor.execCommand('adaptbytext') : ""; - autoSizePage.checked ? editor.execCommand("adaptbywindow") : ""; - editor.fireEvent('saveScene'); - - editor.__hasEnterExecCommand = false; - }; -})(); \ No newline at end of file diff --git a/public/ueditor/dialogs/table/edittd.html b/public/ueditor/dialogs/table/edittd.html deleted file mode 100644 index 49a52f7..0000000 --- a/public/ueditor/dialogs/table/edittd.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - -
    - - -
    - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/table/edittip.html b/public/ueditor/dialogs/table/edittip.html deleted file mode 100644 index 954f7bb..0000000 --- a/public/ueditor/dialogs/table/edittip.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - 表格删除提示 - - - - -
    -
    - -
    -
    - -
    -
    - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/template/config.js b/public/ueditor/dialogs/template/config.js deleted file mode 100644 index 417b8f7..0000000 --- a/public/ueditor/dialogs/template/config.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Created with JetBrains PhpStorm. - * User: xuheng - * Date: 12-8-8 - * Time: 下午2:00 - * To change this template use File | Settings | File Templates. - */ -var templates = [ - { - "pre":"pre0.png", - 'title':lang.blank, - 'preHtml':'

     欢迎使用UEditor!

    ', - "html":'

    欢迎使用UEditor!

    ' - - }, - { - "pre":"pre1.png", - 'title':lang.blog, - 'preHtml':'

    深入理解Range

    UEditor二次开发

    什么是Range

    对于“插入”选项卡上的库,在设计时都充分考虑了其中的项与文档整体外观的协调性。


    Range能干什么

    在“开始”选项卡上,通过从快速样式库中为所选文本选择一种外观,您可以方便地更改文档中所选文本的格式。

    ', - "html":'

    [键入文档标题]

    [键入文档副标题]

    [标题 1]

    对于“插入”选项卡上的库,在设计时都充分考虑了其中的项与文档整体外观的协调性。 您可以使用这些库来插入表格、页眉、页脚、列表、封面以及其他文档构建基块。 您创建的图片、图表或关系图也将与当前的文档外观协调一致。

    [标题 2]

    在“开始”选项卡上,通过从快速样式库中为所选文本选择一种外观,您可以方便地更改文档中所选文本的格式。 您还可以使用“开始”选项卡上的其他控件来直接设置文本格式。大多数控件都允许您选择是使用当前主题外观,还是使用某种直接指定的格式。

    [标题 3]

    对于“插入”选项卡上的库,在设计时都充分考虑了其中的项与文档整体外观的协调性。 您可以使用这些库来插入表格、页眉、页脚、列表、封面以及其他文档构建基块。 您创建的图片、图表或关系图也将与当前的文档外观协调一致。


    ' - - }, - { - "pre":"pre2.png", - 'title':lang.resume, - 'preHtml':'

    WEB前端开发简历


    联系电话:[键入您的电话]

    电子邮件:[键入您的电子邮件地址]

    家庭住址:[键入您的地址]

    目标职位

    WEB前端研发工程师

    学历

    1. [起止时间] [学校名称] [所学专业] [所获学位]

    工作经验


    ', - "html":'

    [此处键入简历标题]


    【此处插入照片】


    联系电话:[键入您的电话]


    电子邮件:[键入您的电子邮件地址]


    家庭住址:[键入您的地址]


    目标职位

    [此处键入您的期望职位]

    学历

    1. [键入起止时间] [键入学校名称] [键入所学专业] [键入所获学位]

    2. [键入起止时间] [键入学校名称] [键入所学专业] [键入所获学位]

    工作经验

    1. [键入起止时间] [键入公司名称] [键入职位名称]

      1. [键入负责项目] [键入项目简介]

      2. [键入负责项目] [键入项目简介]

    2. [键入起止时间] [键入公司名称] [键入职位名称]

      1. [键入负责项目] [键入项目简介]

    掌握技能

     [这里可以键入您所掌握的技能]

    ' - - }, - { - "pre":"pre3.png", - 'title':lang.richText, - 'preHtml':'

    [此处键入文章标题]

    图文混排方法

    图片居左,文字围绕图片排版

    方法:在文字前面插入图片,设置居左对齐,然后即可在右边输入多行文


    还有没有什么其他的环绕方式呢?这里是居右环绕


    欢迎大家多多尝试,为UEditor提供更多高质量模板!

    ', - "html":'


    [此处键入文章标题]

    图文混排方法

    1. 图片居左,文字围绕图片排版

    方法:在文字前面插入图片,设置居左对齐,然后即可在右边输入多行文本


    2. 图片居右,文字围绕图片排版

    方法:在文字前面插入图片,设置居右对齐,然后即可在左边输入多行文本


    3. 图片居中环绕排版

    方法:亲,这个真心没有办法。。。



    还有没有什么其他的环绕方式呢?这里是居右环绕


    欢迎大家多多尝试,为UEditor提供更多高质量模板!


    占位


    占位


    占位


    占位


    占位



    ' - }, - { - "pre":"pre4.png", - 'title':lang.sciPapers, - 'preHtml':'

    [键入文章标题]

    摘要:这里可以输入很长很长很长很长很长很长很长很长很差的摘要

    标题 1

    这里可以输入很多内容,可以图文混排,可以有列表等。

    标题 2

    1. 列表 1

    2. 列表 2

      1. 多级列表 1

      2. 多级列表 2

    3. 列表 3

    标题 3

    来个文字图文混排的


    ', - 'html':'

    [键入文章标题]

    摘要:这里可以输入很长很长很长很长很长很长很长很长很差的摘要

    标题 1

    这里可以输入很多内容,可以图文混排,可以有列表等。

    标题 2

    来个列表瞅瞅:

    1. 列表 1

    2. 列表 2

      1. 多级列表 1

      2. 多级列表 2

    3. 列表 3

    标题 3

    来个文字图文混排的

    这里可以多行

    右边是图片

    绝对没有问题的,不信你也可以试试看


    ' - } -]; \ No newline at end of file diff --git a/public/ueditor/dialogs/template/images/bg.gif b/public/ueditor/dialogs/template/images/bg.gif deleted file mode 100644 index 8c1d10ad1933e02086e8a1b3c807c7d1e57d51db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84 zcmZ?wbhEHb6kw2GXkcLY|NsA)GiMZkvM_*v4u}BBFfeKN|6H_V+Po~-c70vN1t=1+A%PQ29uxwx4>qZSNmg$Vo0WSSm;`Hl{Ww|6H_V+Po~-c6&>|-aSW-r_2!NtU#o%$i-Y0&su(f8j@G?~f`NtGer^@M zrYdIdrP)2_bk~ELr2i)^H(PkDy?QdpIbuVC@BX&$s!L5iRYqm|O_N&n@I;(N<+i7f+;9Z? Phk?P<)z4*}Q$iB}^elK+ diff --git a/public/ueditor/dialogs/template/images/pre2.png b/public/ueditor/dialogs/template/images/pre2.png deleted file mode 100644 index 5a55672c1f9c4d41d5b5cf52d76bb2b7e7c6b186..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^DM0MT!2~3?K3Qf5q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffi(Px;TbZ+h>KHoj_IVWAxIr&Fiabo)3x94Up%M35SEe^0#X9dS;F-9{&3Ljos=IM}2LB&w>e?K^KZ|9tHA z)W~h}eTfo>R&7s^?LYqdE7+t-Dv4L4H{``lKYf(JYIB0^>jrz9Khf>{)o!mlw-~mt za!)h6<9vO9zW09 gTfg@IqFVdQ&MBb@0QJAA?EnA( diff --git a/public/ueditor/dialogs/template/images/pre3.png b/public/ueditor/dialogs/template/images/pre3.png deleted file mode 100644 index d852d29f13bcf743e15df824901ab568123a5aae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmVTEH>0M4JV5-1QxJ>b$K`ZPMW6ena#ScoGi+aGE}QBI9b2~7O)VofCVgI z0Sj2@r|V8tRYg%8l35(bVHm0eOOPtd@{r7;D7wSi^O|UT7k&b(?|avE4}m2@pKY0^ zX8{XXz`D@ra0V&khG!6NNY4Tm0v50s9T*)L9q3sISir&!aYH5D@CmFqjy=yiBr_3O zu`P1E)qr;HnlAuCCeD2n8T2!dey#!;npC;SpUiv|xYU?E`rwKTr@$H|hS bPXPu1`Qm#ITgjGb00000NkvXXu0mjf8+_C8 diff --git a/public/ueditor/dialogs/template/images/pre4.png b/public/ueditor/dialogs/template/images/pre4.png deleted file mode 100644 index 0d7bc72ab99fe2c0ed9de1d89fd1c3e82ac3fd43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^DM0MT!2~3?K3Qf5q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfeL+x;TbZ+5xOQzYV@t-I~V=Oc$U@%9?>h?uf)>*!tD zz9*sh?!vZ&M%HQV5wX`#zTA@g`shVPPoZs!AO#y_jv5_v2~@eKa{lwdV71lh?Z-1u+JRxq;OXk;vd$@?2>^GKp!om* diff --git a/public/ueditor/dialogs/template/template.css b/public/ueditor/dialogs/template/template.css deleted file mode 100644 index 6c1608d..0000000 --- a/public/ueditor/dialogs/template/template.css +++ /dev/null @@ -1,18 +0,0 @@ -.wrap{ padding: 5px;font-size: 14px;} -.left{width:425px;float: left;} -.right{width:160px;border: 1px solid #ccc;float: right;padding: 5px;margin-right: 5px;} -.right .pre{height: 332px;overflow-y: auto;} -.right .preitem{border: white 1px solid;margin: 5px 0;padding: 2px 0;} -.right .preitem:hover{background-color: lemonChiffon;cursor: pointer;border: #ccc 1px solid;} -.right .preitem img{display: block;margin: 0 auto;width:100px;} -.clear{clear: both;} -.top{height:26px;line-height: 26px;padding: 5px;} -.bottom{height:320px;width:100%;margin: 0 auto;} -.transparent{ background: url("images/bg.gif") repeat;} -.bottom table tr td{border:1px dashed #ccc;} -#colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;} -.border_style1{padding:2px;border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;} -p{margin: 5px 0} -table{clear:both;margin-bottom:10px;border-collapse:collapse;word-break:break-all;} -li{clear:both} -ol{padding-left:40px; } \ No newline at end of file diff --git a/public/ueditor/dialogs/template/template.html b/public/ueditor/dialogs/template/template.html deleted file mode 100644 index d9903a4..0000000 --- a/public/ueditor/dialogs/template/template.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    - - - - diff --git a/public/ueditor/dialogs/template/template.js b/public/ueditor/dialogs/template/template.js deleted file mode 100644 index 80a334b..0000000 --- a/public/ueditor/dialogs/template/template.js +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Created with JetBrains PhpStorm. - * User: xuheng - * Date: 12-8-8 - * Time: 下午2:09 - * To change this template use File | Settings | File Templates. - */ -(function () { - var me = editor, - preview = $G( "preview" ), - preitem = $G( "preitem" ), - tmps = templates, - currentTmp; - var initPre = function () { - var str = ""; - for ( var i = 0, tmp; tmp = tmps[i++]; ) { - str += '
    '; - } - preitem.innerHTML = str; - }; - var pre = function ( n ) { - var tmp = tmps[n - 1]; - currentTmp = tmp; - clearItem(); - domUtils.setStyles( preitem.childNodes[n - 1], { - "background-color":"lemonChiffon", - "border":"#ccc 1px solid" - } ); - preview.innerHTML = tmp.preHtml ? tmp.preHtml : ""; - }; - var clearItem = function () { - var items = preitem.children; - for ( var i = 0, item; item = items[i++]; ) { - domUtils.setStyles( item, { - "background-color":"", - "border":"white 1px solid" - } ); - } - }; - dialog.onok = function () { - if ( !$G( "issave" ).checked ){ - me.execCommand( "cleardoc" ); - } - var obj = { - html:currentTmp && currentTmp.html - }; - me.execCommand( "template", obj ); - }; - initPre(); - window.pre = pre; - pre(2) - -})(); \ No newline at end of file diff --git a/public/ueditor/dialogs/video/images/bg.png b/public/ueditor/dialogs/video/images/bg.png deleted file mode 100644 index 580be0a01dff4c70c72f78a3f40186660ee8eee0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2810 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 Bm*4;Z diff --git a/public/ueditor/dialogs/video/images/file-icons.gif b/public/ueditor/dialogs/video/images/file-icons.gif deleted file mode 100644 index d8c02c27e242f0584fc6b214f35b4f6d8caec332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20097 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 diff --git a/public/ueditor/dialogs/video/images/file-icons.png b/public/ueditor/dialogs/video/images/file-icons.png deleted file mode 100644 index 3ff82c8c488f53a7aff67fbe39742e3321183eca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44070 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

    *vGSxI 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 diff --git a/public/ueditor/dialogs/video/images/icons.gif b/public/ueditor/dialogs/video/images/icons.gif deleted file mode 100644 index 78459dea7b12ccbeec81d19ecdab22b1658e93b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmZ?wbhEHbbY#$A*vtR||Ns9FJNP^N(4UCIf1{56|NHmvpFe+o|NadW2g{=nia%Kx z85lSjbU>mYGZarn*x(aH@fLZq!wgUiaA+%BrQuMGlI(3v}$4ket=c%G-JG_a6@d zUMtW1Dv_dMk(#;&JDULU);6IIt*+RD80Beh(v#{r8-@JE7rOMyrKZ@`PM+5- zK4PEn@UifH&1a7opNKNDvAy~H((Lt@PiCLrh`sqL^yyzFM}*_N9gV+*y1bvCcd{tw zP+atQ`ojjtR_?nOH&4iCw(0v^v}@~SfpwBi-JHA%0-p_?kEd#ga=ENn_|&M5?L?$c z!i1+jT>6R+ul!uQ+^$n$Hm~o7%Nb0wJ#GK7NE~>4aE?#6+>{R=oUZeJnouMg`B^J) rUi3;Xl^IQMkE|4#X6EZ{`gBG$ultcLuMHMNRKNMR>qv$%6N5DXx{1lO diff --git a/public/ueditor/dialogs/video/images/icons.png b/public/ueditor/dialogs/video/images/icons.png deleted file mode 100644 index 12e4700163ac87fa38ae3d92a2c39d0fb4690fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2678 zcmbVOX;>5I79PY3QcMF;v=DTJ2Cao`KoWu|Aqfy6h(IyOQj#!`2w6-5AW&qm{A@Vn47?^n2aU%})k0wvK3C07Okv?vJ=0$Cz%3={xy zqf~pe&}INI6bOSj3J%+s%9n_++yxtKqDTs(0bujiL@Ada3n@Sz6eAS7+30KQY(Qa@ zo6SyVHl8h|Ljs}qUKtd)*Dr{_HCwk^{ks>P(^% z$>3j?4eU)86-^Cbc>d)J9=X{F6bdO7hf^w*SfwLYB8$NhTwGihIEX|C*up`s5-Yfg z4r00OA_D`G^JPM*LMRb~3yfTzBwpcW14sHc1(B4^{+n1V|4S%XGF&28iX&k0IFV=} zuQ%3mMF8}lF#ge69;A{&xBy5liI?%={fM?*1jE|>yQ2j|I2!79nGoI-ZX83xj~78= z1&iTk1FvACgi%yHfdZ>YcEXd1coKy`pb&{P3YkJCkmxiDok&~c_(v?PIup$-B z5`{!AkVrv#APL;a=JJK&g^3RrHt21>3`izSfTBEQ5)t@DVXE*SA|O%d45o(%o=Ey% znZLzG{XeSV;9zhI* z*~k0Z^G~&Z-c7Xw#U+Dr?Cg&42yA(9*^$glv(nbKwok8JbGh^2fn9ZV^^MlnECDr% zb8Rs8C8IoDeQzNCoR;2}!wUCvRMpV!J9E|5P56qVSBFh4T0Y;2i6|=%vhzEOZ^qncd+?}N_bX*{ znIC?`)c7~$4FQSwzwzCOojcU0H=er9Th5iEB3DIX5_dF9pacXTJI>B~>68qESsvP2=ichF(pvo+k4SU)M~s z3+?sA#l_+!^_(ni$K3hWpYvO@(V>(R7s{iDO6K~mgMjhb#~a;iLRMs%6Morxqp@)+ zJ11v+j#Q)R8@*bY-^NRurddL=!0Kz49SxqGJ&)t#ALNBh9UchxYqVgy=FS2Q)2-GG zBd14SCdB|xCIa#W@6`ozw2tq(*SqVL6m(b4BgGYUcz8H7tm5RY4LjVYtB#yD%WIiL z^ok2`{E08ble_h+YjPxp-p^aDd8axLc2xNv4I44|GNGnPPd*e)aneY2alYqb9*45qn=`wHT|PE1MH)jbikTfENQ(LU04R%o4GX7X;)Jz~k@;+*h@ujN~uo%_H2Vt#)9-SuZ8 zD(`znx@z1*Fc?})4yp3{yMwz%f3p3^_`td}jYgB*JZ<~5{o^*n97-MLN`u1+WP=og zG~N;$va+wQFMG^R<8tg!zbtv)zmj%$*=6~JHf{#PVsN6mpPUoW!COmjHa8>BpFe-| zviJ7wsWesFOw!q|0Zmd!GK3nK4i|YKKmE;d9H9tD?#s9pU3R==t>dhsJ`NpNT6t@# z>bvSrv*xK&x%1B=UMGzB-BC7Vw2ftZ@0X$v&Y840W1O8Q6#!^1lgqc)kL(yB)Le=8 z=T=v)?T?7Ey|HH4%EB;>|Af=wc|K2&Wo#TaFw`-{JDys3#>dB}&&TIO#g8>AVApU$ zt=rXe@74BHRaNmELusolZfLdI$M(mvG@O(Dz4?yH_d|!{EIB#j0Rtzj`|*uIYILgq ztW8PmrPs*^+){hCug`mGw|PnDebMsUP`H=IzTQ4QV{GIFucdh)Jw4siba)hSNtxXH z<2!>gR4NgL3iX`KelH{#*9jjIIct8zmJ`on8|gx>n+4xbJ{ci_{515Ueb%M z_d;CG<=vC_{(f=;@|oKWby1nsZbV)PaPKK@(zYTx7wEe1W*3B_g@$xR${3`=9{n z^jx{5(=Foe&%s~(I@!H?NRo?N70XHp3J$g$LnK`+9O&;)_SPBXc|eDW1uGJ2lQU?? z(3=`x>_4uiufh3t9_?yDa8SXgm1%3n5UqP~Dx+6k>B=WpjNSD0C$ny$TjRe?G_AmISp9T7R8oQndf>2sl4f z*Q+)Z)u<0zW)SlFM=k911pK9m9=J$kKII$NfP=n8d9 z_5R=XSPzxewWHyWjb|>hqTEDBdpM&qYK*jR3}fpN>&FrOc8Nw01u7#{_#oBA;+Qag z98vNrKKd&}z6#EjbJU=q-&*=dcaJp(ISHq7v%_OxSG{XiR(gB)=^pEQUR|QJs_=g6 z0z4yL6Rn)4v zv)yNtNTj)n2&tMFwZy-gMkf07%J%iduo#zV@n|#ww?G(766w)+7*H6YEwCDf^l94~ z;7}6D-rJzj;#%bzP=^|skPXAM8chV7L<(JLH9@*07zg6vEe0fv@uKDu12E{r7#sLX zw$dbl6AcmDF*tgAlt#BbNf)ALtPBT2tso&_gmDP48j}$-XboeG>w?7Gw#{My;}AS4 zj4@$Kt5g9J6oUailNX?4b2xxNz~lt-1p#5{RT#D%e}kcq`%vTaA20xFgN4>cO6(Pmr?|Lb=~ zVY4R91hdqz8BM`-#KR?c*-Du}2?j$rifK?ZdFmEbi71Ym6HyZ&i537pN=RowY#YAg z45boOAZ8pwbg)7i#vnA927?~tOJt%Tb|9C-W%D^4880|QAQ8)WQofuMEEaJjQ(P&k zOEJO-KE>7l%jJEPYYT(XL{yf-m?0I`%Q4glj2{{_%;1I13uFtpaz3HQo7u|*S3iT7 zNv`0dToz%5WqaEHJoVHTkssT1I=IAQI{Gj|s zLrABQMF5Sm8=zAjTlVMGdII}WHeGsvSex8>aPW*~dEN^00n4|U<+`F)0+VSYbQ~WV z?F%~8cr8%bc)qMXNq@X|msi$rCx(p8ocoxvx95hP+ww7tVLzn=Dw}7u}%eHk8iyK22DPh{^tP z;8yePo+0GIiepheWjSKe7i~Cr%%6U%^FRaT+&;zKWI;yr)=Htb`;H~Dtv3>QdomZO zx?7%U#21`hX#U}z&+kj(Dq>0t3fzD1{LAk;=X>(P~1p?y-g&qe1}@0io|o5x=H z{k~yG;hpr+z9nb%C)FKYW7g36$AgPzSF1B*L3P7~x01H!jfYh9zSJYpH-vWSwGS*0 z9k5wfq^Y87ZYAwKPqD=-7B9#ulJ4(Z?b}N2rRFd6tR&}rUQ;I@OUoYF_>%W{SBSG; zOJyu`iA??nIWcheW%Lt#9#xJy!m>d^1>^7*Xzr3{YHG7TH`UuA+7(^ zqh7~c*~n7gqt4%h2dR`(bxr1l4`SNv%@iD(L0l(bA7m-!EPjeb=C diff --git a/public/ueditor/dialogs/video/images/left_focus.jpg b/public/ueditor/dialogs/video/images/left_focus.jpg deleted file mode 100644 index 7886d276dda2e0aecdae22393eac534ed507babf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11423 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 T+mF>-Zi@@LHB9%bmHhD^k7NPf diff --git a/public/ueditor/dialogs/video/images/none_focus.jpg b/public/ueditor/dialogs/video/images/none_focus.jpg deleted file mode 100644 index 7c768dcb47aaa289135afd2bd0e8eb0b6ecb7536..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11546 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 C61Fb@ diff --git a/public/ueditor/dialogs/video/images/right_focus.jpg b/public/ueditor/dialogs/video/images/right_focus.jpg deleted file mode 100644 index 173e10d2d91026c7283566993afb2f3a0267ea40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11334 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 diff --git a/public/ueditor/dialogs/video/images/success.gif b/public/ueditor/dialogs/video/images/success.gif deleted file mode 100644 index 8d4f3112b9d1df2147ed3b67d9736163dedd11e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmZ?wbhEHb)L_tHxXJ(m|NsC0{`>#WKmY&!`~ULm|4%>v3rzVXIOUh{)L$ageu+>2 zB{Acd%*pZwE#>TlQSztb-KopJH+%!_|l-~7Ag*59?a z{_c7B@6_{ur(gU#_wwKE_y6vG`1j=VzZYNsfBgCX$DjXizW@L859r4KV8@~pia%Kx z85k@WbU+dyKQXY~a+p)#p(E9QVoA}-BeJtDJbfs+R&065YSGzOop#2q7tzUUTK@E- z1Qpqe*fm*b*T-Fam_8!ZPiJg?eRTb9ku+5;xVnw>Wr$>Ce}(b zvq{bgY~#~oR8Cparp&0%zbdUw!o*Z6ds70hP&$teqekA&7*16-748@%Mnl0vSqU6+ zOpICr!NSHY@7SLk+rBLP3&#jWP!Xxbb jiN%_{Rv%uKKTTNF#>acL^G5)OtDBg<-IWs>91PX~W`xy? diff --git a/public/ueditor/dialogs/video/images/success.png b/public/ueditor/dialogs/video/images/success.png deleted file mode 100644 index 94f968dc8fd3c7ca8f6cb599d006ef3f23b62c7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#?>2=9ZF3nBND}m`vLFhHXsTY(OatnYqyQCInmZhe+73JqDfIV%MiQ6rPIL(9V zO~LIJBb<8mfsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV;u(vXbonl~MI_~M>7*cWT z%njcRVMh`65C6~Q2yI{K`NBQQh9heAinXE1(JfB=Ul%M;Ke#x6g%L8^f5l4Te zj&BcK1znDIyZS2~eC7F3K+}tVTa$=u*HTU0W4>0#`+Qf%|GkyBERBs#$Y}P@k7@U2 zd#*XsYr~WGeCA1uSK>2HTD)g9mP}Xrpg$+`K&8dx2JS~bjCx(hj5}1;-8qn2_>|?> zp{d+2q{I0hbQS!U-jOut`kSEi+IhQJGmBl4O%se*W?OGKZ0Mp?XmGnRgezL^8vCJ4 z#-ek9(R&%4!h+;oXA~Mtbyie=u#0PDiI#!iX`%2?^@kRL8ma*r6?+*}W4e|_8~J&& z+-+*Ub3{dDcAIF|!MTDz0#78qKYeaeVU$wDOOs3cR=e5FZ*O2e-6xc{Uu=$;!s>*M z>nZ|V>zUp8-oE6^wXjV+_UOvuE&SORr`;3hnBKu~e3rzlY@NRjD|5Ui2t>^@Ve7jy z)2vT>u1vesjJgG`f;l_n`FmbR~b^~{VzXB}7CdU_pt>lO9l=E;X#4<2bZu32r~J^e^%TSISQ_Qm$= z7d{rOo2%^RUGseJkpn9(MWszUQdl(i&RN5PBgZ0d#S7ZipShU3W`>Nsy6C#pCD*KW zyxHW%b?m|pr;dF;L$saa#oaeO`u=>jkXTjl9*cLEvOD!Jdr4ooKJW9gY7?D{e?uM^ z`_}E4`0yR0boA=9>3>WXzUH{&pDfpZ;_2xb=j*pKsk#WyD%J#5t{1#azeB z4SJq8H2*dJVX$xugZHVh{7U`u4@oM|quz5j-hRJi{qwh1k5uNqu`W>3HJG&Y^R}6R z$Gq-HPue$sd${oT*XKO8zN>Oe_%K^bZNm3^-vf7@5X# - - - - - - - - -

    - - - - - - - - - - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/video/video.js b/public/ueditor/dialogs/video/video.js deleted file mode 100644 index 681a945..0000000 --- a/public/ueditor/dialogs/video/video.js +++ /dev/null @@ -1,791 +0,0 @@ -/** - * Created by JetBrains PhpStorm. - * User: taoqili - * Date: 12-2-20 - * Time: 上午11:19 - * To change this template use File | Settings | File Templates. - */ - -(function(){ - - var video = {}, - uploadVideoList = [], - isModifyUploadVideo = false, - uploadFile; - - window.onload = function(){ - $focus($G("videoUrl")); - initTabs(); - initVideo(); - initUpload(); - }; - - /* 初始化tab标签 */ - function initTabs(){ - var tabs = $G('tabHeads').children; - for (var i = 0; i < tabs.length; i++) { - domUtils.on(tabs[i], "click", function (e) { - var j, bodyId, target = e.target || e.srcElement; - for (j = 0; j < tabs.length; j++) { - bodyId = tabs[j].getAttribute('data-content-id'); - if(tabs[j] == target){ - domUtils.addClass(tabs[j], 'focus'); - domUtils.addClass($G(bodyId), 'focus'); - }else { - domUtils.removeClasses(tabs[j], 'focus'); - domUtils.removeClasses($G(bodyId), 'focus'); - } - } - }); - } - } - - function initVideo(){ - createAlignButton( ["videoFloat", "upload_alignment"] ); - addUrlChangeListener($G("videoUrl")); - addOkListener(); - - //编辑视频时初始化相关信息 - (function(){ - var img = editor.selection.getRange().getClosedNode(),url; - if(img && img.className){ - var hasFakedClass = (img.className == "edui-faked-video"), - hasUploadClass = img.className.indexOf("edui-upload-video")!=-1; - if(hasFakedClass || hasUploadClass) { - $G("videoUrl").value = url = img.getAttribute("_url"); - $G("videoWidth").value = img.width; - $G("videoHeight").value = img.height; - var align = domUtils.getComputedStyle(img,"float"), - parentAlign = domUtils.getComputedStyle(img.parentNode,"text-align"); - updateAlignButton(parentAlign==="center"?"center":align); - } - if(hasUploadClass) { - isModifyUploadVideo = true; - } - } - createPreviewVideo(url); - })(); - } - - /** - * 监听确认和取消两个按钮事件,用户执行插入或者清空正在播放的视频实例操作 - */ - function addOkListener(){ - dialog.onok = function(){ - $G("preview").innerHTML = ""; - var currentTab = findFocus("tabHeads","tabSrc"); - switch(currentTab){ - case "video": - return insertSingle(); - break; - case "videoSearch": - return insertSearch("searchList"); - break; - case "upload": - return insertUpload(); - break; - } - }; - dialog.oncancel = function(){ - $G("preview").innerHTML = ""; - }; - } - - /** - * 依据传入的align值更新按钮信息 - * @param align - */ - function updateAlignButton( align ) { - var aligns = $G( "videoFloat" ).children; - for ( var i = 0, ci; ci = aligns[i++]; ) { - if ( ci.getAttribute( "name" ) == align ) { - if ( ci.className !="focus" ) { - ci.className = "focus"; - } - } else { - if ( ci.className =="focus" ) { - ci.className = ""; - } - } - } - } - - /** - * 将单个视频信息插入编辑器中 - */ - function insertSingle(){ - var width = $G("videoWidth"), - height = $G("videoHeight"), - url=$G('videoUrl').value, - align = findFocus("videoFloat","name"); - if(!url) return false; - if ( !checkNum( [width, height] ) ) return false; - editor.execCommand('insertvideo', { - url: convert_url(url), - width: width.value, - height: height.value, - align: align - }, isModifyUploadVideo ? 'upload':null); - } - - /** - * 将元素id下的所有代表视频的图片插入编辑器中 - * @param id - */ - function insertSearch(id){ - var imgs = domUtils.getElementsByTagName($G(id),"img"), - videoObjs=[]; - for(var i=0,img; img=imgs[i++];){ - if(img.getAttribute("selected")){ - videoObjs.push({ - url:img.getAttribute("ue_video_url"), - width:420, - height:280, - align:"none" - }); - } - } - editor.execCommand('insertvideo',videoObjs); - } - - /** - * 找到id下具有focus类的节点并返回该节点下的某个属性 - * @param id - * @param returnProperty - */ - function findFocus( id, returnProperty ) { - var tabs = $G( id ).children, - property; - for ( var i = 0, ci; ci = tabs[i++]; ) { - if ( ci.className=="focus" ) { - property = ci.getAttribute( returnProperty ); - break; - } - } - return property; - } - function convert_url(url){ - if ( !url ) return ''; - url = utils.trim(url) - .replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, 'player.youku.com/player.php/sid/$1/v.swf') - .replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2") - .replace(/youtu.be\/(\w+)$/i, "www.youtube.com/v/$1") - .replace(/v\.ku6\.com\/.+\/([\w\.]+)\.html.*$/i, "player.ku6.com/refer/$1/v.swf") - .replace(/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, "player.56.com/v_$1.swf") - .replace(/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, "player.56.com/v_$1.swf") - .replace(/v\.pps\.tv\/play_([\w]+)\.html.*$/i, "player.pps.tv/player/sid/$1/v.swf") - .replace(/www\.letv\.com\/ptv\/vplay\/([\d]+)\.html.*$/i, "i7.imgs.letv.com/player/swfPlayer.swf?id=$1&autoplay=0") - .replace(/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, "www.tudou.com/v/$1") - .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\/([\w]+)\.html/i, "static.video.qq.com/TPout.swf?vid=$1") - .replace(/v\.qq\.com\/.+[\?\&]vid=([^&]+).*$/i, "static.video.qq.com/TPout.swf?vid=$1") - .replace(/my\.tv\.sohu\.com\/[\w]+\/[\d]+\/([\d]+)\.shtml.*$/i, "share.vrs.sohu.com/my/v.swf&id=$1"); - - return url; - } - - /** - * 检测传入的所有input框中输入的长宽是否是正数 - * @param nodes input框集合, - */ - function checkNum( nodes ) { - for ( var i = 0, ci; ci = nodes[i++]; ) { - var value = ci.value; - if ( !isNumber( value ) && value) { - alert( lang.numError ); - ci.value = ""; - ci.focus(); - return false; - } - } - return true; - } - - /** - * 数字判断 - * @param value - */ - function isNumber( value ) { - return /(0|^[1-9]\d*$)/.test( value ); - } - - /** - * 创建图片浮动选择按钮 - * @param ids - */ - function createAlignButton( ids ) { - for ( var i = 0, ci; ci = ids[i++]; ) { - var floatContainer = $G( ci ), - nameMaps = {"none":lang['default'], "left":lang.floatLeft, "right":lang.floatRight, "center":lang.block}; - for ( var j in nameMaps ) { - var div = document.createElement( "div" ); - div.setAttribute( "name", j ); - if ( j == "none" ) div.className="focus"; - div.style.cssText = "background:url(images/" + j + "_focus.jpg);"; - div.setAttribute( "title", nameMaps[j] ); - floatContainer.appendChild( div ); - } - switchSelect( ci ); - } - } - - /** - * 选择切换 - * @param selectParentId - */ - function switchSelect( selectParentId ) { - var selects = $G( selectParentId ).children; - for ( var i = 0, ci; ci = selects[i++]; ) { - domUtils.on( ci, "click", function () { - for ( var j = 0, cj; cj = selects[j++]; ) { - cj.className = ""; - cj.removeAttribute && cj.removeAttribute( "class" ); - } - this.className = "focus"; - } ) - } - } - - /** - * 监听url改变事件 - * @param url - */ - function addUrlChangeListener(url){ - if (browser.ie) { - url.onpropertychange = function () { - createPreviewVideo( this.value ); - } - } else { - url.addEventListener( "input", function () { - createPreviewVideo( this.value ); - }, false ); - } - } - - /** - * 根据url生成视频预览 - * @param url - */ - function createPreviewVideo(url){ - if ( !url )return; - - var conUrl = convert_url(url); - - $G("preview").innerHTML = '
    '+lang.urlError+'
    '+ - '' + - ''; - } - - - /* 插入上传视频 */ - function insertUpload(){ - var videoObjs=[], - uploadDir = editor.getOpt('videoUrlPrefix'), - width = $G('upload_width').value || 420, - height = $G('upload_height').value || 280, - align = findFocus("upload_alignment","name") || 'none'; - for(var key in uploadVideoList) { - var file = uploadVideoList[key]; - videoObjs.push({ - url: uploadDir + file.url, - width:width, - height:height, - align:align - }); - } - - var count = uploadFile.getQueueCount(); - if (count) { - $('.info', '#queueList').html('' + '还有2个未上传文件'.replace(/[\d]/, count) + ''); - return false; - } else { - editor.execCommand('insertvideo', videoObjs, 'upload'); - } - } - - /*初始化上传标签*/ - function initUpload(){ - uploadFile = new UploadFile('queueList'); - } - - - /* 上传附件 */ - function UploadFile(target) { - this.$wrap = target.constructor == String ? $('#' + target) : $(target); - this.init(); - } - UploadFile.prototype = { - init: function () { - this.fileList = []; - this.initContainer(); - this.initUploader(); - }, - initContainer: function () { - this.$queue = this.$wrap.find('.filelist'); - }, - /* 初始化容器 */ - initUploader: function () { - var _this = this, - $ = jQuery, // just in case. Make sure it's not an other libaray. - $wrap = _this.$wrap, - // 图片容器 - $queue = $wrap.find('.filelist'), - // 状态栏,包括进度和控制按钮 - $statusBar = $wrap.find('.statusBar'), - // 文件总体选择信息。 - $info = $statusBar.find('.info'), - // 上传按钮 - $upload = $wrap.find('.uploadBtn'), - // 上传按钮 - $filePickerBtn = $wrap.find('.filePickerBtn'), - // 上传按钮 - $filePickerBlock = $wrap.find('.filePickerBlock'), - // 没选择文件之前的内容。 - $placeHolder = $wrap.find('.placeholder'), - // 总体进度条 - $progress = $statusBar.find('.progress').hide(), - // 添加的文件数量 - fileCount = 0, - // 添加的文件总大小 - fileSize = 0, - // 优化retina, 在retina下这个值是2 - ratio = window.devicePixelRatio || 1, - // 缩略图大小 - thumbnailWidth = 113 * ratio, - thumbnailHeight = 113 * ratio, - // 可能有pedding, ready, uploading, confirm, done. - state = '', - // 所有文件的进度信息,key为file id - percentages = {}, - supportTransition = (function () { - var s = document.createElement('p').style, - r = 'transition' in s || - 'WebkitTransition' in s || - 'MozTransition' in s || - 'msTransition' in s || - 'OTransition' in s; - s = null; - return r; - })(), - // WebUploader实例 - uploader, - actionUrl = editor.getActionUrl(editor.getOpt('videoActionName')), - fileMaxSize = editor.getOpt('videoMaxSize'), - acceptExtensions = (editor.getOpt('videoAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');; - - if (!WebUploader.Uploader.support()) { - $('#filePickerReady').after($('
    ').html(lang.errorNotSupport)).hide(); - return; - } else if (!editor.getOpt('videoActionName')) { - $('#filePickerReady').after($('
    ').html(lang.errorLoadConfig)).hide(); - return; - } - - uploader = _this.uploader = WebUploader.create({ - pick: { - id: '#filePickerReady', - label: lang.uploadSelectFile - }, - swf: '../../third-party/webuploader/Uploader.swf', - server: actionUrl, - fileVal: editor.getOpt('videoFieldName'), - duplicate: true, - fileSingleSizeLimit: fileMaxSize, - compress: false - }); - uploader.addButton({ - id: '#filePickerBlock' - }); - uploader.addButton({ - id: '#filePickerBtn', - label: lang.uploadAddFile - }); - - setState('pedding'); - - // 当有文件添加进来时执行,负责view的创建 - function addFile(file) { - var $li = $('
  • ' + - '

    ' + file.name + '

    ' + - '

    ' + - '

    ' + - '
  • '), - - $btns = $('
    ' + - '' + lang.uploadDelete + '' + - '' + lang.uploadTurnRight + '' + - '' + lang.uploadTurnLeft + '
    ').appendTo($li), - $prgress = $li.find('p.progress span'), - $wrap = $li.find('p.imgWrap'), - $info = $('

    ').hide().appendTo($li), - - showError = function (code) { - switch (code) { - case 'exceed_size': - text = lang.errorExceedSize; - break; - case 'interrupt': - text = lang.errorInterrupt; - break; - case 'http': - text = lang.errorHttp; - break; - case 'not_allow_type': - text = lang.errorFileType; - break; - default: - text = lang.errorUploadRetry; - break; - } - $info.text(text).show(); - }; - - if (file.getStatus() === 'invalid') { - showError(file.statusText); - } else { - $wrap.text(lang.uploadPreview); - if ('|png|jpg|jpeg|bmp|gif|'.indexOf('|'+file.ext.toLowerCase()+'|') == -1) { - $wrap.empty().addClass('notimage').append('' + - '' + file.name + ''); - } else { - if (browser.ie && browser.version <= 7) { - $wrap.text(lang.uploadNoPreview); - } else { - uploader.makeThumb(file, function (error, src) { - if (error || !src || (/^data:/.test(src) && browser.ie && browser.version <= 7)) { - $wrap.text(lang.uploadNoPreview); - } else { - var $img = $(''); - $wrap.empty().append($img); - $img.on('error', function () { - $wrap.text(lang.uploadNoPreview); - }); - } - }, thumbnailWidth, thumbnailHeight); - } - } - percentages[ file.id ] = [ file.size, 0 ]; - file.rotation = 0; - - /* 检查文件格式 */ - if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) { - showError('not_allow_type'); - uploader.removeFile(file); - } - } - - file.on('statuschange', function (cur, prev) { - if (prev === 'progress') { - $prgress.hide().width(0); - } else if (prev === 'queued') { - $li.off('mouseenter mouseleave'); - $btns.remove(); - } - // 成功 - if (cur === 'error' || cur === 'invalid') { - showError(file.statusText); - percentages[ file.id ][ 1 ] = 1; - } else if (cur === 'interrupt') { - showError('interrupt'); - } else if (cur === 'queued') { - percentages[ file.id ][ 1 ] = 0; - } else if (cur === 'progress') { - $info.hide(); - $prgress.css('display', 'block'); - } else if (cur === 'complete') { - } - - $li.removeClass('state-' + prev).addClass('state-' + cur); - }); - - $li.on('mouseenter', function () { - $btns.stop().animate({height: 30}); - }); - $li.on('mouseleave', function () { - $btns.stop().animate({height: 0}); - }); - - $btns.on('click', 'span', function () { - var index = $(this).index(), - deg; - - switch (index) { - case 0: - uploader.removeFile(file); - return; - case 1: - file.rotation += 90; - break; - case 2: - file.rotation -= 90; - break; - } - - if (supportTransition) { - deg = 'rotate(' + file.rotation + 'deg)'; - $wrap.css({ - '-webkit-transform': deg, - '-mos-transform': deg, - '-o-transform': deg, - 'transform': deg - }); - } else { - $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')'); - } - - }); - - $li.insertBefore($filePickerBlock); - } - - // 负责view的销毁 - function removeFile(file) { - var $li = $('#' + file.id); - delete percentages[ file.id ]; - updateTotalProgress(); - $li.off().find('.file-panel').off().end().remove(); - } - - function updateTotalProgress() { - var loaded = 0, - total = 0, - spans = $progress.children(), - percent; - - $.each(percentages, function (k, v) { - total += v[ 0 ]; - loaded += v[ 0 ] * v[ 1 ]; - }); - - percent = total ? loaded / total : 0; - - spans.eq(0).text(Math.round(percent * 100) + '%'); - spans.eq(1).css('width', Math.round(percent * 100) + '%'); - updateStatus(); - } - - function setState(val, files) { - - if (val != state) { - - var stats = uploader.getStats(); - - $upload.removeClass('state-' + state); - $upload.addClass('state-' + val); - - switch (val) { - - /* 未选择文件 */ - case 'pedding': - $queue.addClass('element-invisible'); - $statusBar.addClass('element-invisible'); - $placeHolder.removeClass('element-invisible'); - $progress.hide(); $info.hide(); - uploader.refresh(); - break; - - /* 可以开始上传 */ - case 'ready': - $placeHolder.addClass('element-invisible'); - $queue.removeClass('element-invisible'); - $statusBar.removeClass('element-invisible'); - $progress.hide(); $info.show(); - $upload.text(lang.uploadStart); - uploader.refresh(); - break; - - /* 上传中 */ - case 'uploading': - $progress.show(); $info.hide(); - $upload.text(lang.uploadPause); - break; - - /* 暂停上传 */ - case 'paused': - $progress.show(); $info.hide(); - $upload.text(lang.uploadContinue); - break; - - case 'confirm': - $progress.show(); $info.hide(); - $upload.text(lang.uploadStart); - - stats = uploader.getStats(); - if (stats.successNum && !stats.uploadFailNum) { - setState('finish'); - return; - } - break; - - case 'finish': - $progress.hide(); $info.show(); - if (stats.uploadFailNum) { - $upload.text(lang.uploadRetry); - } else { - $upload.text(lang.uploadStart); - } - break; - } - - state = val; - updateStatus(); - - } - - if (!_this.getQueueCount()) { - $upload.addClass('disabled') - } else { - $upload.removeClass('disabled') - } - - } - - function updateStatus() { - var text = '', stats; - - if (state === 'ready') { - text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize)); - } else if (state === 'confirm') { - stats = uploader.getStats(); - if (stats.uploadFailNum) { - text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum); - } - } else { - stats = uploader.getStats(); - text = lang.updateStatusFinish.replace('_', fileCount). - replace('_KB', WebUploader.formatSize(fileSize)). - replace('_', stats.successNum); - - if (stats.uploadFailNum) { - text += lang.updateStatusError.replace('_', stats.uploadFailNum); - } - } - - $info.html(text); - } - - uploader.on('fileQueued', function (file) { - fileCount++; - fileSize += file.size; - - if (fileCount === 1) { - $placeHolder.addClass('element-invisible'); - $statusBar.show(); - } - - addFile(file); - }); - - uploader.on('fileDequeued', function (file) { - fileCount--; - fileSize -= file.size; - - removeFile(file); - updateTotalProgress(); - }); - - uploader.on('filesQueued', function (file) { - if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) { - setState('ready'); - } - updateTotalProgress(); - }); - - uploader.on('all', function (type, files) { - switch (type) { - case 'uploadFinished': - setState('confirm', files); - break; - case 'startUpload': - /* 添加额外的GET参数 */ - var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', - url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params); - uploader.option('server', url); - setState('uploading', files); - break; - case 'stopUpload': - setState('paused', files); - break; - } - }); - - uploader.on('uploadBeforeSend', function (file, data, header) { - //这里可以通过data对象添加POST参数 - if (actionUrl.toLowerCase().indexOf('jsp') != -1) { - header['X_Requested_With'] = 'XMLHttpRequest'; - } - }); - - uploader.on('uploadProgress', function (file, percentage) { - var $li = $('#' + file.id), - $percent = $li.find('.progress span'); - - $percent.css('width', percentage * 100 + '%'); - percentages[ file.id ][ 1 ] = percentage; - updateTotalProgress(); - }); - - uploader.on('uploadSuccess', function (file, ret) { - var $file = $('#' + file.id); - try { - var responseText = (ret._raw || ret), - json = utils.str2json(responseText); - if (json.state == 'SUCCESS') { - uploadVideoList.push({ - 'url': json.url, - 'type': json.type, - 'original':json.original - }); - $file.append(''); - } else { - $file.find('.error').text(json.state).show(); - } - } catch (e) { - $file.find('.error').text(lang.errorServerUpload).show(); - } - }); - - uploader.on('uploadError', function (file, code) { - }); - uploader.on('error', function (code, file) { - if (code == 'Q_TYPE_DENIED' || code == 'F_EXCEED_SIZE') { - addFile(file); - } - }); - uploader.on('uploadComplete', function (file, ret) { - }); - - $upload.on('click', function () { - if ($(this).hasClass('disabled')) { - return false; - } - - if (state === 'ready') { - uploader.upload(); - } else if (state === 'paused') { - uploader.upload(); - } else if (state === 'uploading') { - uploader.stop(); - } - }); - - $upload.addClass('state-' + state); - updateTotalProgress(); - }, - getQueueCount: function () { - var file, i, status, readyFile = 0, files = this.uploader.getFiles(); - for (i = 0; file = files[i++]; ) { - status = file.getStatus(); - if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++; - } - return readyFile; - }, - refresh: function(){ - this.uploader.refresh(); - } - }; - -})(); \ No newline at end of file diff --git a/public/ueditor/dialogs/webapp/webapp.html b/public/ueditor/dialogs/webapp/webapp.html deleted file mode 100644 index 1614377..0000000 --- a/public/ueditor/dialogs/webapp/webapp.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - -
    -
    -
    - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/wordimage/tangram.js b/public/ueditor/dialogs/wordimage/tangram.js deleted file mode 100644 index 2ebd8fd..0000000 --- a/public/ueditor/dialogs/wordimage/tangram.js +++ /dev/null @@ -1,1495 +0,0 @@ -// Copyright (c) 2009, Baidu Inc. All rights reserved. -// -// Licensed under the BSD License -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http:// tangram.baidu.com/license.html -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS-IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - /** - * @namespace T Tangram七巧板 - * @name T - * @version 1.6.0 -*/ - -/** - * 声明baidu包 - * @author: allstar, erik, meizz, berg - */ -var T, - baidu = T = baidu || {version: "1.5.0"}; -baidu.guid = "$BAIDU$"; -baidu.$$ = window[baidu.guid] = window[baidu.guid] || {global:{}}; - -/** - * 使用flash资源封装的一些功能 - * @namespace baidu.flash - */ -baidu.flash = baidu.flash || {}; - -/** - * 操作dom的方法 - * @namespace baidu.dom - */ -baidu.dom = baidu.dom || {}; - - -/** - * 从文档中获取指定的DOM元素 - * @name baidu.dom.g - * @function - * @grammar baidu.dom.g(id) - * @param {string|HTMLElement} id 元素的id或DOM元素. - * @shortcut g,T.G - * @meta standard - * @see baidu.dom.q - * - * @return {HTMLElement|null} 获取的元素,查找不到时返回null,如果参数不合法,直接返回参数. - */ -baidu.dom.g = function(id) { - if (!id) return null; - if ('string' == typeof id || id instanceof String) { - return document.getElementById(id); - } else if (id.nodeName && (id.nodeType == 1 || id.nodeType == 9)) { - return id; - } - return null; -}; -baidu.g = baidu.G = baidu.dom.g; - - -/** - * 操作数组的方法 - * @namespace baidu.array - */ - -baidu.array = baidu.array || {}; - - -/** - * 遍历数组中所有元素 - * @name baidu.array.each - * @function - * @grammar baidu.array.each(source, iterator[, thisObject]) - * @param {Array} source 需要遍历的数组 - * @param {Function} iterator 对每个数组元素进行调用的函数,该函数有两个参数,第一个为数组元素,第二个为数组索引值,function (item, index)。 - * @param {Object} [thisObject] 函数调用时的this指针,如果没有此参数,默认是当前遍历的数组 - * @remark - * each方法不支持对Object的遍历,对Object的遍历使用baidu.object.each 。 - * @shortcut each - * @meta standard - * - * @returns {Array} 遍历的数组 - */ - -baidu.each = baidu.array.forEach = baidu.array.each = function (source, iterator, thisObject) { - var returnValue, item, i, len = source.length; - - if ('function' == typeof iterator) { - for (i = 0; i < len; i++) { - item = source[i]; - returnValue = iterator.call(thisObject || source, item, i); - - if (returnValue === false) { - break; - } - } - } - return source; -}; - -/** - * 对语言层面的封装,包括类型判断、模块扩展、继承基类以及对象自定义事件的支持。 - * @namespace baidu.lang - */ -baidu.lang = baidu.lang || {}; - - -/** - * 判断目标参数是否为function或Function实例 - * @name baidu.lang.isFunction - * @function - * @grammar baidu.lang.isFunction(source) - * @param {Any} source 目标参数 - * @version 1.2 - * @see baidu.lang.isString,baidu.lang.isObject,baidu.lang.isNumber,baidu.lang.isArray,baidu.lang.isElement,baidu.lang.isBoolean,baidu.lang.isDate - * @meta standard - * @returns {boolean} 类型判断结果 - */ -baidu.lang.isFunction = function (source) { - return '[object Function]' == Object.prototype.toString.call(source); -}; - -/** - * 判断目标参数是否string类型或String对象 - * @name baidu.lang.isString - * @function - * @grammar baidu.lang.isString(source) - * @param {Any} source 目标参数 - * @shortcut isString - * @meta standard - * @see baidu.lang.isObject,baidu.lang.isNumber,baidu.lang.isArray,baidu.lang.isElement,baidu.lang.isBoolean,baidu.lang.isDate - * - * @returns {boolean} 类型判断结果 - */ -baidu.lang.isString = function (source) { - return '[object String]' == Object.prototype.toString.call(source); -}; -baidu.isString = baidu.lang.isString; - - -/** - * 判断浏览器类型和特性的属性 - * @namespace baidu.browser - */ -baidu.browser = baidu.browser || {}; - - -/** - * 判断是否为opera浏览器 - * @property opera opera版本号 - * @grammar baidu.browser.opera - * @meta standard - * @see baidu.browser.ie,baidu.browser.firefox,baidu.browser.safari,baidu.browser.chrome - * @returns {Number} opera版本号 - */ - -/** - * opera 从10开始不是用opera后面的字符串进行版本的判断 - * 在Browser identification最后添加Version + 数字进行版本标识 - * opera后面的数字保持在9.80不变 - */ -baidu.browser.opera = /opera(\/| )(\d+(\.\d+)?)(.+?(version\/(\d+(\.\d+)?)))?/i.test(navigator.userAgent) ? + ( RegExp["\x246"] || RegExp["\x242"] ) : undefined; - - -/** - * 在目标元素的指定位置插入HTML代码 - * @name baidu.dom.insertHTML - * @function - * @grammar baidu.dom.insertHTML(element, position, html) - * @param {HTMLElement|string} element 目标元素或目标元素的id - * @param {string} position 插入html的位置信息,取值为beforeBegin,afterBegin,beforeEnd,afterEnd - * @param {string} html 要插入的html - * @remark - * - * 对于position参数,大小写不敏感
    - * 参数的意思:beforeBegin<span>afterBegin this is span! beforeEnd</span> afterEnd
    - * 此外,如果使用本函数插入带有script标签的HTML字符串,script标签对应的脚本将不会被执行。 - * - * @shortcut insertHTML - * @meta standard - * - * @returns {HTMLElement} 目标元素 - */ -baidu.dom.insertHTML = function (element, position, html) { - element = baidu.dom.g(element); - var range,begin; - if (element.insertAdjacentHTML && !baidu.browser.opera) { - element.insertAdjacentHTML(position, html); - } else { - range = element.ownerDocument.createRange(); - position = position.toUpperCase(); - if (position == 'AFTERBEGIN' || position == 'BEFOREEND') { - range.selectNodeContents(element); - range.collapse(position == 'AFTERBEGIN'); - } else { - begin = position == 'BEFOREBEGIN'; - range[begin ? 'setStartBefore' : 'setEndAfter'](element); - range.collapse(begin); - } - range.insertNode(range.createContextualFragment(html)); - } - return element; -}; - -baidu.insertHTML = baidu.dom.insertHTML; - -/** - * 操作flash对象的方法,包括创建flash对象、获取flash对象以及判断flash插件的版本号 - * @namespace baidu.swf - */ -baidu.swf = baidu.swf || {}; - - -/** - * 浏览器支持的flash插件版本 - * @property version 浏览器支持的flash插件版本 - * @grammar baidu.swf.version - * @return {String} 版本号 - * @meta standard - */ -baidu.swf.version = (function () { - var n = navigator; - if (n.plugins && n.mimeTypes.length) { - var plugin = n.plugins["Shockwave Flash"]; - if (plugin && plugin.description) { - return plugin.description - .replace(/([a-zA-Z]|\s)+/, "") - .replace(/(\s)+r/, ".") + ".0"; - } - } else if (window.ActiveXObject && !window.opera) { - for (var i = 12; i >= 2; i--) { - try { - var c = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.' + i); - if (c) { - var version = c.GetVariable("$version"); - return version.replace(/WIN/g,'').replace(/,/g,'.'); - } - } catch(e) {} - } - } -})(); - -/** - * 操作字符串的方法 - * @namespace baidu.string - */ -baidu.string = baidu.string || {}; - - -/** - * 对目标字符串进行html编码 - * @name baidu.string.encodeHTML - * @function - * @grammar baidu.string.encodeHTML(source) - * @param {string} source 目标字符串 - * @remark - * 编码字符有5个:&<>"' - * @shortcut encodeHTML - * @meta standard - * @see baidu.string.decodeHTML - * - * @returns {string} html编码后的字符串 - */ -baidu.string.encodeHTML = function (source) { - return String(source) - .replace(/&/g,'&') - .replace(//g,'>') - .replace(/"/g, """) - .replace(/'/g, "'"); -}; - -baidu.encodeHTML = baidu.string.encodeHTML; - -/** - * 创建flash对象的html字符串 - * @name baidu.swf.createHTML - * @function - * @grammar baidu.swf.createHTML(options) - * - * @param {Object} options 创建flash的选项参数 - * @param {string} options.id 要创建的flash的标识 - * @param {string} options.url flash文件的url - * @param {String} options.errorMessage 未安装flash player或flash player版本号过低时的提示 - * @param {string} options.ver 最低需要的flash player版本号 - * @param {string} options.width flash的宽度 - * @param {string} options.height flash的高度 - * @param {string} options.align flash的对齐方式,允许值:middle/left/right/top/bottom - * @param {string} options.base 设置用于解析swf文件中的所有相对路径语句的基本目录或URL - * @param {string} options.bgcolor swf文件的背景色 - * @param {string} options.salign 设置缩放的swf文件在由width和height设置定义的区域内的位置。允许值:l/r/t/b/tl/tr/bl/br - * @param {boolean} options.menu 是否显示右键菜单,允许值:true/false - * @param {boolean} options.loop 播放到最后一帧时是否重新播放,允许值: true/false - * @param {boolean} options.play flash是否在浏览器加载时就开始播放。允许值:true/false - * @param {string} options.quality 设置flash播放的画质,允许值:low/medium/high/autolow/autohigh/best - * @param {string} options.scale 设置flash内容如何缩放来适应设置的宽高。允许值:showall/noborder/exactfit - * @param {string} options.wmode 设置flash的显示模式。允许值:window/opaque/transparent - * @param {string} options.allowscriptaccess 设置flash与页面的通信权限。允许值:always/never/sameDomain - * @param {string} options.allownetworking 设置swf文件中允许使用的网络API。允许值:all/internal/none - * @param {boolean} options.allowfullscreen 是否允许flash全屏。允许值:true/false - * @param {boolean} options.seamlesstabbing 允许设置执行无缝跳格,从而使用户能跳出flash应用程序。该参数只能在安装Flash7及更高版本的Windows中使用。允许值:true/false - * @param {boolean} options.devicefont 设置静态文本对象是否以设备字体呈现。允许值:true/false - * @param {boolean} options.swliveconnect 第一次加载flash时浏览器是否应启动Java。允许值:true/false - * @param {Object} options.vars 要传递给flash的参数,支持JSON或string类型。 - * - * @see baidu.swf.create - * @meta standard - * @returns {string} flash对象的html字符串 - */ -baidu.swf.createHTML = function (options) { - options = options || {}; - var version = baidu.swf.version, - needVersion = options['ver'] || '6.0.0', - vUnit1, vUnit2, i, k, len, item, tmpOpt = {}, - encodeHTML = baidu.string.encodeHTML; - for (k in options) { - tmpOpt[k] = options[k]; - } - options = tmpOpt; - if (version) { - version = version.split('.'); - needVersion = needVersion.split('.'); - for (i = 0; i < 3; i++) { - vUnit1 = parseInt(version[i], 10); - vUnit2 = parseInt(needVersion[i], 10); - if (vUnit2 < vUnit1) { - break; - } else if (vUnit2 > vUnit1) { - return ''; - } - } - } else { - return ''; - } - - var vars = options['vars'], - objProperties = ['classid', 'codebase', 'id', 'width', 'height', 'align']; - options['align'] = options['align'] || 'middle'; - options['classid'] = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'; - options['codebase'] = 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'; - options['movie'] = options['url'] || ''; - delete options['vars']; - delete options['url']; - if ('string' == typeof vars) { - options['flashvars'] = vars; - } else { - var fvars = []; - for (k in vars) { - item = vars[k]; - fvars.push(k + "=" + encodeURIComponent(item)); - } - options['flashvars'] = fvars.join('&'); - } - var str = [''); - var params = { - 'wmode' : 1, - 'scale' : 1, - 'quality' : 1, - 'play' : 1, - 'loop' : 1, - 'menu' : 1, - 'salign' : 1, - 'bgcolor' : 1, - 'base' : 1, - 'allowscriptaccess' : 1, - 'allownetworking' : 1, - 'allowfullscreen' : 1, - 'seamlesstabbing' : 1, - 'devicefont' : 1, - 'swliveconnect' : 1, - 'flashvars' : 1, - 'movie' : 1 - }; - - for (k in options) { - item = options[k]; - k = k.toLowerCase(); - if (params[k] && (item || item === false || item === 0)) { - str.push(''); - } - } - options['src'] = options['movie']; - options['name'] = options['id']; - delete options['id']; - delete options['movie']; - delete options['classid']; - delete options['codebase']; - options['type'] = 'application/x-shockwave-flash'; - options['pluginspage'] = 'http://www.macromedia.com/go/getflashplayer'; - str.push(''); - - return str.join(''); -}; - - -/** - * 在页面中创建一个flash对象 - * @name baidu.swf.create - * @function - * @grammar baidu.swf.create(options[, container]) - * - * @param {Object} options 创建flash的选项参数 - * @param {string} options.id 要创建的flash的标识 - * @param {string} options.url flash文件的url - * @param {String} options.errorMessage 未安装flash player或flash player版本号过低时的提示 - * @param {string} options.ver 最低需要的flash player版本号 - * @param {string} options.width flash的宽度 - * @param {string} options.height flash的高度 - * @param {string} options.align flash的对齐方式,允许值:middle/left/right/top/bottom - * @param {string} options.base 设置用于解析swf文件中的所有相对路径语句的基本目录或URL - * @param {string} options.bgcolor swf文件的背景色 - * @param {string} options.salign 设置缩放的swf文件在由width和height设置定义的区域内的位置。允许值:l/r/t/b/tl/tr/bl/br - * @param {boolean} options.menu 是否显示右键菜单,允许值:true/false - * @param {boolean} options.loop 播放到最后一帧时是否重新播放,允许值: true/false - * @param {boolean} options.play flash是否在浏览器加载时就开始播放。允许值:true/false - * @param {string} options.quality 设置flash播放的画质,允许值:low/medium/high/autolow/autohigh/best - * @param {string} options.scale 设置flash内容如何缩放来适应设置的宽高。允许值:showall/noborder/exactfit - * @param {string} options.wmode 设置flash的显示模式。允许值:window/opaque/transparent - * @param {string} options.allowscriptaccess 设置flash与页面的通信权限。允许值:always/never/sameDomain - * @param {string} options.allownetworking 设置swf文件中允许使用的网络API。允许值:all/internal/none - * @param {boolean} options.allowfullscreen 是否允许flash全屏。允许值:true/false - * @param {boolean} options.seamlesstabbing 允许设置执行无缝跳格,从而使用户能跳出flash应用程序。该参数只能在安装Flash7及更高版本的Windows中使用。允许值:true/false - * @param {boolean} options.devicefont 设置静态文本对象是否以设备字体呈现。允许值:true/false - * @param {boolean} options.swliveconnect 第一次加载flash时浏览器是否应启动Java。允许值:true/false - * @param {Object} options.vars 要传递给flash的参数,支持JSON或string类型。 - * - * @param {HTMLElement|string} [container] flash对象的父容器元素,不传递该参数时在当前代码位置创建flash对象。 - * @meta standard - * @see baidu.swf.createHTML,baidu.swf.getMovie - */ -baidu.swf.create = function (options, target) { - options = options || {}; - var html = baidu.swf.createHTML(options) - || options['errorMessage'] - || ''; - - if (target && 'string' == typeof target) { - target = document.getElementById(target); - } - baidu.dom.insertHTML( target || document.body ,'beforeEnd',html ); -}; -/** - * 判断是否为ie浏览器 - * @name baidu.browser.ie - * @field - * @grammar baidu.browser.ie - * @returns {Number} IE版本号 - */ -baidu.browser.ie = baidu.ie = /msie (\d+\.\d+)/i.test(navigator.userAgent) ? (document.documentMode || + RegExp['\x241']) : undefined; - -/** - * 移除数组中的项 - * @name baidu.array.remove - * @function - * @grammar baidu.array.remove(source, match) - * @param {Array} source 需要移除项的数组 - * @param {Any} match 要移除的项 - * @meta standard - * @see baidu.array.removeAt - * - * @returns {Array} 移除后的数组 - */ -baidu.array.remove = function (source, match) { - var len = source.length; - - while (len--) { - if (len in source && source[len] === match) { - source.splice(len, 1); - } - } - return source; -}; - -/** - * 判断目标参数是否Array对象 - * @name baidu.lang.isArray - * @function - * @grammar baidu.lang.isArray(source) - * @param {Any} source 目标参数 - * @meta standard - * @see baidu.lang.isString,baidu.lang.isObject,baidu.lang.isNumber,baidu.lang.isElement,baidu.lang.isBoolean,baidu.lang.isDate - * - * @returns {boolean} 类型判断结果 - */ -baidu.lang.isArray = function (source) { - return '[object Array]' == Object.prototype.toString.call(source); -}; - - - -/** - * 将一个变量转换成array - * @name baidu.lang.toArray - * @function - * @grammar baidu.lang.toArray(source) - * @param {mix} source 需要转换成array的变量 - * @version 1.3 - * @meta standard - * @returns {array} 转换后的array - */ -baidu.lang.toArray = function (source) { - if (source === null || source === undefined) - return []; - if (baidu.lang.isArray(source)) - return source; - if (typeof source.length !== 'number' || typeof source === 'string' || baidu.lang.isFunction(source)) { - return [source]; - } - if (source.item) { - var l = source.length, array = new Array(l); - while (l--) - array[l] = source[l]; - return array; - } - - return [].slice.call(source); -}; - -/** - * 获得flash对象的实例 - * @name baidu.swf.getMovie - * @function - * @grammar baidu.swf.getMovie(name) - * @param {string} name flash对象的名称 - * @see baidu.swf.create - * @meta standard - * @returns {HTMLElement} flash对象的实例 - */ -baidu.swf.getMovie = function (name) { - var movie = document[name], ret; - return baidu.browser.ie == 9 ? - movie && movie.length ? - (ret = baidu.array.remove(baidu.lang.toArray(movie),function(item){ - return item.tagName.toLowerCase() != "embed"; - })).length == 1 ? ret[0] : ret - : movie - : movie || window[name]; -}; - - -baidu.flash._Base = (function(){ - - var prefix = 'bd__flash__'; - - /** - * 创建一个随机的字符串 - * @private - * @return {String} - */ - function _createString(){ - return prefix + Math.floor(Math.random() * 2147483648).toString(36); - }; - - /** - * 检查flash状态 - * @private - * @param {Object} target flash对象 - * @return {Boolean} - */ - function _checkReady(target){ - if(typeof target !== 'undefined' && typeof target.flashInit !== 'undefined' && target.flashInit()){ - return true; - }else{ - return false; - } - }; - - /** - * 调用之前进行压栈的函数 - * @private - * @param {Array} callQueue 调用队列 - * @param {Object} target flash对象 - * @return {Null} - */ - function _callFn(callQueue, target){ - var result = null; - - callQueue = callQueue.reverse(); - baidu.each(callQueue, function(item){ - result = target.call(item.fnName, item.params); - item.callBack(result); - }); - }; - - /** - * 为传入的匿名函数创建函数名 - * @private - * @param {String|Function} fun 传入的匿名函数或者函数名 - * @return {String} - */ - function _createFunName(fun){ - var name = ''; - - if(baidu.lang.isFunction(fun)){ - name = _createString(); - window[name] = function(){ - fun.apply(window, arguments); - }; - - return name; - }else if(baidu.lang.isString){ - return fun; - } - }; - - /** - * 绘制flash - * @private - * @param {Object} options 创建参数 - * @return {Object} - */ - function _render(options){ - if(!options.id){ - options.id = _createString(); - } - - var container = options.container || ''; - delete(options.container); - - baidu.swf.create(options, container); - - return baidu.swf.getMovie(options.id); - }; - - return function(options, callBack){ - var me = this, - autoRender = (typeof options.autoRender !== 'undefined' ? options.autoRender : true), - createOptions = options.createOptions || {}, - target = null, - isReady = false, - callQueue = [], - timeHandle = null, - callBack = callBack || []; - - /** - * 将flash文件绘制到页面上 - * @public - * @return {Null} - */ - me.render = function(){ - target = _render(createOptions); - - if(callBack.length > 0){ - baidu.each(callBack, function(funName, index){ - callBack[index] = _createFunName(options[funName] || new Function()); - }); - } - me.call('setJSFuncName', [callBack]); - }; - - /** - * 返回flash状态 - * @return {Boolean} - */ - me.isReady = function(){ - return isReady; - }; - - /** - * 调用flash接口的统一入口 - * @param {String} fnName 调用的函数名 - * @param {Array} params 传入的参数组成的数组,若不许要参数,需传入空数组 - * @param {Function} [callBack] 异步调用后将返回值作为参数的调用回调函数,如无返回值,可以不传入此参数 - * @return {Null} - */ - me.call = function(fnName, params, callBack){ - if(!fnName) return null; - callBack = callBack || new Function(); - - var result = null; - - if(isReady){ - result = target.call(fnName, params); - callBack(result); - }else{ - callQueue.push({ - fnName: fnName, - params: params, - callBack: callBack - }); - - (!timeHandle) && (timeHandle = setInterval(_check, 200)); - } - }; - - /** - * 为传入的匿名函数创建函数名 - * @public - * @param {String|Function} fun 传入的匿名函数或者函数名 - * @return {String} - */ - me.createFunName = function(fun){ - return _createFunName(fun); - }; - - /** - * 检查flash是否ready, 并进行调用 - * @private - * @return {Null} - */ - function _check(){ - if(_checkReady(target)){ - clearInterval(timeHandle); - timeHandle = null; - _call(); - - isReady = true; - } - }; - - /** - * 调用之前进行压栈的函数 - * @private - * @return {Null} - */ - function _call(){ - _callFn(callQueue, target); - callQueue = []; - } - - autoRender && me.render(); - }; -})(); - - - -/** - * 创建flash based imageUploader - * @class - * @grammar baidu.flash.imageUploader(options) - * @param {Object} createOptions 创建flash时需要的参数,请参照baidu.swf.create文档 - * @config {Object} vars 创建imageUploader时所需要的参数 - * @config {Number} vars.gridWidth 每一个预览图片所占的宽度,应该为flash寛的整除 - * @config {Number} vars.gridHeight 每一个预览图片所占的高度,应该为flash高的整除 - * @config {Number} vars.picWidth 单张预览图片的宽度 - * @config {Number} vars.picHeight 单张预览图片的高度 - * @config {String} vars.uploadDataFieldName POST请求中图片数据的key,默认值'picdata' - * @config {String} vars.picDescFieldName POST请求中图片描述的key,默认值'picDesc' - * @config {Number} vars.maxSize 文件的最大体积,单位'MB' - * @config {Number} vars.compressSize 上传前如果图片体积超过该值,会先压缩 - * @config {Number} vars.maxNum:32 最大上传多少个文件 - * @config {Number} vars.compressLength 能接受的最大边长,超过该值会等比压缩 - * @config {String} vars.url 上传的url地址 - * @config {Number} vars.mode mode == 0时,是使用滚动条,mode == 1时,拉伸flash, 默认值为0 - * @see baidu.swf.createHTML - * @param {String} backgroundUrl 背景图片路径 - * @param {String} listBacgroundkUrl 布局控件背景 - * @param {String} buttonUrl 按钮图片不背景 - * @param {String|Function} selectFileCallback 选择文件的回调 - * @param {String|Function} exceedFileCallback文件超出限制的最大体积时的回调 - * @param {String|Function} deleteFileCallback 删除文件的回调 - * @param {String|Function} startUploadCallback 开始上传某个文件时的回调 - * @param {String|Function} uploadCompleteCallback 某个文件上传完成的回调 - * @param {String|Function} uploadErrorCallback 某个文件上传失败的回调 - * @param {String|Function} allCompleteCallback 全部上传完成时的回调 - * @param {String|Function} changeFlashHeight 改变Flash的高度,mode==1的时候才有用 - */ -baidu.flash.imageUploader = baidu.flash.imageUploader || function(options){ - - var me = this, - options = options || {}, - _flash = new baidu.flash._Base(options, [ - 'selectFileCallback', - 'exceedFileCallback', - 'deleteFileCallback', - 'startUploadCallback', - 'uploadCompleteCallback', - 'uploadErrorCallback', - 'allCompleteCallback', - 'changeFlashHeight' - ]); - /** - * 开始或回复上传图片 - * @public - * @return {Null} - */ - me.upload = function(){ - _flash.call('upload'); - }; - - /** - * 暂停上传图片 - * @public - * @return {Null} - */ - me.pause = function(){ - _flash.call('pause'); - }; - me.addCustomizedParams = function(index,obj){ - _flash.call('addCustomizedParams',[index,obj]); - } -}; - -/** - * 操作原生对象的方法 - * @namespace baidu.object - */ -baidu.object = baidu.object || {}; - - -/** - * 将源对象的所有属性拷贝到目标对象中 - * @author erik - * @name baidu.object.extend - * @function - * @grammar baidu.object.extend(target, source) - * @param {Object} target 目标对象 - * @param {Object} source 源对象 - * @see baidu.array.merge - * @remark - * -1.目标对象中,与源对象key相同的成员将会被覆盖。
    -2.源对象的prototype成员不会拷贝。 - - * @shortcut extend - * @meta standard - * - * @returns {Object} 目标对象 - */ -baidu.extend = -baidu.object.extend = function (target, source) { - for (var p in source) { - if (source.hasOwnProperty(p)) { - target[p] = source[p]; - } - } - - return target; -}; - - - - - -/** - * 创建flash based fileUploader - * @class - * @grammar baidu.flash.fileUploader(options) - * @param {Object} options - * @config {Object} createOptions 创建flash时需要的参数,请参照baidu.swf.create文档 - * @config {String} createOptions.width - * @config {String} createOptions.height - * @config {Number} maxNum 最大可选文件数 - * @config {Function|String} selectFile - * @config {Function|String} exceedMaxSize - * @config {Function|String} deleteFile - * @config {Function|String} uploadStart - * @config {Function|String} uploadComplete - * @config {Function|String} uploadError - * @config {Function|String} uploadProgress - */ -baidu.flash.fileUploader = baidu.flash.fileUploader || function(options){ - var me = this, - options = options || {}; - - options.createOptions = baidu.extend({ - wmod: 'transparent' - },options.createOptions || {}); - - var _flash = new baidu.flash._Base(options, [ - 'selectFile', - 'exceedMaxSize', - 'deleteFile', - 'uploadStart', - 'uploadComplete', - 'uploadError', - 'uploadProgress' - ]); - - _flash.call('setMaxNum', options.maxNum ? [options.maxNum] : [1]); - - /** - * 设置当鼠标移动到flash上时,是否变成手型 - * @public - * @param {Boolean} isCursor - * @return {Null} - */ - me.setHandCursor = function(isCursor){ - _flash.call('setHandCursor', [isCursor || false]); - }; - - /** - * 设置鼠标相应函数名 - * @param {String|Function} fun - */ - me.setMSFunName = function(fun){ - _flash.call('setMSFunName',[_flash.createFunName(fun)]); - }; - - /** - * 执行上传操作 - * @param {String} url 上传的url - * @param {String} fieldName 上传的表单字段名 - * @param {Object} postData 键值对,上传的POST数据 - * @param {Number|Array|null|-1} [index]上传的文件序列 - * Int值上传该文件 - * Array一次串行上传该序列文件 - * -1/null上传所有文件 - * @return {Null} - */ - me.upload = function(url, fieldName, postData, index){ - - if(typeof url !== 'string' || typeof fieldName !== 'string') return null; - if(typeof index === 'undefined') index = -1; - - _flash.call('upload', [url, fieldName, postData, index]); - }; - - /** - * 取消上传操作 - * @public - * @param {Number|-1} index - */ - me.cancel = function(index){ - if(typeof index === 'undefined') index = -1; - _flash.call('cancel', [index]); - }; - - /** - * 删除文件 - * @public - * @param {Number|Array} [index] 要删除的index,不传则全部删除 - * @param {Function} callBack - * */ - me.deleteFile = function(index, callBack){ - - var callBackAll = function(list){ - callBack && callBack(list); - }; - - if(typeof index === 'undefined'){ - _flash.call('deleteFilesAll', [], callBackAll); - return; - }; - - if(typeof index === 'Number') index = [index]; - index.sort(function(a,b){ - return b-a; - }); - baidu.each(index, function(item){ - _flash.call('deleteFileBy', item, callBackAll); - }); - }; - - /** - * 添加文件类型,支持macType - * @public - * @param {Object|Array[Object]} type {description:String, extention:String} - * @return {Null}; - */ - me.addFileType = function(type){ - var type = type || [[]]; - - if(type instanceof Array) type = [type]; - else type = [[type]]; - _flash.call('addFileTypes', type); - }; - - /** - * 设置文件类型,支持macType - * @public - * @param {Object|Array[Object]} type {description:String, extention:String} - * @return {Null}; - */ - me.setFileType = function(type){ - var type = type || [[]]; - - if(type instanceof Array) type = [type]; - else type = [[type]]; - _flash.call('setFileTypes', type); - }; - - /** - * 设置可选文件的数量限制 - * @public - * @param {Number} num - * @return {Null} - */ - me.setMaxNum = function(num){ - _flash.call('setMaxNum', [num]); - }; - - /** - * 设置可选文件大小限制,以兆M为单位 - * @public - * @param {Number} num,0为无限制 - * @return {Null} - */ - me.setMaxSize = function(num){ - _flash.call('setMaxSize', [num]); - }; - - /** - * @public - */ - me.getFileAll = function(callBack){ - _flash.call('getFileAll', [], callBack); - }; - - /** - * @public - * @param {Number} index - * @param {Function} [callBack] - */ - me.getFileByIndex = function(index, callBack){ - _flash.call('getFileByIndex', [], callBack); - }; - - /** - * @public - * @param {Number} index - * @param {function} [callBack] - */ - me.getStatusByIndex = function(index, callBack){ - _flash.call('getStatusByIndex', [], callBack); - }; -}; - -/** - * 使用动态script标签请求服务器资源,包括由服务器端的回调和浏览器端的回调 - * @namespace baidu.sio - */ -baidu.sio = baidu.sio || {}; - -/** - * - * @param {HTMLElement} src script节点 - * @param {String} url script节点的地址 - * @param {String} [charset] 编码 - */ -baidu.sio._createScriptTag = function(scr, url, charset){ - scr.setAttribute('type', 'text/javascript'); - charset && scr.setAttribute('charset', charset); - scr.setAttribute('src', url); - document.getElementsByTagName('head')[0].appendChild(scr); -}; - -/** - * 删除script的属性,再删除script标签,以解决修复内存泄漏的问题 - * - * @param {HTMLElement} src script节点 - */ -baidu.sio._removeScriptTag = function(scr){ - if (scr.clearAttributes) { - scr.clearAttributes(); - } else { - for (var attr in scr) { - if (scr.hasOwnProperty(attr)) { - delete scr[attr]; - } - } - } - if(scr && scr.parentNode){ - scr.parentNode.removeChild(scr); - } - scr = null; -}; - - -/** - * 通过script标签加载数据,加载完成由浏览器端触发回调 - * @name baidu.sio.callByBrowser - * @function - * @grammar baidu.sio.callByBrowser(url, opt_callback, opt_options) - * @param {string} url 加载数据的url - * @param {Function|string} opt_callback 数据加载结束时调用的函数或函数名 - * @param {Object} opt_options 其他可选项 - * @config {String} [charset] script的字符集 - * @config {Integer} [timeOut] 超时时间,超过这个时间将不再响应本请求,并触发onfailure函数 - * @config {Function} [onfailure] timeOut设定后才生效,到达超时时间时触发本函数 - * @remark - * 1、与callByServer不同,callback参数只支持Function类型,不支持string。 - * 2、如果请求了一个不存在的页面,callback函数在IE/opera下也会被调用,因此使用者需要在onsuccess函数中判断数据是否正确加载。 - * @meta standard - * @see baidu.sio.callByServer - */ -baidu.sio.callByBrowser = function (url, opt_callback, opt_options) { - var scr = document.createElement("SCRIPT"), - scriptLoaded = 0, - options = opt_options || {}, - charset = options['charset'], - callback = opt_callback || function(){}, - timeOut = options['timeOut'] || 0, - timer; - scr.onload = scr.onreadystatechange = function () { - if (scriptLoaded) { - return; - } - - var readyState = scr.readyState; - if ('undefined' == typeof readyState - || readyState == "loaded" - || readyState == "complete") { - scriptLoaded = 1; - try { - callback(); - clearTimeout(timer); - } finally { - scr.onload = scr.onreadystatechange = null; - baidu.sio._removeScriptTag(scr); - } - } - }; - - if( timeOut ){ - timer = setTimeout(function(){ - scr.onload = scr.onreadystatechange = null; - baidu.sio._removeScriptTag(scr); - options.onfailure && options.onfailure(); - }, timeOut); - } - - baidu.sio._createScriptTag(scr, url, charset); -}; - -/** - * 通过script标签加载数据,加载完成由服务器端触发回调 - * @name baidu.sio.callByServer - * @function - * @grammar baidu.sio.callByServer(url, callback[, opt_options]) - * @param {string} url 加载数据的url. - * @param {Function|string} callback 服务器端调用的函数或函数名。如果没有指定本参数,将在URL中寻找options['queryField']做为callback的方法名. - * @param {Object} opt_options 加载数据时的选项. - * @config {string} [charset] script的字符集 - * @config {string} [queryField] 服务器端callback请求字段名,默认为callback - * @config {Integer} [timeOut] 超时时间(单位:ms),超过这个时间将不再响应本请求,并触发onfailure函数 - * @config {Function} [onfailure] timeOut设定后才生效,到达超时时间时触发本函数 - * @remark - * 如果url中已经包含key为“options['queryField']”的query项,将会被替换成callback中参数传递或自动生成的函数名。 - * @meta standard - * @see baidu.sio.callByBrowser - */ -baidu.sio.callByServer = /**@function*/function(url, callback, opt_options) { - var scr = document.createElement('SCRIPT'), - prefix = 'bd__cbs__', - callbackName, - callbackImpl, - options = opt_options || {}, - charset = options['charset'], - queryField = options['queryField'] || 'callback', - timeOut = options['timeOut'] || 0, - timer, - reg = new RegExp('(\\?|&)' + queryField + '=([^&]*)'), - matches; - - if (baidu.lang.isFunction(callback)) { - callbackName = prefix + Math.floor(Math.random() * 2147483648).toString(36); - window[callbackName] = getCallBack(0); - } else if(baidu.lang.isString(callback)){ - callbackName = callback; - } else { - if (matches = reg.exec(url)) { - callbackName = matches[2]; - } - } - - if( timeOut ){ - timer = setTimeout(getCallBack(1), timeOut); - } - url = url.replace(reg, '\x241' + queryField + '=' + callbackName); - - if (url.search(reg) < 0) { - url += (url.indexOf('?') < 0 ? '?' : '&') + queryField + '=' + callbackName; - } - baidu.sio._createScriptTag(scr, url, charset); - - /* - * 返回一个函数,用于立即(挂在window上)或者超时(挂在setTimeout中)时执行 - */ - function getCallBack(onTimeOut){ - /*global callbackName, callback, scr, options;*/ - return function(){ - try { - if( onTimeOut ){ - options.onfailure && options.onfailure(); - }else{ - callback.apply(window, arguments); - clearTimeout(timer); - } - window[callbackName] = null; - delete window[callbackName]; - } catch (exception) { - } finally { - baidu.sio._removeScriptTag(scr); - } - } - } -}; - -/** - * 通过请求一个图片的方式令服务器存储一条日志 - * @function - * @grammar baidu.sio.log(url) - * @param {string} url 要发送的地址. - * @author: int08h,leeight - */ -baidu.sio.log = function(url) { - var img = new Image(), - key = 'tangram_sio_log_' + Math.floor(Math.random() * - 2147483648).toString(36); - window[key] = img; - - img.onload = img.onerror = img.onabort = function() { - img.onload = img.onerror = img.onabort = null; - - window[key] = null; - img = null; - }; - img.src = url; -}; - - - -/* - * Tangram - * Copyright 2009 Baidu Inc. All rights reserved. - * - * path: baidu/json.js - * author: erik - * version: 1.1.0 - * date: 2009/12/02 - */ - - -/** - * 操作json对象的方法 - * @namespace baidu.json - */ -baidu.json = baidu.json || {}; -/* - * Tangram - * Copyright 2009 Baidu Inc. All rights reserved. - * - * path: baidu/json/parse.js - * author: erik, berg - * version: 1.2 - * date: 2009/11/23 - */ - - - -/** - * 将字符串解析成json对象。注:不会自动祛除空格 - * @name baidu.json.parse - * @function - * @grammar baidu.json.parse(data) - * @param {string} source 需要解析的字符串 - * @remark - * 该方法的实现与ecma-262第五版中规定的JSON.parse不同,暂时只支持传入一个参数。后续会进行功能丰富。 - * @meta standard - * @see baidu.json.stringify,baidu.json.decode - * - * @returns {JSON} 解析结果json对象 - */ -baidu.json.parse = function (data) { - //2010/12/09:更新至不使用原生parse,不检测用户输入是否正确 - return (new Function("return (" + data + ")"))(); -}; -/* - * Tangram - * Copyright 2009 Baidu Inc. All rights reserved. - * - * path: baidu/json/decode.js - * author: erik, cat - * version: 1.3.4 - * date: 2010/12/23 - */ - - - -/** - * 将字符串解析成json对象,为过时接口,今后会被baidu.json.parse代替 - * @name baidu.json.decode - * @function - * @grammar baidu.json.decode(source) - * @param {string} source 需要解析的字符串 - * @meta out - * @see baidu.json.encode,baidu.json.parse - * - * @returns {JSON} 解析结果json对象 - */ -baidu.json.decode = baidu.json.parse; -/* - * Tangram - * Copyright 2009 Baidu Inc. All rights reserved. - * - * path: baidu/json/stringify.js - * author: erik - * version: 1.1.0 - * date: 2010/01/11 - */ - - - -/** - * 将json对象序列化 - * @name baidu.json.stringify - * @function - * @grammar baidu.json.stringify(value) - * @param {JSON} value 需要序列化的json对象 - * @remark - * 该方法的实现与ecma-262第五版中规定的JSON.stringify不同,暂时只支持传入一个参数。后续会进行功能丰富。 - * @meta standard - * @see baidu.json.parse,baidu.json.encode - * - * @returns {string} 序列化后的字符串 - */ -baidu.json.stringify = (function () { - /** - * 字符串处理时需要转义的字符表 - * @private - */ - var escapeMap = { - "\b": '\\b', - "\t": '\\t', - "\n": '\\n', - "\f": '\\f', - "\r": '\\r', - '"' : '\\"', - "\\": '\\\\' - }; - - /** - * 字符串序列化 - * @private - */ - function encodeString(source) { - if (/["\\\x00-\x1f]/.test(source)) { - source = source.replace( - /["\\\x00-\x1f]/g, - function (match) { - var c = escapeMap[match]; - if (c) { - return c; - } - c = match.charCodeAt(); - return "\\u00" - + Math.floor(c / 16).toString(16) - + (c % 16).toString(16); - }); - } - return '"' + source + '"'; - } - - /** - * 数组序列化 - * @private - */ - function encodeArray(source) { - var result = ["["], - l = source.length, - preComma, i, item; - - for (i = 0; i < l; i++) { - item = source[i]; - - switch (typeof item) { - case "undefined": - case "function": - case "unknown": - break; - default: - if(preComma) { - result.push(','); - } - result.push(baidu.json.stringify(item)); - preComma = 1; - } - } - result.push("]"); - return result.join(""); - } - - /** - * 处理日期序列化时的补零 - * @private - */ - function pad(source) { - return source < 10 ? '0' + source : source; - } - - /** - * 日期序列化 - * @private - */ - function encodeDate(source){ - return '"' + source.getFullYear() + "-" - + pad(source.getMonth() + 1) + "-" - + pad(source.getDate()) + "T" - + pad(source.getHours()) + ":" - + pad(source.getMinutes()) + ":" - + pad(source.getSeconds()) + '"'; - } - - return function (value) { - switch (typeof value) { - case 'undefined': - return 'undefined'; - - case 'number': - return isFinite(value) ? String(value) : "null"; - - case 'string': - return encodeString(value); - - case 'boolean': - return String(value); - - default: - if (value === null) { - return 'null'; - } else if (value instanceof Array) { - return encodeArray(value); - } else if (value instanceof Date) { - return encodeDate(value); - } else { - var result = ['{'], - encode = baidu.json.stringify, - preComma, - item; - - for (var key in value) { - if (Object.prototype.hasOwnProperty.call(value, key)) { - item = value[key]; - switch (typeof item) { - case 'undefined': - case 'unknown': - case 'function': - break; - default: - if (preComma) { - result.push(','); - } - preComma = 1; - result.push(encode(key) + ':' + encode(item)); - } - } - } - result.push('}'); - return result.join(''); - } - } - }; -})(); -/* - * Tangram - * Copyright 2009 Baidu Inc. All rights reserved. - * - * path: baidu/json/encode.js - * author: erik, cat - * version: 1.3.4 - * date: 2010/12/23 - */ - - - -/** - * 将json对象序列化,为过时接口,今后会被baidu.json.stringify代替 - * @name baidu.json.encode - * @function - * @grammar baidu.json.encode(value) - * @param {JSON} value 需要序列化的json对象 - * @meta out - * @see baidu.json.decode,baidu.json.stringify - * - * @returns {string} 序列化后的字符串 - */ -baidu.json.encode = baidu.json.stringify; diff --git a/public/ueditor/dialogs/wordimage/wordimage.html b/public/ueditor/dialogs/wordimage/wordimage.html deleted file mode 100644 index 670db71..0000000 --- a/public/ueditor/dialogs/wordimage/wordimage.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - -
    -
    - -
    -
    -
    -
    -
    - -
    - : -
    -
    -
    - - - - - - \ No newline at end of file diff --git a/public/ueditor/dialogs/wordimage/wordimage.js b/public/ueditor/dialogs/wordimage/wordimage.js deleted file mode 100644 index 98f3a22..0000000 --- a/public/ueditor/dialogs/wordimage/wordimage.js +++ /dev/null @@ -1,157 +0,0 @@ -/** - * Created by JetBrains PhpStorm. - * User: taoqili - * Date: 12-1-30 - * Time: 下午12:50 - * To change this template use File | Settings | File Templates. - */ - - - -var wordImage = {}; -//(function(){ -var g = baidu.g, - flashObj,flashContainer; - -wordImage.init = function(opt, callbacks) { - showLocalPath("localPath"); - //createCopyButton("clipboard","localPath"); - createFlashUploader(opt, callbacks); - addUploadListener(); - addOkListener(); -}; - -function hideFlash(){ - flashObj = null; - flashContainer.innerHTML = ""; -} -function addOkListener() { - dialog.onok = function() { - if (!imageUrls.length) return; - var urlPrefix = editor.getOpt('imageUrlPrefix'), - images = domUtils.getElementsByTagName(editor.document,"img"); - editor.fireEvent('saveScene'); - for (var i = 0,img; img = images[i++];) { - var src = img.getAttribute("word_img"); - if (!src) continue; - for (var j = 0,url; url = imageUrls[j++];) { - if (src.indexOf(url.original.replace(" ","")) != -1) { - img.src = urlPrefix + url.url; - img.setAttribute("_src", urlPrefix + url.url); //同时修改"_src"属性 - img.setAttribute("title",url.title); - domUtils.removeAttributes(img, ["word_img","style","width","height"]); - editor.fireEvent("selectionchange"); - break; - } - } - } - editor.fireEvent('saveScene'); - hideFlash(); - }; - dialog.oncancel = function(){ - hideFlash(); - } -} - -/** - * 绑定开始上传事件 - */ -function addUploadListener() { - g("upload").onclick = function () { - flashObj.upload(); - this.style.display = "none"; - }; -} - -function showLocalPath(id) { - //单张编辑 - var img = editor.selection.getRange().getClosedNode(); - var images = editor.execCommand('wordimage'); - if(images.length==1 || img && img.tagName == 'IMG'){ - g(id).value = images[0]; - return; - } - var path = images[0]; - var leftSlashIndex = path.lastIndexOf("/")||0, //不同版本的doc和浏览器都可能影响到这个符号,故直接判断两种 - rightSlashIndex = path.lastIndexOf("\\")||0, - separater = leftSlashIndex > rightSlashIndex ? "/":"\\" ; - - path = path.substring(0, path.lastIndexOf(separater)+1); - g(id).value = path; -} - -function createFlashUploader(opt, callbacks) { - //由于lang.flashI18n是静态属性,不可以直接进行修改,否则会影响到后续内容 - var i18n = utils.extend({},lang.flashI18n); - //处理图片资源地址的编码,补全等问题 - for(var i in i18n){ - if(!(i in {"lang":1,"uploadingTF":1,"imageTF":1,"textEncoding":1}) && i18n[i]){ - i18n[i] = encodeURIComponent(editor.options.langPath + editor.options.lang + "/images/" + i18n[i]); - } - } - opt = utils.extend(opt,i18n,false); - var option = { - createOptions:{ - id:'flash', - url:opt.flashUrl, - width:opt.width, - height:opt.height, - errorMessage:lang.flashError, - wmode:browser.safari ? 'transparent' : 'window', - ver:'10.0.0', - vars:opt, - container:opt.container - } - }; - - option = extendProperty(callbacks, option); - flashObj = new baidu.flash.imageUploader(option); - flashContainer = $G(opt.container); -} - -function extendProperty(fromObj, toObj) { - for (var i in fromObj) { - if (!toObj[i]) { - toObj[i] = fromObj[i]; - } - } - return toObj; -} - -//})(); - -function getPasteData(id) { - baidu.g("msg").innerHTML = lang.copySuccess + "
    "; - setTimeout(function() { - baidu.g("msg").innerHTML = ""; - }, 5000); - return baidu.g(id).value; -} - -function createCopyButton(id, dataFrom) { - baidu.swf.create({ - id:"copyFlash", - url:"fClipboard_ueditor.swf", - width:"58", - height:"25", - errorMessage:"", - bgColor:"#CBCBCB", - wmode:"transparent", - ver:"10.0.0", - vars:{ - tid:dataFrom - } - }, id - ); - - var clipboard = baidu.swf.getMovie("copyFlash"); - var clipinterval = setInterval(function() { - if (clipboard && clipboard.flashInit) { - clearInterval(clipinterval); - clipboard.setHandCursor(true); - clipboard.setContentFuncName("getPasteData"); - //clipboard.setMEFuncName("mouseEventHandler"); - } - }, 500); -} -createCopyButton("clipboard", "localPath"); \ No newline at end of file diff --git a/public/ueditor/index.html b/public/ueditor/index.html deleted file mode 100644 index a416418..0000000 --- a/public/ueditor/index.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - 完整demo - - - - - - - - - - -
    -

    完整demo

    - -
    -
    -
    - - - - - - - - - - - -
    -
    - - - - - - - -
    - -
    - - -
    - -
    -
    - - -
    - - - - \ No newline at end of file diff --git a/public/ueditor/lang/en/en.js b/public/ueditor/lang/en/en.js deleted file mode 100644 index c7e22f5..0000000 --- a/public/ueditor/lang/en/en.js +++ /dev/null @@ -1,684 +0,0 @@ -/** - * Created with JetBrains PhpStorm. - * User: taoqili - * Date: 12-6-12 - * Time: 下午6:57 - * To change this template use File | Settings | File Templates. - */ -UE.I18N['en'] = { - 'labelMap':{ - 'anchor':'Anchor', 'undo':'Undo', 'redo':'Redo', 'bold':'Bold', 'indent':'Indent', 'snapscreen':'SnapScreen', - 'italic':'Italic', 'underline':'Underline', 'strikethrough':'Strikethrough', 'subscript':'SubScript','fontborder':'text border', - 'superscript':'SuperScript', 'formatmatch':'Format Match', 'source':'Source', 'blockquote':'BlockQuote', - 'pasteplain':'PastePlain', 'selectall':'SelectAll', 'print':'Print', 'preview':'Preview', - 'horizontal':'Horizontal', 'removeformat':'RemoveFormat', 'time':'Time', 'date':'Date', - 'unlink':'Unlink', 'insertrow':'InsertRow', 'insertcol':'InsertCol', 'mergeright':'MergeRight', 'mergedown':'MergeDown', - 'deleterow':'DeleteRow', 'deletecol':'DeleteCol', 'splittorows':'SplitToRows','insertcode':'insert code', - 'splittocols':'SplitToCols', 'splittocells':'SplitToCells','deletecaption':'DeleteCaption','inserttitle':'InsertTitle', - 'mergecells':'MergeCells', 'deletetable':'DeleteTable', 'cleardoc':'Clear', 'insertparagraphbeforetable':"InsertParagraphBeforeTable", - 'fontfamily':'FontFamily', 'fontsize':'FontSize', 'paragraph':'Paragraph','simpleupload':'Single Image','insertimage':'Multi Image','edittable':'Edit Table', 'edittd':'Edit Td','link':'Link', - 'emotion':'Emotion', 'spechars':'Spechars', 'searchreplace':'SearchReplace', 'map':'BaiduMap', 'gmap':'GoogleMap', - 'insertvideo':'Video', 'help':'Help', 'justifyleft':'JustifyLeft', 'justifyright':'JustifyRight', 'justifycenter':'JustifyCenter', - 'justifyjustify':'Justify', 'forecolor':'FontColor', 'backcolor':'BackColor', 'insertorderedlist':'OL', - 'insertunorderedlist':'UL', 'fullscreen':'FullScreen', 'directionalityltr':'EnterFromLeft', 'directionalityrtl':'EnterFromRight', - 'rowspacingtop':'RowSpacingTop', 'rowspacingbottom':'RowSpacingBottom', 'pagebreak':'PageBreak', 'insertframe':'Iframe', 'imagenone':'Default', - 'imageleft':'ImageLeft', 'imageright':'ImageRight', 'attachment':'Attachment', 'imagecenter':'ImageCenter', 'wordimage':'WordImage', - 'lineheight':'LineHeight','edittip':'EditTip','customstyle':'CustomStyle', 'scrawl':'Scrawl', 'autotypeset':'AutoTypeset', - 'webapp':'WebAPP', 'touppercase':'UpperCase', 'tolowercase':'LowerCase','template':'Template','background':'Background','inserttable':'InsertTable', - 'music':'Music', 'charts': 'charts','drafts': 'Load from Drafts' - }, - 'insertorderedlist':{ - 'num':'1,2,3...', - 'num1':'1),2),3)...', - 'num2':'(1),(2),(3)...', - 'cn':'一,二,三....', - 'cn1':'一),二),三)....', - 'cn2':'(一),(二),(三)....', - 'decimal':'1,2,3...', - 'lower-alpha':'a,b,c...', - 'lower-roman':'i,ii,iii...', - 'upper-alpha':'A,B,C...', - 'upper-roman':'I,II,III...' - }, - 'insertunorderedlist':{ - 'circle':'○ Circle', - 'disc':'● Circle dot', - 'square':'■ Rectangle ', - 'dash' :'- Dash', - 'dot' : '。dot' - }, - 'paragraph':{'p':'Paragraph', 'h1':'Title 1', 'h2':'Title 2', 'h3':'Title 3', 'h4':'Title 4', 'h5':'Title 5', 'h6':'Title 6'}, - 'fontfamily':{ - 'songti':'Sim Sun', - 'kaiti':'Sim Kai', - 'heiti':'Sim Hei', - 'lishu':'Sim Li', - 'yahei': 'Microsoft YaHei', - 'andaleMono':'Andale Mono', - 'arial': 'Arial', - 'arialBlack':'Arial Black', - 'comicSansMs':'Comic Sans MS', - 'impact':'Impact', - 'timesNewRoman':'Times New Roman' - }, - 'customstyle':{ - 'tc':'Title center', - 'tl':'Title left', - 'im':'Important', - 'hi':'Highlight' - }, - 'autoupload': { - 'exceedSizeError': 'File Size Exceed', - 'exceedTypeError': 'File Type Not Allow', - 'jsonEncodeError': 'Server Return Format Error', - 'loading':"loading...", - 'loadError':"load error", - 'errorLoadConfig': 'Server config not loaded, upload can not work.', - }, - 'simpleupload':{ - 'exceedSizeError': 'File Size Exceed', - 'exceedTypeError': 'File Type Not Allow', - 'jsonEncodeError': 'Server Return Format Error', - 'loading':"loading...", - 'loadError':"load error", - 'errorLoadConfig': 'Server config not loaded, upload can not work.', - }, - 'elementPathTip':"Path", - 'wordCountTip':"Word Count", - 'wordCountMsg':'{#count} characters entered,{#leave} left. ', - 'wordOverFlowMsg':'The number of characters has exceeded allowable maximum values, the server may refuse to save!', - 'ok':"OK", - 'cancel':"Cancel", - 'closeDialog':"closeDialog", - 'tableDrag':"You must import the file uiUtils.js before drag! ", - 'autofloatMsg':"The plugin AutoFloat depends on EditorUI!", - 'loadconfigError': 'Get server config error.', - 'loadconfigFormatError': 'Server config format error.', - 'loadconfigHttpError': 'Get server config http error.', - 'snapScreen_plugin':{ - 'browserMsg':"Only IE supported!", - 'callBackErrorMsg':"The callback data is wrong,please check the config!", - 'uploadErrorMsg':"Upload error,please check your server environment! " - }, - 'insertcode':{ - 'as3':'ActionScript 3', - 'bash':'Bash/Shell', - 'cpp':'C/C++', - 'css':'CSS', - 'cf':'ColdFusion', - 'c#':'C#', - 'delphi':'Delphi', - 'diff':'Diff', - 'erlang':'Erlang', - 'groovy':'Groovy', - 'html':'HTML', - 'java':'Java', - 'jfx':'JavaFX', - 'js':'JavaScript', - 'pl':'Perl', - 'php':'PHP', - 'plain':'Plain Text', - 'ps':'PowerShell', - 'python':'Python', - 'ruby':'Ruby', - 'scala':'Scala', - 'sql':'SQL', - 'vb':'Visual Basic', - 'xml':'XML' - }, - 'confirmClear':"Do you confirm to clear the Document?", - 'contextMenu':{ - 'delete':"Delete", - 'selectall':"Select all", - 'deletecode':"Delete Code", - 'cleardoc':"Clear Document", - 'confirmclear':"Do you confirm to clear the Document?", - 'unlink':"Unlink", - 'paragraph':"Paragraph", - 'edittable':"Table property", - 'aligncell':'Align cell', - 'aligntable':'Table alignment', - 'tableleft':'Left float', - 'tablecenter':'Center', - 'tableright':'Right float', - 'aligntd':'Cell alignment', - 'edittd':"Cell property", - 'setbordervisible':'set table edge visible', - 'table':"Table", - 'justifyleft':'Justify Left', - 'justifyright':'Justify Right', - 'justifycenter':'Justify Center', - 'justifyjustify':'Default', - 'deletetable':"Delete table", - 'insertparagraphbefore':"InsertedBeforeLine", - 'insertparagraphafter':'InsertedAfterLine', - 'inserttable':'Insert table', - 'insertcaption':'Insert caption', - 'deletecaption':'Delete Caption', - 'inserttitle':'Insert Title', - 'deletetitle':'Delete Title', - 'inserttitlecol':'Insert Title Col', - 'deletetitlecol':'Delete Title Col', - 'averageDiseRow':'AverageDise Row', - 'averageDisCol':'AverageDis Col', - 'deleterow':"Delete row", - 'deletecol':"Delete col", - 'insertrow':"Insert row", - 'insertcol':"Insert col", - 'insertrownext':'Insert Row Next', - 'insertcolnext':'Insert Col Next', - 'mergeright':"Merge right", - 'mergeleft':"Merge left", - 'mergedown':"Merge down", - 'mergecells':"Merge cells", - 'splittocells':"Split to cells", - 'splittocols':"Split to Cols", - 'splittorows':"Split to Rows", - 'tablesort':'Table sorting', - 'enablesort':'Sorting Enable', - 'disablesort':'Sorting Disable', - 'reversecurrent':'Reverse current', - 'orderbyasc':'Order By ASCII', - 'reversebyasc':'Reverse By ASCII', - 'orderbynum':'Order By Num', - 'reversebynum':'Reverse By Num', - 'borderbk':'Border shading', - 'setcolor':'interlaced color', - 'unsetcolor':'Cancel interlacedcolor', - 'setbackground':'Background interlaced', - 'unsetbackground':'Cancel Bk interlaced', - 'redandblue':'Blue and red', - 'threecolorgradient':'Three-color gradient', - 'copy':"Copy(Ctrl + c)", - 'copymsg':"Browser does not support. Please use 'Ctrl + c' instead!", - 'paste':"Paste(Ctrl + v)", - 'pastemsg':"Browser does not support. Please use 'Ctrl + v' instead!" - }, - 'copymsg': "Browser does not support. Please use 'Ctrl + c' instead!", - 'pastemsg': "Browser does not support. Please use 'Ctrl + v' instead!", - 'anthorMsg':"Link", - 'clearColor':'Clear', - 'standardColor':'Standard color', - 'themeColor':'Theme color', - 'property':'Property', - 'default':'Default', - 'modify':'Modify', - 'justifyleft':'Justify Left', - 'justifyright':'Justify Right', - 'justifycenter':'Justify Center', - 'justify':'Default', - 'clear':'Clear', - 'anchorMsg':'Anchor', - 'delete':'Delete', - 'clickToUpload':"Click to upload", - 'unset':'Language hasn\'t been set!', - 't_row':'row', - 't_col':'col', - 'pasteOpt':'Paste Option', - 'pasteSourceFormat':"Keep Source Formatting", - 'tagFormat':'Keep tag', - 'pasteTextFormat':'Keep Text only', - 'more':'More', - 'autoTypeSet':{ - 'mergeLine':"Merge empty line", - 'delLine':"Del empty line", - 'removeFormat':"Remove format", - 'indent':"Indent", - 'alignment':"Alignment", - 'imageFloat':"Image float", - 'removeFontsize':"Remove font size", - 'removeFontFamily':"Remove fontFamily", - 'removeHtml':"Remove redundant HTML code", - 'pasteFilter':"Paste filter", - 'run':"Done", - 'symbol':'Symbol Conversion', - 'bdc2sb':'Full-width to Half-width', - 'tobdc':'Half-width to Full-width' - }, - - 'background':{ - 'static':{ - 'lang_background_normal':'Normal', - 'lang_background_local':'Online', - 'lang_background_set':'Background Set', - 'lang_background_none':'No Background', - 'lang_background_colored':'Colored Background', - 'lang_background_color':'Color Set', - 'lang_background_netimg':'Net-Image', - 'lang_background_align':'Align Type', - 'lang_background_position':'Position', - 'repeatType':{'options':["Center", "Repeat-x", "Repeat-y", "Tile","Custom"]} - }, - 'noUploadImage':"No pictures has been uploaded!", - 'toggleSelect':'Change the active state by click!\n Image Size: ' - }, - //===============dialog i18N======================= - 'insertimage':{ - 'static':{ - 'lang_tab_remote':"Insert", - 'lang_tab_upload':"Local", - 'lang_tab_online':"Manager", - 'lang_tab_search':"Search", - 'lang_input_url':"Address:", - 'lang_input_size':"Size:", - 'lang_input_width':"Width", - 'lang_input_height':"Height", - 'lang_input_border':"Border:", - 'lang_input_vhspace':"Margins:", - 'lang_input_title':"Title:", - 'lang_input_align':'Image Float Style:', - 'lang_imgLoading':"Loading...", - 'lang_start_upload':"Start Upload", - 'lock':{'title':"Lock rate"}, - 'searchType':{'title':"ImageType", 'options':["News", "Wallpaper", "emotions", "photo"]}, - 'searchTxt':{'value':"Enter the search keyword!"}, - 'searchBtn':{'value':"Search"}, - 'searchReset':{'value':"Clear"}, - 'noneAlign':{'title':'None Float'}, - 'leftAlign':{'title':'Left Float'}, - 'rightAlign':{'title':'Right Float'}, - 'centerAlign':{'title':'Center In A Line'} - }, - 'uploadSelectFile':'Select File', - 'uploadAddFile':'Add File', - 'uploadStart':'Start Upload', - 'uploadPause':'Pause Upload', - 'uploadContinue':'Continue Upload', - 'uploadRetry':'Retry Upload', - 'uploadDelete':'Delete', - 'uploadTurnLeft':'Turn Left', - 'uploadTurnRight':'Turn Right', - 'uploadPreview':'Doing Preview', - 'uploadNoPreview':'Can Not Preview', - 'updateStatusReady': 'Selected _ pictures, total _KB.', - 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', - 'updateStatusFinish': 'Total _ pictures (_KB), _ uploaded successfully', - 'updateStatusError': ' and _ upload failed', - 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', - 'errorLoadConfig': 'Server config not loaded, upload can not work.', - 'errorExceedSize':'File Size Exceed', - 'errorFileType':'File Type Not Allow', - 'errorInterrupt':'File Upload Interrupted', - 'errorUploadRetry':'Upload Error, Please Retry.', - 'errorHttp':'Http Error', - 'errorServerUpload':'Server Result Error.', - 'remoteLockError':"Cannot Lock the Proportion between width and height", - 'numError':"Please enter the correct Num. e.g 123,400", - 'imageUrlError':"The image format may be wrong!", - 'imageLoadError':"Error,please check the network or URL!", - 'searchRemind':"Enter the search keyword!", - 'searchLoading':"Image is loading,please wait...", - 'searchRetry':" Sorry,can't find the image,please try again!" - }, - 'attachment':{ - 'static':{ - 'lang_tab_upload': 'Upload', - 'lang_tab_online': 'Online', - 'lang_start_upload':"Start upload", - 'lang_drop_remind':"You can drop files here, a single maximum of 300 files" - }, - 'uploadSelectFile':'Select File', - 'uploadAddFile':'Add File', - 'uploadStart':'Start Upload', - 'uploadPause':'Pause Upload', - 'uploadContinue':'Continue Upload', - 'uploadRetry':'Retry Upload', - 'uploadDelete':'Delete', - 'uploadTurnLeft':'Turn Left', - 'uploadTurnRight':'Turn Right', - 'uploadPreview':'Doing Preview', - 'updateStatusReady': 'Selected _ files, total _KB.', - 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', - 'updateStatusFinish': 'Total _ files (_KB), _ uploaded successfully', - 'updateStatusError': ' and _ upload failed', - 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', - 'errorLoadConfig': 'Server config not loaded, upload can not work.', - 'errorExceedSize':'File Size Exceed', - 'errorFileType':'File Type Not Allow', - 'errorInterrupt':'File Upload Interrupted', - 'errorUploadRetry':'Upload Error, Please Retry.', - 'errorHttp':'Http Error', - 'errorServerUpload':'Server Result Error.' - }, - - 'insertvideo':{ - 'static':{ - 'lang_tab_insertV':"Video", - 'lang_tab_searchV':"Search", - 'lang_tab_uploadV':"Upload", - 'lang_video_url':" URL ", - 'lang_video_size':"Video Size", - 'lang_videoW':"Width", - 'lang_videoH':"Height", - 'lang_alignment':"Alignment", - 'videoSearchTxt':{'value':"Enter the search keyword!"}, - 'videoType':{'options':["All", "Hot", "Entertainment", "Funny", "Sports", "Science", "variety"]}, - 'videoSearchBtn':{'value':"Search in Baidu"}, - 'videoSearchReset':{'value':"Clear result"}, - - 'lang_input_fileStatus':' No file uploaded!', - 'startUpload':{'style':"background:url(upload.png) no-repeat;"}, - - 'lang_upload_size':"Video Size", - 'lang_upload_width':"Width", - 'lang_upload_height':"Height", - 'lang_upload_alignment':"Alignment", - 'lang_format_advice':"Recommends mp4 format." - }, - 'numError':"Please enter the correct Num. e.g 123,400", - 'floatLeft':"Float left", - 'floatRight':"Float right", - 'default':"Default", - 'block':"Display in block", - 'urlError':"The video url format may be wrong!", - 'loading':"  The video is loading, please wait…", - 'clickToSelect':"Click to select", - 'goToSource':'Visit source video ', - 'noVideo':"    Sorry,can't find the video,please try again!", - - 'browseFiles':'Open files', - 'uploadSuccess':'Upload Successful!', - 'delSuccessFile':'Remove from the success of the queue', - 'delFailSaveFile':'Remove the save failed file', - 'statusPrompt':' file(s) uploaded! ', - 'flashVersionError':'The current Flash version is too low, please update FlashPlayer,then try again!', - 'flashLoadingError':'The Flash failed loading! Please check the path or network state', - 'fileUploadReady':'Wait for uploading...', - 'delUploadQueue':'Remove from the uploading queue ', - 'limitPrompt1':'Can not choose more than single', - 'limitPrompt2':'file(s)!Please choose again!', - 'delFailFile':'Remove failure file', - 'fileSizeLimit':'File size exceeds the limit!', - 'emptyFile':'Can not upload an empty file!', - 'fileTypeError':'File type error!', - 'unknownError':'Unknown error!', - 'fileUploading':'Uploading,please wait...', - 'cancelUpload':'Cancel upload', - 'netError':'Network error', - 'failUpload':'Upload failed', - 'serverIOError':'Server IO error!', - 'noAuthority':'No Permission!', - 'fileNumLimit':'Upload limit to the number', - 'failCheck':'Authentication fails, the upload is skipped!', - 'fileCanceling':'Cancel, please wait...', - 'stopUploading':'Upload has stopped...', - - 'uploadSelectFile':'Select File', - 'uploadAddFile':'Add File', - 'uploadStart':'Start Upload', - 'uploadPause':'Pause Upload', - 'uploadContinue':'Continue Upload', - 'uploadRetry':'Retry Upload', - 'uploadDelete':'Delete', - 'uploadTurnLeft':'Turn Left', - 'uploadTurnRight':'Turn Right', - 'uploadPreview':'Doing Preview', - 'updateStatusReady': 'Selected _ files, total _KB.', - 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', - 'updateStatusFinish': 'Total _ files (_KB), _ uploaded successfully', - 'updateStatusError': ' and _ upload failed', - 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', - 'errorLoadConfig': 'Server config not loaded, upload can not work.', - 'errorExceedSize':'File Size Exceed', - 'errorFileType':'File Type Not Allow', - 'errorInterrupt':'File Upload Interrupted', - 'errorUploadRetry':'Upload Error, Please Retry.', - 'errorHttp':'Http Error', - 'errorServerUpload':'Server Result Error.' - }, - 'webapp':{ - 'tip1':"This function provided by Baidu APP,please apply for baidu APPKey webmaster first!", - 'tip2':"And then open the file ueditor.config.js to set it! ", - 'applyFor':"APPLY FOR", - 'anthorApi':"Baidu API" - }, - 'template':{ - 'static':{ - 'lang_template_bkcolor':'Background Color', - 'lang_template_clear' : 'Keep Content', - 'lang_template_select':'Select Template' - }, - 'blank':"Blank", - 'blog':"Blog", - 'resume':"Resume", - 'richText':"Rich Text", - 'scrPapers':"Scientific Papers" - }, - scrawl:{ - 'static':{ - 'lang_input_previousStep':"Previous", - 'lang_input_nextsStep':"Next", - 'lang_input_clear':'Clear', - 'lang_input_addPic':'AddImage', - 'lang_input_ScalePic':'ScaleImage', - 'lang_input_removePic':'RemoveImage', - 'J_imgTxt':{title:'Add background image'} - }, - 'noScarwl':"No paint, a white paper...", - 'scrawlUpLoading':"Image is uploading, please wait...", - 'continueBtn':"Try again", - 'imageError':"Image failed to load!", - 'backgroundUploading':'Image is uploading,please wait...' - }, - 'music':{ - 'static':{ - 'lang_input_tips':"Input singer/song/album, search you interested in music!", - 'J_searchBtn':{value:'Search songs'} - }, - 'emptyTxt':'Not search to the relevant music results, please change a keyword try.', - 'chapter':'Songs', - 'singer':'Singer', - 'special':'Album', - 'listenTest':'Audition' - }, - anchor:{ - 'static':{ - 'lang_input_anchorName':'Anchor Name:' - } - }, - 'charts':{ - 'static':{ - 'lang_data_source':'Data source:', - 'lang_chart_format': 'Chart format:', - 'lang_data_align': 'Align', - 'lang_chart_align_same': 'Consistent with the X-axis Y-axis', - 'lang_chart_align_reverse': 'X-axis Y-axis opposite', - 'lang_chart_title': 'Title', - 'lang_chart_main_title': 'main title:', - 'lang_chart_sub_title': 'sub title:', - 'lang_chart_x_title': 'X-axis title:', - 'lang_chart_y_title': 'Y-axis title:', - 'lang_chart_tip': 'Prompt', - 'lang_cahrt_tip_prefix': 'prefix:', - 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀', - 'lang_chart_data_unit': 'Unit', - 'lang_chart_data_unit_title': 'unit:', - 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃', - 'lang_chart_type': 'Chart type:', - 'lang_prev_btn': 'Previous', - 'lang_next_btn': 'Next' - } - }, - emotion:{ - 'static':{ - 'lang_input_choice':'Choice', - 'lang_input_Tuzki':'Tuzki', - 'lang_input_lvdouwa':'LvDouWa', - 'lang_input_BOBO':'BOBO', - 'lang_input_babyCat':'BabyCat', - 'lang_input_bubble':'Bubble', - 'lang_input_youa':'YouA' - } - }, - gmap:{ - 'static':{ - 'lang_input_address':'Address:', - 'lang_input_search':'Search', - 'address':{value:"Beijing"} - }, - searchError:'Unable to locate the address!' - }, - help:{ - 'static':{ - 'lang_input_about':'About', - 'lang_input_shortcuts':'Shortcuts', - 'lang_input_introduction':"UEditor is developed by Baidu Co.ltd. It is lightweight, customizable , focusing on user experience and etc. , UEditor is based on open source BSD license , allowing free use and redistribution.", - 'lang_Txt_shortcuts':'Shortcuts', - 'lang_Txt_func':'Function', - 'lang_Txt_bold':'Bold', - 'lang_Txt_copy':'Copy', - 'lang_Txt_cut':'Cut', - 'lang_Txt_Paste':'Paste', - 'lang_Txt_undo':'Undo', - 'lang_Txt_redo':'Redo', - 'lang_Txt_italic':'Italic', - 'lang_Txt_underline':'Underline', - 'lang_Txt_selectAll':'Select All', - 'lang_Txt_visualEnter':'Submit', - 'lang_Txt_fullscreen':'Fullscreen' - } - }, - insertframe:{ - 'static':{ - 'lang_input_address':'Address:', - 'lang_input_width':'Width:', - 'lang_input_height':'height:', - 'lang_input_isScroll':'Enable scrollbars:', - 'lang_input_frameborder':'Show frame border:', - 'lang_input_alignMode':'Alignment:', - 'align':{title:"Alignment", options:["Default", "Left", "Right", "Center"]} - }, - 'enterAddress':'Please enter an address!' - }, - link:{ - 'static':{ - 'lang_input_text':'Text:', - 'lang_input_url':'URL:', - 'lang_input_title':'Title:', - 'lang_input_target':'open in new window:' - }, - 'validLink':'Supports only effective when a link is selected', - 'httpPrompt':'The hyperlink you enter should start with "http|https|ftp://"!' - }, - map:{ - 'static':{ - lang_city:"City", - lang_address:"Address", - city:{value:"Beijing"}, - lang_search:"Search", - lang_dynamicmap:"Dynamic map" - }, - cityMsg:"Please enter the city name!", - errorMsg:"Can't find the place!" - }, - searchreplace:{ - 'static':{ - lang_tab_search:"Search", - lang_tab_replace:"Replace", - lang_search1:"Search", - lang_search2:"Search", - lang_replace:"Replace", - lang_searchReg:'Support regular expression ,which starts and ends with a slash ,for example "/expression/"', - lang_searchReg1:'Support regular expression ,which starts and ends with a slash ,for example "/expression/"', - lang_case_sensitive1:"Case sense", - lang_case_sensitive2:"Case sense", - nextFindBtn:{value:"Next"}, - preFindBtn:{value:"Preview"}, - nextReplaceBtn:{value:"Next"}, - preReplaceBtn:{value:"Preview"}, - repalceBtn:{value:"Replace"}, - repalceAllBtn:{value:"Replace all"} - }, - getEnd:"Has the search to the bottom!", - getStart:"Has the search to the top!", - countMsg:"Altogether replaced {#count} character(s)!" - }, - snapscreen:{ - 'static':{ - lang_showMsg:"You should install the UEditor screenshots program first!", - lang_download:"Download!", - lang_step1:"Step1:Download the program and then run it", - lang_step2:"Step2:After complete install,try to click the button again" - } - }, - spechars:{ - 'static':{}, - tsfh:"Special", - lmsz:"Roman", - szfh:"Numeral", - rwfh:"Japanese", - xlzm:"The Greek", - ewzm:"Russian", - pyzm:"Phonetic", - yyyb:"English", - zyzf:"Others" - }, - 'edittable':{ - 'static':{ - 'lang_tableStyle':'Table style', - 'lang_insertCaption':'Add table header row', - 'lang_insertTitle':'Add table title row', - 'lang_insertTitleCol':'Add table title col', - 'lang_tableSize':'Automatically adjust table size', - 'lang_autoSizeContent':'Adaptive by form text', - 'lang_orderbycontent':"Table of contents sortable", - 'lang_autoSizePage':'Page width adaptive', - 'lang_example':'Example', - 'lang_borderStyle':'Table Border', - 'lang_color':'Color:' - }, - captionName:'Caption', - titleName:'Title', - cellsName:'text', - errorMsg:'There are merged cells, can not sort.' - }, - 'edittip':{ - 'static':{ - lang_delRow:'Delete entire row', - lang_delCol:'Delete entire col' - } - }, - 'edittd':{ - 'static':{ - lang_tdBkColor:'Background Color:' - } - }, - 'formula':{ - 'static':{ - } - }, - wordimage:{ - 'static':{ - lang_resave:"The re-save step", - uploadBtn:{src:"upload.png", alt:"Upload"}, - clipboard:{style:"background: url(copy.png) -153px -1px no-repeat;"}, - lang_step:" 1. Click top button to copy the url and then open the dialog to paste it. 2. Open after choose photos uploaded process." - }, - fileType:"Image", - flashError:"Flash initialization failed!", - netError:"Network error! Please try again!", - copySuccess:"URL has been copied!", - - 'flashI18n':{ - lang:encodeURI( '{"UploadingState":"totalNum: ${a},uploadComplete: ${b}", "BeforeUpload":"waitingNum: ${a}", "ExceedSize":"Size exceed${a}", "ErrorInPreview":"Preview failed", "DefaultDescription":"Description", "LoadingImage":"Loading..."}' ), - uploadingTF:encodeURI( '{"font":"Arial", "size":12, "color":"0x000", "bold":"true", "italic":"false", "underline":"false"}' ), - imageTF:encodeURI( '{"font":"Arial", "size":11, "color":"red", "bold":"false", "italic":"false", "underline":"false"}' ), - textEncoding:"utf-8", - addImageSkinURL:"addImage.png", - allDeleteBtnUpSkinURL:"allDeleteBtnUpSkin.png", - allDeleteBtnHoverSkinURL:"allDeleteBtnHoverSkin.png", - rotateLeftBtnEnableSkinURL:"rotateLeftEnable.png", - rotateLeftBtnDisableSkinURL:"rotateLeftDisable.png", - rotateRightBtnEnableSkinURL:"rotateRightEnable.png", - rotateRightBtnDisableSkinURL:"rotateRightDisable.png", - deleteBtnEnableSkinURL:"deleteEnable.png", - deleteBtnDisableSkinURL:"deleteDisable.png", - backgroundURL:'', - listBackgroundURL:'', - buttonURL:'button.png' - } - }, - 'autosave': { - 'success':'Local conservation success' - } -}; diff --git a/public/ueditor/lang/en/images/addimage.png b/public/ueditor/lang/en/images/addimage.png deleted file mode 100644 index 3a2fd17121b9e0d435b2ca082d696c33b9f27b79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3373 zcmV+|4bt+7P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00075Nkl3`{TEJie8u#ZKCX-pjWHM`TbtWcWh*2now&&s;3`jv3 z8BYw~jZ)fbpT6HuOAd#Fpp?3}F|9R}Qcz047z1Mr2q7SZfKm!dDICYaluc``m z=TJ&vHk%;`0&vc+&`PLMN@Q6E$8kUinJmN_K&2G2ECXW<%jFWD=QReDAUWp2I$*oq)}A+;jTPd2K1Y%y({kZ5+pbothh30!4k1Kshd$ok@%jB_?f>!i4gih! zZSA%`RqN{iYc5?P))@(p)Rt07acK?7qJ?xw0?iT$m!UW4 z;_ve6`Q=OWE`x&L;|Sk-_kHjE-~YYuUHTi1M&Cn|fxZVQgPMN$yS{f^E1&%f8ADSq z!|x|zo*kp7-nDG~D91*gPQD0tjoZfb@^*2?I${CbknseSM_v`GHp$!@m&79CO>wW8 zwhl_<_wB=EG8z&~a&#Eb{N5YEJ-3IoUjm$m7(un2i_SA-&*p5tCVN(AUeQaMo#LA5 z=aTKm-IG|@u=fAh&iSXs*A(4zg@4{=^M6_3M7#wBO+1c4s`lD^8`ms!*sOI#;9YZ^ zBcF3+RO-Xpv$G95RYC>5o6JFJV=jSxbi`1-&2Ro}Iu{#rNf5J5((^6sf6&bqqXh8H z5+W1P5QK>etklXEj4aG_oOr@I>a(S6<;)SE*toYxk1;0R% z`>N8PF(SZ{LKiA_vD#EOz+YEyts^yeMAV&P)rM?lKv2-qXPi+RPDT$Pv?ig%s%zFz zCG7!vVGg4=d2SK*5JI{rGZyLjB4$#Ntz1RL2M%seBHGsIcn6uf4HY9@%l`b@8)*-W zzOms*n^yqn?Tbi9a=W=1G9Zb%yj^hdrQ=!`QcZyZ8Y0e zxMGl0+n6TZ9dn#u)9Z&Gsa!a92udR{2e{@uVnM}7S7eWCB!C67-N}`6FM!r>s^FQP zh9+-P@!+I$WNFgh`G*Of7$(EUkOsH&gU>Hmr61I@n(=mlUC8F11eskof`0s$cPDZw ZzyK$sgmq7P@T33$002ovPDHLkV1jUEUt0hG diff --git a/public/ueditor/lang/en/images/alldeletebtnupskin.png b/public/ueditor/lang/en/images/alldeletebtnupskin.png deleted file mode 100644 index 61658ce6f10164478ce293c05f1f0485a8fa1fc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 743 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 P9go0R-$Jhf?tK5Bgo^WU diff --git a/public/ueditor/lang/en/images/button.png b/public/ueditor/lang/en/images/button.png deleted file mode 100644 index 098874cb1fa85852d77ba9acbb5850c91c341fb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4929 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 diff --git a/public/ueditor/lang/en/images/deletedisable.png b/public/ueditor/lang/en/images/deletedisable.png deleted file mode 100644 index c8ee75094f59f0c1262806fd294d361f30f64f58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 649 zcmV;40(Sk0P)!u-Pc3GOd!YPO+bG=gGoA_gW7h+<&i6W@>CzIUsorkT}tXKy|I-GoR_nf%RY$+yzqrWn_y0c| zycG_I116IRG@DK0sZ-E55u|Ou1fok>7zp9LsHJgReXhe;7C4$VS;)mE^wOWxM5!>w+j7B4b z!(p<+cswRyO2rY#*XuP527_xko|w>=_a0qmu_(~#bP__L5ZG)saJ${)TYOfjR7kAi zYvg9L`EQ38LQ-=rdwc{0EpJ`Z=~U9|_2kw4eh&tN0eJ55 jcWg?)n1^9d$t00000NkvXXu0mjfULPWN diff --git a/public/ueditor/lang/en/images/deleteenable.png b/public/ueditor/lang/en/images/deleteenable.png deleted file mode 100644 index 26acc883567c5d7fde8de3ba052d7754a5b1c539..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 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 F`FAsl-Jbve diff --git a/public/ueditor/lang/en/images/localimage.png b/public/ueditor/lang/en/images/localimage.png deleted file mode 100644 index 12c8e6aefa8fd16287ac77bbecd7d5b58c3fc837..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3083 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 Z1^`gxH94g;riuUn002ovPDHLkV1oEm+S&jB diff --git a/public/ueditor/lang/en/images/music.png b/public/ueditor/lang/en/images/music.png deleted file mode 100644 index 2f495fe92ffecdce42b74fd57dca2687414711fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91561 zcmcHAV{j+Y!!P(46DJcpnb>wRv2EM7F|lpiwr$(C@r!+D{?D_uwR`W2-Mh72b^6%}DcMP3J`{D@*vL?-oaxWj>*Vi>~#|&G)|BAIb+Ly+Qda`@kiF@1B5lqg7 zLkI1IbGNps*G$a>fb)Q-M<-?F;u01jpihq;|7Cgm(_Q0RkYF-w5pVv!E}MEY`2MD-#=8{-eA32hfi*u39SEqu7UtrF4blo}`s{nxD!Rn??c&-VgvzX#nU;g1q zCoAs5T(F()kjhQX!BI+Z(-p&a-2HvX$w&9(mfKT$koH(6;=ENhL8e6n9h@2S_;lyG z*>_hHUzp8`vSY=Sa6s{A?&a_@1DQU@)08@ub5v7KyGmM&vv(8-h5c9_sJic^B%6ag z)ZEjzIO!mfsWWmtXN-)v&&ajR;#C=t`2r$QwjvJ7Lg=FfYqH(s_pY$D0q^+bP&_;% z4XBerUCkx!w%m>lAP@>AVT^&_77(EH()=lZz}b42mL-)Icr_B47=A=THk%=0w=4N! zIUma*r_@uIgYI_`bGajDH`x^3Q|AR`+4Ehf>lT~zFvMhYk3uP$j%6nJJLAF$a0QWK zw+uDMvxia;(^1!Xy{MpiKb9r0wC^>&jro>8^v6lJCHjs;N$~M~tg14KnS@OQb@Zcj zyKfx>;&o3RDcm9o1=g1=BQAh8qa? zMwIA_{Co6i*l<|900}dL%!N<}8VQ&devyI)F{}0-x|VjZ;ehiTd*%geTOZd&CVL(4 zPMkf}wU78KLg>fo*-Uq!M|ULi@VyHubmhU%;czrdgRtL-SoV1r(&oSGa}IOtEH-*f z8h$_BCk>l-nknwdkn=rku$Dx`?>uHaZ^4 zGIp^)RywnaC)meICz#{jS#mC#b#hpCI-by!k{JQ9uN=@oVBHr;@{!NTQU+yUBxA`W9yo7 z!??q9k)VzOtjDLWmP_Z=fI)$mvZ6doIca*-B4r9H0W(d1rFGpUWn#%NKJ^b$!*7ts zU`&(QUSyM@T7h&_PcUQw0>V0zf%v7#XvgU;Hpcy7V&Z(thWaZzmzAl=lc<}__pA{f zq&mkId(PKJQ(PH{>yoalfw1FdPiftSjuuaLhN(ImSgR49Q|7F&b6&lv&#Po62IZx# z^=qyKjj=0hwdunAtuo~(g{u9h%1^=7$~tIKhtr&mD<>JUDB2J6<##%=@%M4Lx+GBv zK}>SGB*7t<7FSojR~EG|*ks#2fT3|=B^9pPyA)T8{ zOC9J6eQc=Y5wV0~TL{Ptmj71PGtSFD4HX2`kG!@(h+Ri_nNM zP%1d~Ok*oVsyrE7_mYr$)i6b0-LsJZCRmjt*c-!h2SVBt{K7O!Krlw3(TJc4D?|Z* z9W%GF0#-tUmyP~WgOk3-fqnyM4he38xA#qeh!v+iCW)-kCuFi$arKKG$lQ34zRFJQ zN=)c6Fs|avn#1MM;%B;Xut`#$y7BH=5isb?tVnI)A0k&h=%+HyX}=Rx zS(Y4v*Q}Z|sj?XU7mNGg83eTbRJ=+Sc$Ek$t*kVxHM7RNhSbAN-kOHOGwf#*Y9TExzCtj^JltwtA1-3y$3foJ(Cq{^Q8C@rA*= zGSvd7$XB!mfvWgyjR`Q1!7uDhI&n-qp#xK)Jylw!ms&Wt*7}HKykQzOE;$)~ekL%D zY}Yv2gE(NZy;TLdKVnz~4`LPv2(H+v)|*Z1xbs?JnH^$Ptu9=YX--ouM06un9|^^XCb z04}1XA($iX=eYbaAqEdpZlP+bX%t<+i${i3%%dlE4l54m1TB|XLz9FJ$87%*K7Cv1 z@Vf$5KBJ;y>T&7#$3$@Z%lv%-wjS`j)>Bd6J>(YN40SH!LVPx=$u_xs<(rT_6#Nr3 z6d}hw+bGtT$(()wagAe!3_g<2eJZwWE1s8Z(sP!!J)~tY9z}`F^yZ zSTG{k6?Kg8&Se3m)K!P(ACeq2vH>Vrq7_a{ zVlpy@EVt{PWNNQ7@AnHP0O#edCtfRhKmeS}lm5bG5^lW?wZmol#ykKPh0`c?9F}LV zv&y^)i=*py3WC%NqwAVP)RhN8@l)SzQUr%yI18YDi6)s4wjXE%k)lO&3(Uq(!fW7G zRG&LzLo*u^2%$AwX1JC%N)oCp-!P4=B}%Z%-WT6&?a#BEOZ67$rC+sqGl74>0zsO3 ziAWRScA&I_HaU#Sbez6p-wGY1&?e}qbcVrNp|gpRge^u6Fz?mFqECe|RVYDAa)a%u zKQE*c%bHJOq^6QsZ!2g-V>&HurQ{Ofj}g@NVo*jFAi-0)EhQompu!WFagXgNMK1s4 zsM;`mhxQ&renkIgv9>kZqxdm$ILG%WdPMCPiT~ zU%|a6>kI`2R}3|vo|t;tGmKg?eB#(fC3oEYdo8g+m1yg{2$=lWRz461Zt5B-(61g! zWo7<$%tW&o-NQoiJQm25oK8w$qnVp`PjQt$W|0S|F=m|8Ee)XQhMPaQ2j0>^9oAJZ>YqV>bi?h~X&}mHV+o8q7PH5i>KOBa}f+vURz?3OXqrJGS^`b!XBk+Ltls^br>W zgF3|0pNJbXbnnlvt{DRB#gw?`Q00gN<;(CY;!slxm_&fcQKiB5I@p;w#_Ah1;BeUE za2TYyk1`nrJ;D){-b1@tz*(ptw@jJ_9FI^{&P)NEYXzsdup;f< zt1%YNPU<(lhfHjExo6OnoH6CuYXq5+QCVpSNQuq{&Y&@MozbH@TU$$23+r<*gDRQ} zyw^__k-+O2tdWOsmiihX`*SUb{7i4Q`z}1o!g5u!*fcClDlvNs^qo)5C;vb#yQIMz zr1}#|qfQb6i3`v`WZlbvTYzMqO|azkZxSyvA+EsoN-9%6Bns=$S&i05$7kBQRV1z$i6%*Z&XV2v)(cr@;@<%UJHA$7)MX7#;M2Q+_tdoaEt2eu4S zc3p*aq=cwcQ1zU8VV6gvM-g+vsKQ`^!g$BuEcf~bqla>s+>S=Ki%5+^u$i@=?dwNQ zxa5zdUr$S8$^pg>m|LoQ$ya><6y*L&?BkgM8mb~Xfkd-BR<56jn9da9@rQ|RS27n) z^G|$+y@adO5@vXBr0}@@mMQU>IY_bZb(ZXr)-Jf#tdSd)-&b%BVC!9I*7Fy2&YG1R zy~Eb;1?Ol z^TXFo_=Z?t!MODNaew+x5w0rRYVCso4~P0RoW77E47Ps;I=_OMF#@Lt0nN}erV+@D zrg5XyiW4(=WPJYI$P9B}sfx9NACuXt0ahlKs^G)n4{IEZ)na0#voAc^z(D2+&Kz%TR_Pj{}WhDNbDX3CyYu@)Fo^aU%RpPrhx8RWAQA7VY z&)c5+q>>-`pqeUsIt6t%c5g@iMyRfQQ)W}C;7NjwjIL4JnXwf*o)1EmMZYC9C@I`v zddM|dTuhHFa$PEp#)qDaSL33Fi^@X_FiHCYS5@iM7B&13GLTokOHe>fZhuFwgsafP z_HYXM9bkcCqEUOhn(k6jTrS8{1TN{CNy0z+oC~GKmcTKP&Y;Zk(7cZZ!Mtbs_RsZn*j~L|+AKClz*dxr=x``SyB! zRZNqa*zmNOSxi52S1PSmt&+{#hrJ&Cv?+pFWBvScS!CoWtwaBv;jZH3FV&4`2Z>|n zc$neW&a0jDW*cs6j3T~OG{1^i@Hx$}+Y#HqRproUG-r3o!smx( z*Mwu9;mYHcCrj-OJWrmjrum)sR}P~*Wn*)t*{wXPb{pJ|wVMBq-CAh2gnW=Os#?K( ziIAqsZViOxZ3;H~#rOkfQa1q0P||0(hQdN`LU||o`AjDs^TW={+w=t=j_r}EB-91ipZ z&3?)uF?)B6S73!xAn~+<{O9u(&6W8aZX$7ecqxxJPfG2^ZjA~sjr{sx#Gd2C3f?kQ zgwrcb?4aB$8upRb&cv+d1A=ZaMjpQcSKggr+;P@m^o-_yutxWhedX}DXSJK>_<_bY z;2RWKHt*XyzCYD!m?32tFY^G(DTPP$foXQ^gn2(kKP_kNN&j8jg{}ev>A9QlYb@sj zyWj{mvJ=b1NSKbjZTGOvv0mNIp>GVFjLdBe4JTrUK$G5~Z`9G$C`}VagchSs&xnus z8Hj|NH@eP04n`!KjX34M>JOnrz6dUf@2|=j74&EF>Db$MPu(3Gb?lt_=Dg4>Pj;w9=}z?;G}E9o{g>L3Kt4$ENd(k_5*_xB5V9un#=$Zc4J# z=o^*n9Tg_g>KnCXC+2%0Mk)70$|4A)+2YF~!dO-bu z<=?LVYdbeFG54PY7yZ`=n+_EFKZ$PjuaQ+J?0@A4YlA&ZwBOrxLe6s{|M2jFX&&zn zt0pxUJfNJVpD4V<>^hHHs~qZ<##z{6_74_%H|oyQU)F02^d(jX5?Z@EtTH2%(5lGC zLZFD`G{0A9;e2mT?_0im2aS%~e<$O!8{-e2twfqb`znf=6|Z-m_IX za;bb4PKJzjVM^Wwe# z2r0UI<0;xLwbCB#3o6=G3Hyu61G<`}^!Sz@#JDzGIj= zuWHT6ZE2%GaP)ra!G$PNrWU!v8oxd5KB1!Xku~#@mqtFSKCzDu zc3zJbd_!0#MOtP9Jb}pY}$sn^xyE9IKEjP~?yOazh?;@}{ zNxM-lxntbnJSev5U9v~IB$f|Q_q=>WyU43_9=lL2vn*%l{AtcYAJ%_a>L>8=Ue>5w2loVoDw!JX#%P86W5dIXDCt&SJOFAv3~N@rq+%Tq0lYpB~HpJSE%V z;&t<|C1&z;?p!72^URwu==TV*Lc4coZXH%2XHz-)y7xN_)Imz1ao7=9h3PzT0Q0Qs zTjC?bYdO=R=JXh3r&*Q(e|GP$(zdH{-Q|?bQ?nOZ-v4!!R{h>A>zjV; zQ`GrpZ}mlYc3$FH)bsYjG^FhfP(Q4A#^-Z;WHYSZZa}G1&tV5U>cCU%?=V)2q zJg<*~nRj2TG*iu>yP6TLA|r=R?Lmy&3qz zzg%`b&gU)Wa+pGIHLq4DvA}EEnJ<{^SC3oH)`Cdw3`dp(dLhN;ZzFKQn z@(4!5F|e5hPyT{iIeRJHBb`D_A{PuF%{P*$trl^CFWN;se-fbg_5Fyl?e_dY2>s|c zDdWrShHeb{cEd3*parJnr+U=C+|Ci?l8Xj;-H|L^U@Gj{AM?yAbjOkB&vwo{ljNSJ z^?lXt7+<&xifXnT7X;5q0jzOEHe&TufPMn%Paw|&Ik)c^3fmDMzQ>ul7y@0S?%{~* ze?zDz1t|r1J+}<+sGYKRKyT1zHbmEH#(5s&>RSHd*z3#IJ|;P}P2&E;ICjr!JwwEl zFq|oPS&kHuT&iOx<$yoHxoMC)>L~3P|C;i>{(dH4>=RMQ6@~WUkU|w;5x>}j*J0~5 zG)ujl-hZO%rajA`tjc$<##8$s)vQ#o&J)5&PyMVwoLm$5i~78tb~X8HxA<`m z+`t#q<0utHykot5gRq}F5>-D~;p7-qlAK#WH(va`h1&8oE(h@Be-U8=q>BRy|+Xx`FR$S&V}=Lyl!sx4!LYu!p4mL}c->z?7Tx8>?V3DDvoT z2mj;oU^pU2H1a5exxTjhGA%@`{q9!(FuTT$YK5JSbHZI%|9JtNs&Ht*#}%3jrzfKN zRO5lisn6r+-d7{q3qdTsbLCc$pW+ny{dHG}%P&=dQ{T4ywYl<3+t z{8<0)FrKFW!o9E0^ia<|$9Pvy{p1G(Eyl}~;jV=RgwCLLkv!}N9)Xw8_6O8(aq0dY z-9*BO9r?*by%1{-YU!&5<=R$0CH?WxHVszi{HrNLwE*AXYri~VG<;kZeW9sfC1Ogq z%qmO`%KA@0m+;%T9S3P}Z(OsFNLh>-M5%yEornV6!leZb!6V@m%p!=w$T#k~3j-6F zdG)vSVh}>9{|QTvic89^<%^AjxgO19FgnZ)V)CJUmi}_Cgo>vWamGXJOc`fb>$b2FQT^!P&DCBcd_y8SNyd8ru;sinT}Gsh*nPEky9oEe zP*mQ$f8|-FrEXv)Z((_zV9->sx?NJp2lm_b>B?)-<5y$8{WPG=Pl-|~O)2jO$%iJX zraIA$8KJXiUWIm`P&M+?Dwzt;uj?dK=O5aD6v(0@nx7>wk+pJyYMtyhSEW;Hoy1}ocd)x;D2{kEbjSVXUkl>>U*m@ zx43Pz;Puxjz0||0&hFUY%1}=0u@muJ;Wy6sAi5spdUBfIJk(uG$slCdgjDBhlG$-} ztRB%;_Xjw=f3OkcwmsT}u%PK!b!`{wKBBRp;h4Z`Hrs_rbC;g`%y+r6Q|MdP<#<+} z?SExlSzGbe*<}DXVqco#BRq#K5&Y)T7H~l4YB6`VQy*C$DIQ9X79M4*!rinkFy9-x zdtkqFRwQ$dvno=x!bZ^Iu+H3Ou{G zXgW!?bhJe%-4>|&GJwS|ZeHOctGIRyU~OKqnX?nO!Ip}_!;~vAo}=m*Dd%A`Kyh*}eE$eH1Z+Y^0JWd5~oFV?= zLaW*^pRca6Ms{lm5cCB_Sm=zHVB>W2TKROsuD(-jj=Kn+&I34Vy$$%fWJ6Bp7IO-I z=g#o2EMkFf&0-#lv<=hK4Fok_7{I(J2$U_}0V7B8SiD(dF<*6YK8E7<=0Az>R4pvL}Sg0LaXd3=*U8I zenp88tL%`*cCLc3Wbfi{R(HssK4Txa8|8Y66s-6IYNr~$`vDg%T>yIpy3AN5uRM?C+5j%m zv6k;>(|rA=V%^+4OJ(gHPPX1Ks&%c-Y_Mfh0bO#{$Bx^Y^W>5`XZ4o8&2w8R?O2Ho zx)H~}4dKk%S8AOHDG$o054za-e_FOTx42;g#Ul2HP3uGO4k|`G)ogB?^sG^hgVpJj z8ona9dI$jCQ2z=X-5!N@n|j9T;xgN1dpV2BQVF*{N@UvHcj;R&r$41_ zk>2qEH2KHuVHARG9Za!6I$O~2uUPj=VK;B+(TWz#L~pmOio2}dsWnJX&)Gz*HZ_&# zyJ~oH;uSZU$}KFv?I=8zTNrd4e&3GG}Fl9_EJ|)Qu_L|On*W|yR4h2t>n>&1s|xu5q!|? zsj4*vp2P}5Oco*6V2ss>5-dZwf|XlWh9IHI!A|v{!A(`=NVQJSOUnZ5U|{W z*nRO3;hTR*R!h#=L9LRd!cFMQgacHe$}bVr}{$1RkKPWyXoD{IL}b#awbSHX%n4Gk3>F^%WM*O z(JGhjgFB)J8an+g(C_4_k#{6U$;_pYcn=O7q9lDIGLF_#%m#U)fU^PU0>r_v2MbzI zMHRZ4zDGm1EJL@PB@n8SZjBBC|4Gb-q>``$#Tt<_jC&fBAPo|prex@c&`-8j-FQas z(BYZT{u(WlTYcA5Aqv;7!#u}2=##-YECP=LuZ=> z3bKJILJ(Q=AL(l|PiV4G#P~ARs1xBW6TT+nqhYG;^2Ek>*mT21E-CIvh>A@ z>k=|W(n)m;n9I|@9d3(1o^b&@a z0y6otB7^!%ssy2amn)eXeF*O42Ys8`E|Q0jlE)-K%2>E$M=ci>2Dd#|eWaBwP8qqb z+$M*iKU}KcJ)F$`;73Tcu;CLlFmZMcTNcNzCDfpy52RZ?QcUI#Eq_dR;*(5AZW%Tr zdkOSWI?FBp;m3%L1LT0R!T)$PY;j-OVwo@r-at(y=NXJbiBl2mM0mW*HF?z#EGK34 zc(nZNfgHN7R8pW^SO_Y2xmeh2c*v|H-XU#yAm!NRk`}_ZSq?W}m zX6f)4orMq4*|2`H8on%k?xkLC+9Ccu_sx&mRE5bxRrmg!b3{ZeDWu>Aa)vqIC@Pt# znG*-q+)3|0^%SNxLhVbEpmJjE!oUuk^bOKLVm`{{<^E1gwPEC22aaETAK_zJWu`!T>59 zQRDY$FU07UEWfcIPyvhmn?dP#bbcOhz$tjkfn^cLroc;#)AR!%a3&UYnJqMTnryd>rPMfWhcO2( zxrFh6Kf`2tO_Stw%{Powb-cn6(`0>3C~(GbELMOiWbPWD*7p9$x;e9WCUDpsH9M=a z)*PAvmmh^!bMm2hKxwh5>8yGZiaNwZk5bx9H@U5G5Lk*D`$!J*QC3R8&U8IgU;*tq zhq+7f0A4c6le!7;b1M5*7EAGGP!Ca3*HC~P31S^dMIlmAyaKL5qfGf3*%;I!eW;+L zi_remp%`VDgFa{3eH+e4fALtkVK(mwoi;-&Oub9zu97ApPG z4iiJ2wZ?D!?S+(trac|#7G{ODEE)w^+^41pt*w=uaq|>;jx{Qy3GeQsl1I$*N<~uF zR;qx2Im{H>j-;KB2e7#?LkqbJIT$g~L>RQ7r@y3}@_%TLQJ#hK2C+NdO?1rR+a2z~ za_2)xPI^yNn^DmGX*!m=U=&0=p$_FUh-5T#U1#opPvRR><3?04g0{Alu!LO{#2k<1 zA1g5pyfhgSMwlRId^;J}rzkp$%wX65bYYRQ;GDad@v@;xrV5ulX6&RJq&bWy;hVT0 z{CaOUA#oOgNTN|X1rIJHqAd~si^JHaV}Ub^dJD8`{fj)>Ih1c6h?uoZ@{8p!K?9t{ zO||_^7B1#!JlJEzVp=d71$~wHV^2t!#aM^d2xh-|lYQdZXZH zLhfW-{-JxBd90crr2P6o)p`b6DKq7ZPQFJpK>Z*+-Sj)Hc9>&1GY4Vqq9CH?-N~pX zxqDqXM9JwJH2t|hLDQut4I~C-+Wz0xoHkn?H0uC$#fiQS;p;L0L&Veb?T{5gVG;3}rg?~B9u?N863QGR zR$~{(YDW81#3p#*wiG?GjggpgjFK`nXpFu;PFRgfM?M%gaQzZ@@Op;Dk)2aLM%Ipm zvQ>(>g-N~b9n|$lpxJHV=$&EW9@=^`kd-#jC0MPCE2|UW@2@-)^H8%PtCk|`2al4A za=OYQn=w2di&x?+;F=yfIm;sJdHDFww0v?=INUI@+RTh!dzFm$VhrY!_D9#7)K6L> z{A6yqLQ8YVGHX>5llOn0lrOXR{&z_k$WwVt3I+{NbHQdw$+@(oQSU6e;TO~^-cR5Q z6Gl@treeyFeuTN061F2ortLV&5H6KW_9R2HXu{kdA1UeFDXs64{W;PeJUcL9d{bf| z<*CNjh@BP#9rb&q7Ae0X_N!<%-qa$3jV>dDpUA1_BF_53C69_{@F5`%yq^3-sHm*7 z#z#XhiO6vHAb5wQ9Gb4kON?~L+VnDQ#o6BxqigYi5wE4*8Ntvk5g`Xg|19+-vAE9& zHO{;WN#?I%E7?mm2`F*3inD?C=`>iyRb#n~qCEYjwpwXa(^cfQbbFi#g#V@1oaHZeMEamlrOv=AQ(JTWb zGC@GLQcw)WZmW|5wOQIk%Z6tZT)+Jv_eBWa?l7E_Ng`TSdGC>@e}Z}7lk~V}8Hvjc z6CIp5%}j>XkKlv7y0I#ru{g_>4+(?E1s}qWs3VI!yLpXYHP|6LWo))F%e$u^WE$$Y z7i@86z37N|W;rCroGK^IjGma28;&bU<8QN*CgRNp0PsP0W6(eR*MC&eEKHawd(d31 z>B@C5c1@?zrDoZ<=UkI;$Y&3BSAMnITFNUrPu62@^P-*w)vW;kL5h~~P=Viak)bPu z++iw~T`8flG3MxLG{G=!&5zX;jQDpg51*O6?~>ymam)m4lgb^Y|*azqTKfK zbQS*#JYx6|ru`}Rr~hZq-iAX6rKs%70R#dC6~WVdVV9b<@9!GH8shH!4~X5H&=n-f z8dw|o&Y{bn(SdW5E11~f#QJT*AMsvbBhPU$c1h88gX)y!-`!nIouRK1wI|3f*dI%j zxg-)9ZVX;Fuj>O?`f;?r!0{NAI|c=rH=b$RCq99)YjJOz1Z7#XFLh$~G6o|jH1>it zI{+T92Z!9QBFSw{dWZiYSLCnWPL6tc zmWL~?I-bHr)3SSP<5Z#JX#ewDXpTs{twgO!0IC(YFDotTf5Gj)+T6gA5eAiiM0{^@ z_;(FX+%pu3lhVoHMc^GD8nre2tFdDfy<`70_AfI3FEsZ5M!9wm z00*bPr2DTM{~8TX^bY?g|2pws$|a_QA^uPHOhs<`6X$lnAD-|S$1(sO)JtPPG-;Bv zAbU+&h5~1xqE&g&U1XLu)K4H3sJpOMJyo(Ad^Mk#Cn+*gkn2k^PyxEqSY#3DB$TVxu><54;Jrpis0sUKJ#Y9ei_?6&|Lh-(dAJNML(PD8fs zx)cpcow^jZ?@N!AM;EPTHT9*+y9+jL)-5i{AJw|sw}7dt-0OV{0_p~%0x zg&vt15XWL}^*0Acdpg;o^$xLt)2bGfYoE7pUJYuMceKYBoFk5mv$jbTz(oQuz#7pw z)Iws;?-*$ZtZyv>qm{zOaKm@x3^ylXHIm(oSUbjCAqtOzTIU$>tC-O9op*NLH#|3{ zeQ2vX&}Q2sCTNpdvs_2}3-IOs#6WMHtaMhc6)Au%psp3gR)5aI8UxRtt;1nWi84!o zv=?vo$%-AASWd~6{W-LHiTK)0{SZsA>Y2rwB+Z*yCo)1hV=j}vvk#U6SG7W*h&@D zEO3Tc)O{`#7WE0f;dFb9UB(k*ldjx%g?LtscSGYBTEk2u)^7pc5LUX5*sv5n{{}oy zd%ow+q!{BHo|Yw6Ki4?hki$L(gc=Anb6{PB72;t^br+)xEMsyJqpqXN8Lw3j-pa5JHia5Sg zoVP$4>C6xChlN7mw=@=*LvW&RUfWPzAxny(Bb_|MKI&{CdLkQtm&esaz?f$Bi-REf zf;@H1L-q+njkNVy8{Ttyt<;If zVuV4B<~W-6#0a9J!SNlcIb=2@=8IRO*P(e^x06OUpzB~kmmL55<^C&2M59i*R!3^N zfd%Rb&==(AmfOTmvwBdnNT8KWUeiAX?{QTjXb`);xT8*WitB0^=>tNV}&F*wfJNNW7_S*exZmh03+j))te)W*yRKx!g)2b{wz@0R`o4zY7FdotprDnWk2P}jB7`MmQ*=(#_d z>3Oe!;s4OKjgHyl`OJbegj?nqWG!ZMCEPzY25{1PU#xuZ=Fo!epx$9OZ|8jlTZT3e zRnalbr}TW(Xdj*Zo#EA8W+mXOBOmD^<`{614K_W}p~7>suEzOL^Ks-G?Hjx*>b9y& z)^Q;!qPAlQn1Ns}cpI-!dIfs(4Z&dkQtU>=tcgn$0`qlwP5#ZRT;FQ^yHKjRf6u-` z{9rOKvr2^Ni6p&k1WWE=x4d!acier0WBkoOVKtBRI$=Whji|?2uo_b`?00-%858{Q zxa_`jdv5Rh>1r>*a>!)jr2t2k2Vq+RLnK#t+|hGKs>Vl>&S?a7whxil2Sb7X?9T zOJKt#|t;NN>&wg;Dn#Gu%S+W2Xb7Ji2!()m+*SUOS!=3De&{JYMEA4({nD z2FT%uxFc(1>jf3pYZlD39!vAQ#~u+&Pr`1hjC-W#ON7rv{z|HUOv9*IkXMhPim#h~J?30}(ByAnt(*F>!{9{M%Y~*rOgb6f zB5?Hu^_6ZYb#JkTgb;4prd>*eSGLY~kKYZ=isoH>S$vrdUX%n$KaLQn5=94ljO&v~ z0MTgixUkw+M86!8YVj4d89bWvyEP6iI)3J4A};K+g_?WveRkDEwcvgKGKF*b$XahO z3X{J{{csLBUShyzDCP;IhCFOjF*7Rb6p=phv4LCG%clQ7gw_9}ap+Zy3saqAr8m1A zsk1f(<(M%0qQURP>D=1&4cOu#l=wDJ z3S_@fxUF6-zn3J4G&r)`zwou-ek?tvzImrpc`|#ihm0)AgjPHot~_XX4uqXIzefpL zv92$wafP7Z`aB|#rEgp}nI-7NRBaec0khhC=h}1XllegIZY!T(M>{|N{ly99Vxqib zXrucPF}kQf#k$r1%jLpO!5(4&N!a`|;AstE-v-A?mh38v*QIOiOn>2O7S-vZmg8e} zh}P8}6|ZpPqz4#ys>+qCvhLR4;*s>Tyrr~mm)>x-K8VX|pI`Yo;ks);99lEtbJI{7 z{dvdA*6=#Q~i7K#pK!0MM8lw8S0cPb}U{8z&^C@mK&T#H%P-d6Cp z0?aLIt0mUyaP!S31u~MF&TmWW99d55-lqB66m6efwD0p9$C6l{9}yee1fg45+Nayo zHWAThE^MxI;IDHPJs6Z1dPL2xVrpAg@RoKBJ76JsKM0+I6o}!Iv|&$4g|bLvMVODg zGU7KVw_@3I6C?PmA!XP&4n1Ih3(RV^+yf16l=1o5d%L2@HtZP2lREc2gnVCeyK>N?fxB9ELakGn9g8j3Yh=0}Ak31m$zty(%+>OlK zFecq6gSo9swFIy303F8(0^Z`GeUQt0`J#(ge3B2Y86jjFvX`~D3w0s$pV|uc{Z-rO zes^v}DVN=OZbYjweCX{BaA)j92~@~a$D7`?&FbA0$mzoU>&ND?OqLBXZ0(4eD~-nH z4niN>+8yh=4(T3*btBQYM^4Mefv~75A9jYkEl^Me=ZjA`#t?6!@Tcu-Nf(q!K|9Hj z*^3PV(8V7U*3E0gcWdq40O(yiY~GAoaEqTBx)W)q#<@iG9UI<6U7y-mCz>iKZWCP_ z8^Y=5TSdilb+uJN{@A2g*{P~gB3J9L} z&Nq3zmk`ysl!Ltw)G|n&{>#UI(l*Xl`Xa4vtUSwyISkP7pwmLyUhl4%y%5N;$m3i$hCWo;G3YI)^g0n z{fUFwKKf?+eXhcm735@AVeM;{V{;0v^wq=?=5utpq;)7;xY=nYfA8`OzbeQvgtCH2 z`|r%^*1waj|4xk7mYMhwK#%zIjrbGHFl@bGSe4#9qF70iP6O&tYt(qn*EWAy@Pu*T za+0xribe^S>9-xClwjzA1cHuPs97YODwY_szUmVe_p|E(i2Id>2WYsw8seH6q3y+5 z)=k#!FIoU--(C{rh+ppiVC~C;n&_InLDc925)l=YCHSBs4+hZivbfQFcgzYyp7;L*XC`J zkZmR^yT#fCYc0-aAjLC=)-81(4NvaBdPmVBMlq|%bA`9(bghEI`s~#?ToqGR6UH$I z{Qghb;{P#tHBmg<>9nWA*4E)$87DW~^3hP7*{i&({@C|3Z$r{g8lK;T=&uvXExMF@fQV)Vg7^K29fb-++?DRsp`%h;Fy=euwG z$tfqtQ$g^vUX-P(BKtN##AA{fK?nrZ+GM+~ZPZ1ISEm^0`1$j!FtUH==6k>(g_1hu zaSl-wo{fkXEfIY7xJhI<0V6fs>beo%kSFLZbb{ALaI(2++@v&yx}ECD)-0o4k=}uU zU95`ROD?q??DCbfB}&d2Wg?M?^c-1$Ei6&2Z1sY>y1Kf-;b1Jz(NECy_U&8!^vb!R z3R%fjwl|vuU?lAs20NP?78brv)s@^3Usm7NgASy5urwXwc0>IoftT^i1a@e+UWlN{d;GobB5N``+VgJ)R$-P zLkJ@b214R57i)p#;Dza(?I%aUNUSjqpTBv}=I{I3h0N3K*k8 zq44t)uct{I4(I1`xFb8NdMbWoWMrXc88)4lG~o^u{Q*7$*%px*b{DG)(d%P4G!IAq z*PXz>O`@-`|D!Cu-@v`e1!5Qdq0)Hw0O4J~X4R+F4-{8Q+(SgW{8mbTfnp)}Smp~;W zJMtz}Jc!+W93S65$mp%Q9*En@?dbSbr8o?m8evB94CP-EqVF2Y*?*SZBn+_s+i-%k${$zWJ$Ng0PLz*@&Uu~U zuT-?Ov>ets7E~ZFlDUZ?Hjt_c*m)CJP>K<)r$>$G-@%13iXQbZdjOo=E7O0vE98+E z^R9^m<&blP%hSm>&ELh9SJV`&jx;)769&H};xgd%BiExp6A{~H6OQ?M!1kgd>tYi^ z@os*eTp7cnqobp8dvxG$$mC&%L7iH(B*M8=%&a)j2N)OLF6R2BPm;zV z*;Uo91Y8+H;fl%<7zzPF0cjs(Z?Gm$T6o9kem+jhMQ7%8e=#$RTuRq=Nq3wuB^<^9 zXzae}0@EU$Ji=@};gws0?A@@t#4>=GBy-jf=e~j*W9T5nT$O)TB+kx3mZW>e&rxkl z1p`3)#y|~r9r#})ozq_5DVQ$sf8f>iF)!P{#OnWtg7{z2xM(0(tb)d&PoF~w6%^F; z{!2??cb@%U5%?cEt!gPxKh(H27!3fBdM>9ktk&M~*udbouz3F+M*E)Lvg!6yVS-s9 zyB=0P(T5zUjQma;o-Z;TE{Bl4y)P>E*9{N63ESt4N>=>T^apUg6H&K4$BXRQm zilyKg)PA~PLGXb(Mj$fYj$-RP5noqo@cDA#hDw5#gzRqiK!)htPziWKuhZc`e3QphpkqU;to{j{9tqvF&<7nov2+ich%Zc5Hd8gY6BDX$ z>nvR-P&&wU2^wKZ6L^_poVG6DxH%9xS+opkp)CN-Wswp`*Qk6!37!AY85wXY*3*K2p{5<4YhfE-fm3Qm$5wwXz?F^#QQ9wq=Dp7P{W1 z72$CRFvMCVXxTcK!j$h0L)c2@-{gg5u(Wm6x=&Kp$s^>U&?_U*Y~G(H|9VwsM_n0p z>EJm3Ipo>+gIAEvmA6oV$LGPVFtz!)JIo$rSq3vmu}OvFAVv08)2zc+3O8`co2^j!7L5rs0<;C$#C7fI;IV#v0r0P>&SAXyni6#fOY)4G8Pntx&4V6p|2 zd|Eqr&xDft=<@Xi_;^GY3;ZB*-Ml!v-nbQX+BB{idq(N-xWXgAcS0$;iqwqwdV3~n z6LU76mum|@wFuh^R#_|WjTuGk0`F^8JXvM!HAU)_RIHg9oOP8eLs$7nQ+(eyv)pi^ zyH4gV#Z`#7TD)Zs$VHjSq*{4QY%|sk^kPvV+^&H)n;d43UtwiKMEDT+q#YAV-SGr@ zV%PfaDa<8_az(5@Dp>9&=UbAL0p)kf&SiY`!+FxS+1RUGeXfXUZuTyiC?UF@+{_+^re!mlHbnai7x-qn(XGQA$ESJ*ju(X3|@RQA=g&p272v_OsLxvw8 zJ}u()tyB!@<}tKn^=r#NI#{K+<&(L`Kk|@x@TA(x(w^V6NL{Ic3}%Y9b6gQ-bqbWe zu&$5jI>Zq5!t0Cqu`V1)(y0os2yKYXMz^>AlStz;mQzk>{@!pF$2qDL05G zmX@OzrMO<=$eCX7MY{%>B07H&H^swb5beHNaae{gpwL8vS2TxWfmKFXBmn0#dV!*4 z;O$hVSooukZju|=at#`~I#}4oT9_Kf%NDqj zB0<;J=-G7_$*xc&dm5=pQ`nzKU~M&$C&e#IH-^JJXlB97G8-mn@11(PviZynFq3@1 zslmsbl`t!JjC9fgv^rHjuHSYyuF7tdx71dPT{Bc4C6DJo3PEzF6f!G8h6rxLsVYd) zAHJ?Ajrl_Oi1E^$1&(e=rZJnuy0r|4zoqp7avNP(h80>=me9}k$JfysWo_86rZ*aI z;IMSS)_h;y`pqcG#x0{$lYDqL@PkOoDh1fc5gz)iZahRG2cDKAii<|WJXx6{AaEsf ziG&BLisXfSXr9E7=7%70mR*EcMIPp|R4{{02MngMIUqfxJuy{akO(>~!#-Y?O^EO_ zK=)3P&l1qwCD~J?2rX6>*?Z87LZ(z`!aW_>Ge8ql!-8tkUd!-V26TFqK1s;NlqwOB z&SpZ=!|n2=q~F|30bn^I{{-Of*^!Pg`)#XAWNSQ?gP+O^?Gy^ihM)Xa5Dx052%?F1^GuEv@V9VyAe2Vp--}L(~nBUj8^Fgo(N>avRHU0z_xgMQi3Qn-+}K?dL9?rAdu|GrFU zU`tqOtztWEKhK3i7KSKKtcbVMnD{6O}cLb0& z6H6}+IxQ`V7`E}`#>ts~8m-t$u@WtoQt}-S&AP_O2Jt$+R7EiqDtxh=AWMDOK^?wT zQNqYrS$Dxd@ayoly`Me}a4Ro*C-pPB^f-`afeNxarcoe_9pQkb8BuHbn8|z)9o%{W zl&sO;-^3egehR6R+`prn1GLz#&rwP{3L42KGy4(<*m`k5JtT&-lZB0g9t?5VD2>E7 zu{B`}=;JZ04Ltr@A@uL2+bCGvD~M3nt{X3-xu;va%4FYBLDcwS*3;v`uS+%+rV#c+ zx~MNj#<4gMJ*|t%?8_mjW`A=F^oJG^;-47zt%#at++Z<%L+W*v7+9 z3Vf8E5LW@7e`=-NyU`b3Rx^(`6IXVMrM`wX%n#EWSOiyw$|N(R3{{naabScZr_{#yZi z0kjkZ+>m!>fEGlG=L;oM;o>O037L0z+*W`ey7rSC>!B-+D`&i^#TX|04I= z6e^*t!})*}@Baw}V`1%}a=C`HRxw}UA-7y$S!ukm4*E7y;vZ6J0^ZC7t^a^MJ?NX9 z%D0$1ejj}z9Of+vv|XS^7a&UIQjjgIg3Il*4Lg{%a97b!`Y^*ao{cv2YGiX8tb zKPJspn6c#z@Q-^7sQ_fj_ZQ~mQoUL~wguGw|&j-0vSLn3sTSn(S5D$*Qnx z$#1v*I}m@AqoT%{v&X^ScQ3B}wCQesZ0Y%c+%sD~>71BQLsgMJ;(Wpz@(xqYMkEyQ zE6S!q*5eSY>DI8L0k&^i^rKYOrZ%1(2R##X!!DN6*{_hW^m1JK3y0t|R2BB_e8BQd zV0Mk&h(RY3@*SrMv&iKh(G10W`T#n7*Lsc5I_(hjAqIIf>cw3~F%AikzbrHLTeoIoC&aM=jnTn9 z(Zg?DB$7q>vb7d92IecJt*E(BxA{nv7toKpAs0OxnCo>7nv-({gUH)&#T%$;7v=nD z{rQ9o_%!veq-=rj5No-{xgHqIbwQijcV1@>f$n1Tn!{%*%1lp$+3prTcrJ>2AdI~# zga=BaabC3XJLg?OVWV{T;gy)1INk13h9tc_7=?v~>s}JaMCCt}D2`&wf~GVse%HKHBlbxE_dMhc=csN6Hc>*XKYC8J$Hi>YO+f_T+X}Qs51zLiDXe8^ z!Ih=7MTH^of~7qZtHMR|p|ZLH;)9EDHJL|Dw1VJ>@s$Z6`$rRcCs(pL2N1NZd&>tM zhK$xtqd%VXBGF7Tpx1zgi@2 zc1LI7PdyR#l2nltzWW9iBCz6G2@DI;3M7}lmo4Ge>Srm%tU{dIP=f;X7L zQZ_{k08N$sMzZlsT?Pi7RU53%qM86ehr(}+H925;sR=Qfm?iRpbH8H%Z z*wJqJ^h{7vkMdw!_yha}gD%!_C{9`S(3Xl{2H&fn{{{bD0PT*Hx(N8|gk6HUnO|C? z9qQ&n$e41u$mT`b!mbD??6G7EaOEf91IzKmvqid9vuh?K$;hUQLvQ*v9k#QV#kI0r z^X9eC?8k>;Z)R`<;!#UAxsTo1Ma7bs?UVJ-EjCPU@?o$4XYHn*BMvMk-bB7}m#f1z z@mg^y&@a^>RuR$52c6m^W8RA!h}Q3{vC7tjkkTiMg0q0rU7{)hI)!P6|06p_pyLGP z;(PRM=#mL#Av??Ibx;_odshEqHHCE}Fn_tvtXA(87aF)*+-WB+$F2g${%;3K2sXVu z4E*xBAG2Csy5hfmB`&KT{{Q>2>MO}hNvB(?oVs#)=b2rGyHh?q+xq;}<WfN~B(9!1zOwL2UQ<_@+J`W}mO8j>LP0Uof&RX;@_8TtD_)wR zF%S%*Ou9JPffc`7(Wt;L8vbKKnbc&ZUyyl}4pPeo5u%KUJa<1gcwgB~>RC#j+{9Xh zl}kl5^JORCK+Ox4XI6*2VXUk2wyjw-d4R@}KV=WBN_}w6q}IyZ1pLsV5I;RZHJvzy ztx!o1t=J~GK0!V*3ME=UhARB@u``|f(+(8NokWpbm1*RJ7q;kt9&NC4zpT@>oe`}t zEqR$A-qam>UZhWZe$A5&Jq;JUZa@mJKPN}j?xH6yCr`oyoBdRP%i-hl&~k`pmuqey zq!8{aF}!|##1JeFobse0_h)`94jj~rer(!4oBbcWj5?`FW@I>gr4<5vgbDZh;;>lP zW7face7Q90VaGJ*9*8>Sdpd97)e5ohm4Kfor4I1YVjd&&1>wYIW5P=*@L0~@?jc|L zev{htG4=djS>z18Nn^r)Mn8}GOuQRL@f0bYXCXc$d!)(Qi2La#9L8Wl=3*6O{1V;% zCj(;+356M=6Dj*^^t1wqbFADYjkT|w zQ8Jz@GRzu7gkX=ql9DoDXa>}tEOEs(P#CWl4Gu^ZCVJa}eFT?u7(*p)r^q0z93QA6Hd85vz9K)b7`U`dBmK%Bh39Mx&U@S7P-QitoR++ z)0Zwo+d8!QOgcV%Nis!0sV@wlcaqE#hEI%s^_l)&SOyTzHyvv2~vA%L<*VVw#ZeLI%=#XEu?;WJ4GY8Y+E}B@Xf` zM8{Qf-KK=#TI7j*b|#-XSH(Xv{bUAUxwc~q0GEh`rGi2y9W6u7-;y$)gB0zKi0h*n z11-ub0LyKW8-p3Gf$uS)uG>#p!UlW9cC^>6uz%yrK^2xJ zeAM5J*uZ)WEq~4wuEA;1hgvm+(Gxq1+J$T2@p)3RhEVEpMb1=?u`M+Oykp|hT7I%D zhzc6wQpj#zyg{DUdNd)8EO&!CB*{-{nF7@X55xMn>Pf?&1}uQXdt>) zWlf|1Lh-Etkq`FA-l}_!Mmf2Y2<+dt7sa;5%%Ax;a(>Ku?K4|V{-Ul-hyR89@iBmI zWL_s`M3m3x*k(PZZEnIRY$EzwcmgH?y*^s*H)KwOE28coG=aui%zjwJRZe&K$zZ3J zt0JCVW;_%{cj)=sB2}_&P1!X>VKQl03Ry6KyR2EUlB}NqaSZxBT6M@8NvFE^VqAHkEGe=TH3LIr!254$A0Pno`ws zEKN5+5^1X_vqL)!6Xpg_wSIc$B{qaC=fzddMW4|Lo^T+&lq%zyj&lmd{karW7wS(t z<8~WYS(5GW5}R&%XogHL!Ba!#fp;`AGoU16QlESnU0mA5Ud%1UX3 zG5MA8c|mYu0f`1e=Y8{=J%H*5`eHr7=R0;5Bst#J&`{$HD zkWBwOL@tc}s(8PIbZHu~(WS~oC-WtRL0#9~ZL~Rsh$(ADL##cx`oIlZ;ei2* zBq&zrk2rY=hpV_27ec0gX^Q0c+THvEH1F zwGlDNMN6Sl!L)qnztk0KG^!&x%cBK5@^n}-8>|z>s)QY+CDm)_14r^#1A);~)*Ttca!(2)9#4M0BZ~c_pzh*&wDS$fH!{NmLS%VomTko zpEdGb$W%;~hs{B}%7Yy|f7144*{^}3z=jv{7MQ#PqFt<`~ z7O`Hl7U%mDhT0i{TTdsMugnEDxB~9L@LBmI*)t3!)R?(tPzjma13U|iKm4cCX^6w! z7IRD&D7hugUla&USi(P`*YY3UN96Q&QX5h}EaYDMuUGy*_QZeR84uPQH(%VIi2<*L z$p7i5nA$sdjN?cXLykWeMm96&-X&Z@7)Sec%u|hbulJ!dYeVbzqKOsV8ecU=pnssb!bAWu@0kX{Tx|U$L=j;0v%x zjE%M3S=&r5ogsgFU@lC7SKIs?dEw}Y7J0_EPJUdTy3u1yazQrk`qObXGt|&v#>)}# z^}vj?4xw|*Iq2WtNmXN9!y4V8AWx@Nzsrb@msY3X`@ICr2ROKX`$YWXjV|<-e zq-7Lg-HW_!vm~_aK!3!{0K+kls=gUDrH?$iAh*K4A02K$zeF8t&DRfGkDqx>i<*DN z>?;XPb8RR2~z)K_=T0C@k6f3A4Z8a#2r^PBn5 zz2ZB0S&P2sUbELm=b7M*1_$Fj6$fWxBrHft2 zog01DwM8E#6^<;`Ev1jx^v*|e9~PCxlC3g})uY=(qg_ZZB&SPr`Ez{dgqu-jfWn&x zV!ct)p7*Pel>YxVVExbk-_2JAg;fJK`~2N&4qM5L)|8~p8`fDos17kObl&&MIeq^z zzZ3iWgO06ptSEOqx}o4$+39`T*8QkF@t1dPTch#izb;$6_1p04k?>N>*79AOw(_^` z-jpb8XUmv269*}T8bp3#l2ldN)`1obWrb2Yv&=%_1&jA@pD%Hyk9PwmHI5x;ADdy5 zR`#q&#)=7vZXR-^cxg3~e0%@?+SgRr44dtL{lUuCUL&gz@FXJv3?W7c=7;x8_kY{Q zU)CTH2!W2>BZ+#g$9;T!3@G__MJvlLfP@R==jVGp4XN=cKm`Y1Bx12L@p6(5(66_G z<1k1hqq>p&GVAvx@<>{l4|(ca4MKoM&kxm{oFDx5^5sikjE2!)^C-3DKif4Vu)TZt zZk5#6$U-XImaV+Q@4eq6dFk!`#S7($@5%NzU3xkTn~`c?&%A~UbkYQYhRiTEVKcv4 zAE3~s)#gWz^vx6Lp4`w&!_key>Jn&Q+VFwl?}kF-f1}iMQ1z|K z9g*>G{{wFYE>q-#2#a^VfJBUN48~6}z$_}x1^tm4;pxBh<$^QcAcXldQh@>Tlf;k~1+H4+7t_dN=f;+K_mX`8G>f zIQZ(zY8nU+C7AzAnQtq_cXV4K1rzNV*&wl3884ht-g^b5#kT$?DA9LF6>1jFKEf=8 zUX_)JhaBtb9DHihwe|j>#v0ebRQVHbue7|GdPn4+D~~YMvHfMf_on93*{5&H1QXM1uMmwK^{Sw$EY+foq^$B96A1xOxCiIzMhF{lW0pgr<%8Wqk zC+uDa6*#qY3>FkwyHkJ6Qs6CVeSQ9RLCJ_l3WK9%9?5;0GJoew>q;A`dV2Eb5JjDCqEW*6neubf*pBYf`T3wagMUr1VD`}w zpBvob{3qZ@0p46OQWR364DurwG!8*)tk8^3m^&)ux zs))gWitR;sWi@xF+qlK|6vsfqQpj)H#JseZJ<2l8((tk}V(ajgun4uMj10`zP!{FU zyny>xOs>XLY&Esh9q1VBPj;Hi?(+^*^U~4O6z-LH1=K|^&;E?gNni`L@yPefH|a#Q zWa%6VL+yF*V6-vX6m}0Yo83yzajy#66nMTXVNCbSr=SgjF1hR>0?xEfCNV-qLJJ@F zFZu9<6>aOVeRql&csBan>jW4nis#+w!l)&bPenb=KQkf~e|IY(j#KtDn%Rmf1E4Cj zCdTUfsa~}1Ry>ta$*4qU;1RzQA~GF6Xyv0t|1M&ZFG!8~+o~tRwt;X?ho{Q(QFhpm zccTw%jE=ykk)}pmD-jD&sht)uhC-$A>j@Y0W2~*Lt|zs5ZTIO54Pmxpjvh%n>o19tN&1B(5p^DpNw^ z@px`04hMapw+#svZ@$XhZVmJdTq`LUAXCmQ)jb<9+ZtK2QGTw{sQY|H$qwAoaCJx% z&HZhu6oP_?hr4ntl9m<+_ZPV=$>C6%o3AgqQT!*}$M<@ADWx`SeSxJGaT7t?&7~b{ zGQ7q1xOuzk45637z(*cmDZY3)(7)B-+sW|kuwv4R)`poWnY?kS^MY(S8X5Si$A~Y- zp1dv3y%Ts8cIAYrhbOnF=dPA~N6|n0i1MpbfgKrF>Dj!*nd{gNIk6oB@nNA&PMCCn z{(oqf{}qj-7QokSUAf-*Z@(23H1_|uhC}`RzZ(BPbXwJLp7aQMwW=Ke#P?>I`}KZE zoRsXT^f4#{AKkKbZQSmC^t|guF%8E8&i;Ke1Q8H>ALXS(^}Xlst#t>_4WS>RzeQWp zQ7C?df+T?Rx=f&Wih7{tRM37hb$-C+)O`A2z9ywTwNo7j%XP5^{O^p_=+str4m{Az z1^g>jbxS4ZY?mbCvb)4epK+oorbDVqsG;5|s}$Io>rQ!(%ff0ZL)Yt0g}qu>@R)i8 z4JW*Z8PiO}O1$3J7J_g+fyFMtdAm+>YL|K*%$gJ?$30>-;UKmEytluJkJ(~tD8UhC|Gl=3o=vKY7?x$%{;(UIMUnrJ}mf6bq=4 z30nb2q+Sas+y4_!-s7gi+|qxAM_kKyoAWP^YgRfwF7J+Vl8x!7njHWK!?#dBr?v35 z5<{cFA##0P)}Eozk**dX`~hSQILc0MCN_5-@`ayK?KDby2r{mCZdv*Rc_x=Oj@h^3 zW2-j?cXPTtlr}zs4<*Wdgt$8k_;!#nub%W)m^x0dXZVN9p9vWq>JRJfwIrd{v>Wh= zxV4~(xt(RQEydj3D3}3Xymj6&B>y+C2JdLQImuuZHEE3#-<7&7#P)~AI4nz#gg~8` z9yzqkS=7tW2Mz6&r!!>PJ2N*$Y(=vU)aHUZ+c`_ zQt)J)yU+uZ-xO&82inN|x7D;!i$^|X^2l4Ya7!Hj!sq$Seo`~Y%IjIwvEI_2X^ob} zV=;v*C(A>i&UNlOVpqzTUHE*q9mAFQnIgE7KX&@*`%Cp9Lxv&l4L0C|2q zauCmmjQNWTdJs7i)2Jkj(V{v$_q!*xy3lt2WMet{uGQoFzb=-Pw)a(t>METfP4`(I ziDtX?ZDXmfjiiqwk^T^NCKgQP42IZd;^1HC33IfT1&^PQtE`l@(#$!Y-#K-y1lI(0 zOCl&ZX*-M7)_!HV`o--Uy^j#hm74W$*fy0Uc%#xD-o^K@X;F;FKRVCHva~6Vi=1ME zs29QcizlOFk%rVJiSZA2!x2aS!NJ$j8%;b8Y(R1w=&Zn%y}oS zg#h|xufe_)U~8zM%0%$9lBB|Zxk5dkr}E=-SlZ6IZQQ#IC#|Qzav3D;bLoW=Y>M%P z7QzrOb2Q3Iq42ZBXqh%1@5qDgmgCn+GmEh^b?)Q<=&N1T+D~Qf_a9D0?#rA)=%r>4gCQuTE@i#eAd<;n}ZEv?t6xynOEa z-?aelx_~VDB*9>(h!9HC>a!Aoa0a|z?RYSxsXT%KVHK=pkk|y=5Ndz603$?Vf1+TY zkuUQToY`;*0ak17LSAcedcbMfDH*@4?R0|7%Mp$aR%cG(%`&-2DPxfU_e0<7=P8fM z2qc6eqsh*WDqEiR5E?*ch>#2qR*V+DVajChZDY8wph;cjxuH444EFqYj$)fYH&Dh<3fQ1J$KW1ljVf8SpkFZ87^;%{jXg7K zH2cR2)9U4Ka4n{j!3i-}8$7K>s@*zWrej~o9Xu|_K-F>sV}?FN$&YXsAN|%H=UplU zOm+R1ux$=)+~}J5(=*sFpx+WufbE_Tmx+Y<3xdK~z06gZ)(|KW9F}+7>)T$-qqcZE z*#5Mch~~kPCD>@bd%B#(gQ*u@*?F=_=l5YG)|q7#Y|;hyHD*wU!_Dc{)khc)xf&8D z2_dDI?^0Dt$Q-2gBXV&g7XZ>ALx7Nyl)stEa!cO>>b7tC=$EBl<5Jy4B%ogpEKJ!F z!EqzJ#nx1bU+q8RyKK{Dv306l6`2SFrqf4Uh7LW33#E3hrAFXbHM~%Mv2W|B=4Z6u z;Hw0uUUIuF*4LsJfKbeJCEdP>^0bgE$>81fFI$5-Wec_sblU2i5W#78yh?s(UO15O zC)DYT3^JcJ4MY&~lHq@R{b}?O^kbIfV1%3%<%c8vCLWZxmpAbvtF3pCYHQ^Q18dkA zA_@jO|7yEHKOX3#`#J;kC@16%XJ^m{>EYc7$TyP)+3YaS%og<;6g4%fF`|@;+e_g~ z6r_p#c$B3%G_4`&|M}#uM@j*qd9R73{_;a zfl=&A>WK6;I=mCyZk3zUpKKD8Cm^rp9StQ@Hx|dQE6ZQ8%smiU%?gZA z=n$Kbe|jWEmcW+CIr3TvH-l!AHc@{S(-_`T!j~I7H`u>hc67dIvLM3-h?#A;{r zZ2wr5#_<`dC&1|Nz@0IVb8jn1qS{ht>Z?$Rcfj7tVlZHal8@!T( zK`CRBoPjMZe6z71^e#mz=!ObHAmaw3H!p-K2tTK>H!}k38Q5rP2ZwJrz7&Qzh%=ay za6h8GiNHhZJT~QwoS61@cu85TAZ!`k+MmavPQOI;LPvHmqG0CCKXnn+l&0Uj%Lb|> zE4iDvcKzbnhOAh+>+ty;0i7A69VtUZTXIDdQ9f-!`niMZ^~&7^w_2auat*afx-%dU z#tF^cxy#O+Z)r}9BXNBBRaT$>Xj6RnDx+41-9wX+n6ikdJI~Y`+~QcaanMfNw9i@G zQ#U>$gtkZ}Gv-0|4c>|$Z7KkJpLS4oj$`WU&m{0r+%9D0CUG1o9nvXtN>0FhrM3!0 z<0XHprYPa-{p^L}`V2 z_DtWD6t^cdJro z>aIun^a8S5J}kjV3>e4l3?IAhil9h>kcwjZfC#YCM?PVx-38S*nvwj6M6r>YR6&T1 zZln$q94u{x(rrSA+J;yzp+nyV`k_*bUPfD0T8Q>kJ><&7kMQo}NlJ-TZ}4fVzMt#0 z`0G9;y&+~x*eCgNLQ?@dvJVRg24>e7!roaMOn>rWk7Fe|qTrEQ||Y!x)KAcNW-jWr!eZAk2{ z`PINrQB7G%Xo-(RWeRFceNDN()lZ>VN9g}&FnLGjbx;F;LCW$?`~+i(%gM7?8(CH)vaYuVxJTV!6!2&7M&~k+C*rWX5J}Yf~=PzyDQcoWaNK z3G2CcVk}h`g5~I5U9h|~Bu1hB;88F$-&z}ML5mL;bO{`JV5;1|H+nP?@d^&@LORj` zYU^}5p$^fFdt))R9q$SW7d>YxvdU7|gl>vzj(*>vVXj*k<&{K#goDYo8|X1J-Eyqw zyLn%RKHO5*vxXl>OJ{UhM=eMjhppWo%ezd$EzWp(4=beyDd;*xSFPKLSA0HYgzMjrX3x6Az7NK(skZ~V$90)NJV{QC3s;z7xY#p(Kze6Pj^$M5d0#IA)Izsl?=EAT zGM7p>&KyuPe(nXA=&ds+~y#XS{xhuTk-g;f~oGCXld$rY)i}Y z6;-105^Q`iwK<#uv6fMn9$W^PzE35tQXDCqoe~C&sxhu)FJnPR85VEE=#VgBEBm2X zxlgfoEId{dymo(JUP|SGy_s@IvdE`@WSLd13X5 z_dFaaav#C}q2@_QFK`&7d3hCfXWzi7OljH*FlC_W@Vm`!i%sQTQGpPuuB z+gos_v-MgG53gj-ViW1BPvfuc|FBa#jlENbi^lF-Q4J}EB?0N~AnXocUsM1$>K&MP z$m2}Ni|CD5k4TF~*@r}_(CR#imhyPUE2W=6@zEQV!)ky7{ zxt|(I(WrlHz*A?bpD8?zwEtPXvY{2GJh&%w!;GY=9sAD?x;LV}jI@!T*`z@_*ju(H)o6CH6QAqO%%pB$ z+~R9!tIu2+SO2O1&iIW`!}4f}AS-jc_#rixxj|PXSJHMsCd{UooF@Unx~!trOvW$z zOTp&zOfwgJ+a#=>@~0>=SawvnJ34PbvU$He5-N!(>36!hCFEtZ_wLfrL{i?jcN%wyhM0=RqD80)T4Zoxj8D0>?y8OFhy)$5Z(Sw)45bnT3NH*y$@kDsZ5=JC2Tqe+9)x4;W+FG5V%|vb zpP5mzhEV{^3az-;_vKoVbBWvk^#3 zSD}sChANMAo~VcDsWvBCZU&8?&~EdZnT68oe9zcZsd88Ry?efOew(*!=#J0N%=~fV zpr*?D`2W0&!ldG5_T*|D5*ssaE%?G34=pHGxGfa?04~jlp32Q)0J&^(HFEfG&4*${ zi<1nh@oHdc#fJOU;`Z7liNmSilJfkQ`A*BEHRe6?(iQmfC2_>dj~O%$LzL%vb+LG2 zt>;dHS3yUqFQ*;_4Zg=Jie}G2CjA-VHRTADZZ;UX?u#6cyuF+%!NIU{0c!fdFPV_X z6cC~w*M2flK4DGJoiRHh&)>WFq`pSuc9GX<4cant_KlyuiIaoQQnWOM`UM~}{)NWG z%>QLA2|a(iXHozB3#!?5oW7mlkfcuKQa*h{4w=!N^)Zo~?Cue2cXDSQ-?AKi68gbG zqwVv|)p_9?<-u=1b!b;1UwjYXcxakj+_|k-igmuz56ocm>f<`)vxrYuoFnJ7qn*(` z#^doO-Ox{%I9uoY5w-TvpSxg!ZP)T-qG!|&#twjMs!`n{pSBh2FV9aD$Y09PI^zwM z19tLL?s}_J#5^uux-^({jQ{pRmhnQBu@NV|#_Klr)^8R;dJbXa?$L5!rBKJejytjG z)`|-@f!ihChaQ%t&6>}L49j*C^}oZSyUkzC9P9nu<)_icT_M93&q*hDbXk<{Vw%l4 z!7rh^af;!~+*!m9hIY1Y){MK@F24XA=3mg3BoUr(0Mc8zyA04KO3SSYw`#lZ9}>00 z$;ZVB0QcJ`sdeV(rI}it{}dBzOF`x^wrdgb!>;vsYVRQ>UztLy1xxkfrD}7UtnF%IUjXufcr~&)D+-12S_e!Mm(=0Pnd?$KaEX1Zg4#r5= z;TF@9+g1k`SI%ew{r7w37_dSPRMA&hinPslk)p->d(f_+!w-sV^;4k#*5E#CS)(;1nZ~e}>rkcwX>hb%|iZihiQ(ta{c}P52EtMf3!9KGJ2sr^e zyewIa2$;AsPbH<%gq2E-ClkXd2E{wZFZ?GZkHy<@<(GA{T=2`BogS1?`?9gZ+b%6x z&SORo^3DRqY1s_CD_)@tX|j>)ET1Fc*7B{%eW#PK?-5E!iHQ z#6HXcab-!T^@8&PwL}%4; z+Vzhd$Wzp}fVEzf(sQiFpCWbVJ8C^9S+PBP_)uL-Xj01dWPotdjiL>W-Iu|dw~_H* z(4U+)HyzetShrIL)Vw~Spdm&aYJ{2HwOqBURhCut&OB|LBp#%sm3>YWNV3^ecG#jd z%m7Mu<_w3v?M=McULoMRU1A&W+XsPeL_GiUvVl#i939n6A`+$AnxCCY4SA!Sb#dbCaOIn&~J&D|YY;!~j09 z(sVX_F!CUqU6>A9@msMBDtTVqTU=T;@;q4VKZNJ{+MF%eQngJt=WE}jq$E3P`OuRl znneG&`dh{b>aKuu(Y{lwvt~4R|Naf>%KEVF>2U@iwP9H!P@&wC?d>rI56R~8S@XkQ z2&mT_F>~D;luMJ?v;F4tGpW^MMbvPSh93u+Z^ozcL!F{7nt^i&(xn^OLHqcSX5)k3 zGVwC@S>E@><*mAC{;G{~69vxvOOr~Ft)BYjLxx5Nu+8`rP>;))SLR#`x;J_Au#~F~ zv`Al%P)mrJ^OZn*r;WV?nfqIe$XeuqKzYY-Nj>jw(O!)-<`cJOdoOTN8X}J|4^X`` zX!6Pd)ruCq#U^gI6%ejc~e?bQ?t@$?$8aP;X16fsZ0)-@m&%zV^u#Fi{jkuEsA4o1 zq;!@roXX>_hv8l;!uXqa4>IlSn_Q|58u=Dh>Mg}@?>AknCI`lCBo?h7`m*{O-TS7K zv?<2z%^h2%&Xt2e-P0Q43BEiLiS|CYrsG5yf5KjKuZwjA*E_Acv^U5^mm&LI+V8|w zK0RAL+N)xt(Nj{nbJy*szE>jb%Qnjh-ZNV6r?rAY^@zI^|E{7J^pCT)j8vbVPgytF zYv4#pt+)(Ah$XI`I;{U>Z18*0G(5FI)QrTQ)b%4~wqtP&X$hT* zgdveipI4tcBk_7_e6y>VY@HOA~)Ew@?hbjt|d0H423~wZp zodoN}T=O5fip|G->-_>jZ6a)RS2zg=;sN=Y@NHz{A@SKgOo;4qgy&w1*qo{O^T{NK zzHI#9WJE8Ma${voT*Jle3OwLCdN6<*RhO2aeq`)OV;&OeJXunkV9GT7j^Xm{-&}Yd zKaXp~U$&05fjab+Jzt+Ft@}x+l+MbWAnY~t2iQ#mD*v;SDNWxt&f1~oTqUNr9>(~6 zZk2wKr*Btu8b3Jk7SHZ^+ddv!zOA99Yx2Dc%yPr?-z=*ToY2rD3+@HItvlx_7=OuN zTTv8S{Xt6|oolphfe~QO_JikWRwK`8UMZp@a7ubbLHs%e^=IXU4sIsri1{F|xoFie zugixH#@ToaaJ7|K%gj?-;88k-vc>SzdANm}C8ykAHn5@QG3Etqhh${Q^n(+h5% zz*Ov19x}ATz1B0M_K?)F_p{BCtskS&ecL`+jxS)FxEC)g0D<^5<>Lxm`EJ2q;l8&Q z94ecO&X#ZUjRdMxOl;QWT;Dc_#BP_ElwKwZOSjY`bV~V)>4;ee?6JBTIP{?{!+3uZ zTHy+#9|kUNMbaD}prFhV3ZN8nF6LvGKlA z#vdIdZ%xB?!1Nz3SScOew*dl=>iMHq)Nj`^iI98hbv=U)MIK_(A;U~RphIi3jEKO^ z`FyL&AbSrawDwoofj~gt^I^zY=@tqdwIUL#-yBI=UL+~(15Ju_=07ItcBC7l?$e8~ zy1mkaIA`_9(#b|b?We44N6SgFj8dN=23*wgh21Wt^{}lP%_y8QxeXn#DbH~=1dh@y z4_r2NodlrW*Dy!LJ7qPqc>{hm%Q51Wy!#F(OS@Mq zeJUG&1NEi1;_x>LT0WR+Sk_1P0!#K_`j!@sSuoKr zdiSl(#J+F5yE#vj#6N{S|55Vd2G_z@hO`Ia$v$coM!7>uX^cMvH}ig1YD$Mq0vt_D zUUcHRW=02|0xPk(g3_YHUIKA8q3;1QABpT+9=vUYy(X-?wz4+eUI+=Xo{St+DymBJ zQ0aQj6!M~35)p#|FIV2|`CHs%5zn|KG zE_sVkuvvz1`rUeQe|jBMCxd$Jxl^(m5JDP%Pn9?sH6c1*8KqC-JkTm~w_L;R_T2Du z__-fj45&_(C9kZ*UwdYQn`T5SU11A-cc~OKy5jpj%)R+NgAu?r2HNZ3-Mm=(4N@@M zCpbx}yQf~fX*m1cP(u?a27I&VK`9yA-^U;s>@yjyt{)*#YRq=UcxcVzukZ0vs=_*E zLd??d#h%jnHkR4cxBdGuEtL1>X@3jwc;hq@!$)eL+_G(pg_THQzrM*dds2@I*!$EU zEO(cftCc@z89Mq0>aFGQy_GGfu=R1%905B$%|3u6Czt(2#=A1v-{j$+nQGlwrG@5> zRG@;Y4Q3o5hGp9?CJz!kj22i+Gqyt;S!PLEU`21xOiSZdg6&Yb!SE4Z$t=c~KeLlcLtS?M zSivvbg>&0$w3>0cNQetJ9iB!Q2p`VaCxnf(VjzdtxEr#tHdm^#x zOCb zobtt<3;`v$jAS=f%3{SRYfQMyDzK>m$<}{FDc`i(x`H(8H6kl9%oZ+|?VEukuBV+9UC=?pOP^PYL~ zcCg8P0=wgF6j4f8OrW}5txXgm=?4-V-eXpTPbUsqm#p5}3&u~s(I z3*=TBw{j%A(?UYXx3(@Z+Gw0E!@mMo&j8Mv-IsPR4A{3`)?zu({##FFo2JZQ2j1Xc z$RA83Zk$Uge+m&DXmzEM#~f<*gKEIVYGdht+y;VUM*xWXMFde7P1kchU!1W=biLZA zhSQ~E6q^u<3v0p2lQJd7h%4J}11=V;h);~lIod^s3C-Qi{ohIrgW2wv$o6W^JSib+ zSIPsbt~Af8_oZ!o^ou9GoJglOnnaS-CtCES-7S%O!k;beb0qRQgD;aGrnGG5-hk(9 zr?`3MFj3Z`wJ*V~t~d8Bo9B?SYZr@&CC9)P@|!76_CVcv^7)e?!hZcVz18Nwrimic zbpZeE%wfhCK=%bm7s3R0v0~!yGe7$;XSN8(QIvo`R{YS{E!51EkVBMUv%J0Ab%yq+ z-QMzH5I?yJ?3)!7-y2$5y8}b(UV|I`(v(-6P=ww{9?qV84>ytjeO84M&n7zBdeYaO z43qTriQi2H4qz9ES4p&apy~#^$cc$+5ZBm)e)W?j5w1ZZ5Fh$9Yt1Q&P0nX)|1#9E zPrJRApJA(Sg=A5b$XDZ&B4DnB^X^jaz1h<}K+X*~QLYDSGjR=~iymxz7C&rtZ%)4q zJIR=)wWoXiPR1oY9gArANmIe@4y&*>ud(-oND4FB=xBXWelRgRsexRh_sXS3TdQ>s z@jnIf-=xy+vBs(Y}faYD~9w<|AjErZ%m#v&Mq zGOENRxrnS?IvzmFyf+RPpLG3SO{0>J{FiY52Z*8#K7LSKZ!&ZJB`cbp&%el9G|YO+ z{$DQVKLKQs*S4gpxPBB0C|^1)932zWdEv{KiZ4AqJyQ=ZosJg!lfgXd<>4;yHO+xk zRntV4cxga*qn^d=cdQnUS#K(}iNk!j&)&Vu3dmf~QGPauo2oVtG*Xf_Kjr6s`zoJQ z=oCk9z&iI~ILqe?fT%so?z2g^_uE<6&=yOykJF};j@Ul?aw_2+GK-XO{eo+gnZ%Vq zv-P6D%&FyFWrS2>olM{JY9IKnuAb)c=ylcL({1ncyLZp~ei2I!^D!!CRyA;r`Z4P< z?oh+909)tz*qx|ic`f@m+rw<47bDo@n6Dq)b2bCZ)H8Qvf5nR!mrKDR)aC*FG2w-A zWu9WpshjLpgZI`y!Zav;v%ck|Q^(t;OT~K^dO$OT)B1UWKjByC8x&Sc*50^9LY1Jn z`!AFI?c>?kGT4(sA98@&Z^`uskDmxRXo!+`m_=-O0nRrsb!q=oLrM0{(n_H1zVdq> z$dew>U^z81QOjT{{~0Oc2&W?^PAY=r(aQY|Rdw0)7#xy;=2w5gWkOU`bv>cSwqJ{T z>OOmiTjgOGSN*ShhgJ$4jEAclaF~=WnxcHe%4vv!C#P$C1Hl)Fadu zQL1n|A$jR`ymF~~Q!DvuQitK7pm6$Y^~Ub)qVZyO+&^UMdK`P4D779c!~gJGvwCx@ zs}Y;hX`Veca-dD8()%;~q7QwKl`8#}8&<}lSIO^|M+Ep^>hLNG^|h!kmk}7cGr}+L zV|pamj(^*k>}ExH6+E25$r!Pp9I(1V2@`q1)>!wP`9!=Gj$njdXn-v3&P)_E1CG*+E8^pZ&kf7y8o(SqPj>Mp@KK=i_{QZE`Y3v#&G!eTF0d7IIC&M|v051>gQW znOy&?1}e$(XNQBHBHh?u)2JmEQYPiH;8(frM-EZTI{GmX_pqe)4$| zLk=C_B%z&))NNlIaQ% C5SrH{nSTa2N+YJkm_igXTe!W&x4+6~ZQMw#`3a5LyY=Ri+s|8nH%%SS{8?_#d%e?>(FH*OrgL*_d$RXJ zz1|3Ta9p}6bCrh7$Y7(S8VY7Lr5VQUnp=g=Z+tHWAJrDhqEhJrynz!m+@wGPsNv5| zr#G7?4eREhTB{(nzgBi2W$KQ@@$kT^vk$@$EUwEeA+4~S&^*;P5Hf!UJS}H@K@*{k zl#~vx_8XT&za{>DJyx(=M4TjI1;oR_!uah%s#!`LCmYC)^mRMc`bE8}_Hk{HwrXu= z>jG0T>w$+>vqmY5-ZA9=y1d?45MPJb42S_l?>XOhz}T0^+7GO=cu`g82{G+gI&0Qv zb^g>hyMAOLw`p>l1mw+dp~$7=(F)lwm8?{wRzfCylQe|XLp0_$p#tUrw5;B46Yq9J z2`n@9c^S8-OnT05O*aYSj<5*-`=0L_)xb|5)5=Ud(iR$T3OuB~|H85KF=DyyKx^rT z8ro&8uiw*3Qt{193DAOzl^s;N76oJ?PTXnx2VfZvoJ`*zr7Ynrs}Rh*BVO+_Z=S2y zR#s#l2U6Q?gUGrZN2=LHOA58X=CQX!gao;xIK8&dkT24m)Ebw)S7^u8PB^@OhW)fV zE0(-PPn2!V`a`_&w!o;JtE)p|c~Gs4&kEW+P}h@;O-UudV!XUQ9}7UX@&y;FN*nru$yZ^8=(Gt_` z!CU+n#B-+0=cP)zM2_gC1{2$}70#uya{Oi;RAJ((>*{XBy~D;hE{ZP{<%v`OlX6VD zMH~b-wqxyX>qouYfDWFfeD*98Q=%@ zDP7y#@3^D7e>`6fMGy<#ihLsxyVaXr<%VRY1y z@IFxu@13iA(+UY+MCbVFu?J_LWaY3KihFP|QB6kDyHWXfyQO$%ldIyX;tQmVxJUmK zc*wtU@vXtw-cRP4YwsIexutdvw{<-xr9JpcU z1!({DB_G*gpS*wSHX6-VW@-6c*h^Zv$g$fXm>l4CDeRO8#@6ejzP7S599F@YrJ?8D4w=^W{5|~|y4UAp@uw95teZ^P@M#2gHI!D^^{z|qr_Y2Lwp9tt zNVxWX{_WT_Z1$lg_!w(Q<-9o|e32Fy8?eK6w2Z(>gTAS$v}C@u(W=&2emq1V-=EP5 zUVwgpUB|~9^0Ew&R*5uv?D#D%)%V5^*LJCeN{guru8f`<-@ROe13D*AX`(=Smp5Tc zl6*2o^3*6?w=Q&-?hjIXz!n>*FvHlvdWq3S&JA|yy0^A6OWxlaUzqG)kpB|4&llC; z^=!KykyUBGJyjv|DR05r6*XgjEd_qWkBr?=mA3#8H?}UU1H0M zJA1mF%2)4z+tWd}r<_0jY3?wIMcw>`i;UWwPQ;S2;OFDOE^g-nEOqDC|+i!(e)e?!E#Petvb9|e3szi1@czX2; zq&FD)GH&NeW>n`7sNSKqnd`SIkMzDPNYm-O`|z#tomA-24Hf~bnc^Y-?i_JO_PZ}{ z)i?7b*K47Cekgpcd-G5`y46@wRN=%&n5bWT+J!SN6dr(2)GvK~b9S{N@@QgHod4Y+ zsi%$tQ;$6qaqTiH2A`Bqo_kyIK4*cb0m-?W!hrV{ta<6z54P z*tu_cN14Xfz97bL$wj_i^-XV8+C%|CN>~Q3Yz4$N`g1sn_N&d#3={G`aUUDK5c_e% zq_aw_YIN)D9slhOnq*d_Y!l&?^efFvAjhu}M>5(jZ2wZ`s21KnS}@qU{Yqc(C402e zPlfdg&&xk<*gjZCv;s}vb3i`(+^RV%yW&Xz!82mHJWo-ROCQrN`@(QZRvM};X# ztoI?y3NhCZpXwHh`^Gjq&BH-+aJZ;Ypjjx}DuIL!uoe7X?*^wU#qN;ksP=o6xRX`J zW$5m#IO$oK&)!mUW?R+Z_bE*wADJTfqSq^wabvJ#+=K%P5V8F`efZUCno$16;Z01R z=Hj=q{`+^C?8^?X1MDgUeyxky9~=@qJrFU`F^Pp4Vxgiq9`KpJJS2&X7vidyj+k66 zla*bd6^lyHGp98dB^14v&W8mpFjz`x@y4VlZzFxVH+=&jK=Dbylz;#8HjH470K>nMId1 zmY8s2wrUQKyhQ!6$PeCqaRm8#gCW6R9e_7Qn-}ujjNIf%c}&T}$;1q@l=Ypwu|Uz# zfSI{VUJtwZ{Hk58;~Nn9$~+4JH+=L?sN9{9-*%7$I<7s|X|bvj*(>S&?qPaT)b1<0 zDX=jF4ErmDOE&Hvt!poFI2Q_G>U!s5tQ4?IxHD5FJXdrxc^vIrYp*#4}zI?Dho%bcS08C4!d|f;L(tQ zZaYV0Z0EJp1=!}l2NY%VlE{x)oZ*91I{!E@L9#C3Yn0M6TTLfEnTKugtkajmJ$~8w zkm9pqmzOp+zzfsmZ;$*u`_f!f#au@`o3nHCrAA{K_r+lQyrqe2#*_q(TUi_NeQ=>Q zAu5yR*{q>?;->X@N*8N4?fE6PEeci1$}NAhjs4Z4T)FC;&Ar#6woHuj^Gv~ARvSn! ze}d%Idxr$9??})l#HEk6X?w$FEJsz*8hfw73$_M6lfLwmhNxrxSKb^$YO)s8N7Yu} zHA1sExyKM%CzxB_?F`Md#5CM?S(DdecfUW4ai1}ef_u8};cI|p9_P%uf3*3}BifH} ze+BHm5tpQPV^g}}gT5wWS4-HJ=N4eYMprS-FE0HC78L^Yh2P% zJXB-ktm+T5&^(?pe%s>2?7LO#*->Dz8;>~a%R%%e}J2}TO%@2 z$F<5-Py7CgddN1Zu(!iOMssr>3fDe&^63BlpB+RPz;zRL^yb^KN?A5GiQIp!zBHKp zCkrb7t-o2TFLnnoaZ5iuFdBJCHgROcq;WL4R-0Qkv4;Khxp3`{uZNwzmA|q*%$zdV z46M7XxA51l*6qoJ+>@_0c-m;l%nR_7WHpLX<{oD7^5`>iQr7;!k%j#JhD z`RjHK5B<8GS<2p9XXi(+q+SX(hkSRpu6u$M?AFq1T8w>orgzRRff4pp$xz z%~{O!!C}v47mb`*0T@h`H!ezzi>w&G9iR_{v?K8O$@^TbumX5L1jFb*=qI&j8^gr( zxiL4QXO{jP_MH2kb$OQHy#SftLp6zc5c~!-fBPbpCo#L4ZGPcIy|_6Qy2E{XNvIuZUOP82eE3k#F<(yO#*=&D8?|(vvy$ zG4uwmmy*qrtB^!|9RWtL_#8h5E=!^r2lv=Tzh)Z`53M&uD#ig=3V3iWESCHg$WD)b z70D<-$NvRvrvOpL6We377ozeFOe;OHyO<*>fnhkd`8bTQdfaIME7pK=3GV@H0vhCf z82+C}&l=OtZtL#CGZVUnqfbbw4c5Q;_||o*A0Q% zpYTdCz$&G`<|UX)JHCWC1C&wdNNmO>g09GV*iw!x6D7r4S!3mC1vU7i?ifwZ**!Z5 zU=9RtksIccN7-;>HJ(L^XGibWHvoIHjRN8L0_e-Mb**G>cMXJJVpcKX!)(QezoS!f zg5=lRZYCK1Zua>Tr3QL%02zeyi+`qgx;h)t4G$1+=^!L5)8RS2`Q7et61kS*Y)3)W z#6cHovhI_9x=2>NDV0ULyU%?K{rtvp-2y67?vpVY#)dzPtBP_%T*jpaWHBNwXgdRt|2-}KQ z?16hTUs&f#D*OwHcPaD?X41k8nDhAn$a(96YVOOaYJ3 z{qeduQc;=swkawlp0hM!L;5u0^87~|=Wp0Z0++tYwj2ur^RJn1CDyv z_9?#Sf`>}-xb%vG9j%Kwt~e+Jy$gLkq%RGf#E?Ns=G4T&Mi;vyBqM&xi%&ngg z6Y>lD8&o&>UZ= zCZaEMeLQ1=s9ncMCkx-_dd~@DTdPV({7UUcvxk0WUpXL@ETHgKsD*Z~rMI!Xs88k`B_<txb;I~{2#*40Cxz}w=l;TE1_zs7QMBXF)=jShVN3reB6`J+wSf+bSOCTFwJyB3ev!`le= zD{2kZnUSBq^xTS1Mc2A}HyE-zp;PQhG{zJjqZ(Ggy%>BBVxT(smt#4YZ4;2CzxOvK zeV~5bMudEfGT19{zU4r+&oax?7%enJt0FB$oZBdRSWXtIA=NczQoBpwYL~xcMZiVE zv50FiHOxkGaZgNpXG=93J)!Wu)ohATy6D=Kg{v50ugR6mHQ4Vj6nq@BE?Reyc=#it zYs+-G#=ic{0C4qjc^8lOF6UXGRsS=f%FGL5v*h}=@m^mnYyxRIgeMs@XzyH9qTs#{sfT4oai8P0=bEQ)ON2{Ned*H&Zj`HDB# zlKUq~yB|`(`v3z|PvKy~m(*3z0k`tTVe71L5#S|4F7EO~+L9LM5?m zszTpTxwpAq@q~@C^+Rm*n~1&dsLMe4O+( z5}amjrD@6vlve^ZvzJ+C@6%mHM_MZVC=soJpN@APlvK&f!#3Ww4voD=r^El!jOi&0 z;GB(*rkT9OJKojPgM&`z1T438&)*+o+4Q9Ay@& z05m%MQbX$*ZX-Z`ogD%XgsNF{?SyvDsUTDLv)+4?4zwQ2WREB&RVR1f<6C|eaaQBp znKeR+TOJ>zJU<5DpQ)NhpN)o|Tym+CD!P{<)gLV%dt7b~&ahz58 z-KgNQ1heI7Q*7-FiKu(6JBDaAMJ|6-nr{zC`bqvPgYRiv<&pyhIha1G_UoATaL)Fv zO+%lEDyg~s{pHh5{R2AuoVzyP2e}6u5mTyR!|W*s16_oS>%rsBwUgz6%Wo#_S`+-u zC|Rxe=4>=DHF;BRhPw7qIT`DXM%(oHf~&wWugu4X5~-N2H^|SFm)5WMX+i6 zfn|bH)&=~!hTce%Ua8t!z3uWk7yW9|G54Y^sGR~rY_)1b>8;EXEdC;}PF=hz{tcb$ z6$DSE&95OhQi8|8o<+|HQ|r9Rz(@%3Wk@UOZN5J$NpW}rF3w5;>AT+Im=69+6hGYy z;Z+s_h=9xan(`llm{8CB$A!2WgDGZM)mJs6?*jxMB)n3mMdL z>xf*<;Xi<{`l1PoCE?KsLP%#Ve(W~wbx<93&nD%GW^kq59 z{?ikAmt}|X2fnh6@vb1$_s8r0PcP@EC^JV%fHKeLK$JH+oog;88}+Pt8)#_=Hez5V zjthdp(^ud~e<(LF@z###qQ8wh{U!B1lzWp}Vjkyftym}H%0UldCxV-BKmqUHKor5w zO6pQK@SDn(0bkvRk)EYcqhwR8==#VpV>)&jW|O7h5sj)cjYmA+xTu@a!Ej{8;%7&| zlO6>1*R{?NyEf|Q(PRBU@o|?h*JjBipbA~+y)$6azw>fDj7l3=kvaFvTAI90`mxvc z%Si(lwN?A5QHpMGz$aT9IlJ9;0fhG@*H#wt?bHbseWjpxvhDc##~8U-*k-^X8RC;r z=!Zb+26q+?ztG&XoQEuHBuEh5W=c5>WceMmX$JG z%0aOgvM}|iaYinQ75>;rw|yle*@|1)e7^_*!5oT)C))a90y)VT%JYYaMTy!;o+s`# z>p8B70eM|dq#v)CWa<{{Fh}>n2>De`tAj8}%SMEcURbO{b`Xw+ucgk6Bd~p*aVaC@ zhPp}KkG0G-ube5cvHMt~v8v#G-ZMl<%$bowv84fTFC|o9KadKU4V5XN5MsG^!>=b@40{ zPfIa7y!EzcEdhvb9dUtz*}|wZxl%R5M%fKG+*~8p$(-xVgV*h@0xdYxvZP81Sc~~R zwfz_S9Ow{Atu=!d!Bk*G+#;6X*oP-1C0$M&Yf+25oTZD{ z%QpX}M$OEy;)Z@VA8`@ztE!V*#BMwXFubp*we8e;Bt}W(q|}kN%(@msZEV3P@Pefa zUur{kRh+F-Q$M{O56`%<`q{lorK36BzOm1b?v^<5xX$cPEvVQ%7jKRnN9IG;{rSnF zsap#BcB#OVY+xkVQ4>bM8~fb}&h%r1p-|DA8LC63E`jr?fYLXjc zI~>=8FKxg{$1se#>tHx*D;Vj3YZTfHhRkR1N2DFtBAftuDE9}#${EuSlB+cKkvh)2 zA!c{{a{5L3VAnC5qTq2j!Y8wf@6*O^q4a~+EGYLeT4)E2P#hDm_s^)9k3pOnMSsT@ z)wb5g9IG3cb2bpAyC(u)(Rp;98kOI8ZZFvd$yKeoZO3!`bY^)Pxh%P+036cru1n`$ z%>*DRUzkPMxvdwZT;y^Lq%M7#-;G;oXHx6nM717eOS3i62; zS5Wm+0%tm9$2{Ty3>5Kj%3kB@3{}frdfdh%R)Fk&WE4m^5;yyFj(t=mVix&e!IS=F z4dKa2w5LMDTpojDJji9v6s7lpoQRBrc*a)QU`-*Iv0^O9hXeT)=uOR>|EV`eG>ik@ z}9m;1C<`{5kW{<5(kTE6(t^aCQd95UG_ zm2J|K^PuN|InUD(+}wAsNmbLxC}GqtLH^x@o#M>;^e^{*$`12otrO=>ee5CO9pIJ5 z0PP9W`EBT5oLzk`F|9A&w9~=I`-9rx&SvgN5zf$F_4jhf;qid2Zs^YY%2ioa2jQNb z#t6LB%B<-v%`#A3jafDFz2{bmQO;x%F4OAhx_qlWxI!vVC!vS|R=DPgQkc~eAM$1M zDv(M*^LAN1?i(QqoOE@SRio7)z8^C}sOo$$wDv<6gC-xf8v}Y)w`b2^ zn=(N-fse0w{9!VVyPmHf*nXo5Z#yuGub7PC+Oeq90>MI*mbUnRT_)=xqil#e2OSfQ z7XuBkiX>Xj*~uVn1M?ZBm2rlO!?rp2dZ{_Ans6=}zgcwDOEcCj&sFTMg1<AVvBF{mBt1#zEI@{3--gHSF|2z^yKc6uSyaaR zL(R^9VPl8ugFozLTR2?F=XVq9%uMO-&gART{Neh(Uo01Tv(tA~r5$NCb!(}_OkQdJ_T**t#o76p5K^TMSfkF(0Qs5OKA(06l+h>lRd|c|+@_l3>OIL_ zLnN1&itJZoS>-Li47H3$@}a@?2JR)BgzY>(pFe*PzHft6v&u3r#}2(VB7eMb9xE!S>c6$vA(26B3%Gzq^kuD&81152j#jVt+J zl3w6s?sEx?|AIzMAlB$VKw6(1-jrq_B&Qs{Ljj?X3C=}k`|7D=%Z-79nzmc0qdQ8X zV@If-215DD4`%d`Kl_&D^Fc<;rk$7!JSy|`h*Q0WXXs8r%WJ)$kTvR8xfahLSk~Il z2!p?SiNha_=8{%W5j0nsKIFz;fDL0XiE9-f%}~OTv!{}TK+MqZ>cfhJY@)gxo;ZHk zra#Ozy*5y<@-TCi63@`N>iK-t1w;=l{3*9T1$-+v8RvN%bf6Oj*R9T5?ec%MRQp;K z-dA)BIXf6Xn@?Z3Ch4_^D2cn?bz51Z9MOKOu}w^1H9=bF8%%X`$a^o({<;N%Mlm=g zIbjW8empXtNwQ!lshFepzT&bPm%cmu82dR_N;Hm4YQ6bY78FJ!enUq6u#2zY31={f zsl-G5HH(do9BiBHvu*d=+BPdiZl>B8bBII`>wLl*ZpA44phdjJfFK?sy7BeshJ!Au zI5%8v;VHA7Q5!c94Ds@NKC_XL{N-91LWFDdwXS(xu$N~V^>=atj+pUiOo!Gtjyf)1 z&@ygU_yb~ei|=t^pF0Eh2zb{xHj;x2=^l%e&MN%nYnA2s%F;X-UR7f`zET9iz45E6 zLlyK&f>#E3JkK!JWVgJ)Pxq*bwC%G)cS-J(H3Ic!D6!) zwBEqQt|-8+9_l{%!P!s;Utfnx3a@td?Au8!+!ix&r!KfQ>9!n<4W;a^8YC>_S)wvl zzsKMv8D8dOuKpy8d9Z@R;@MOo1E6is)gGf#I|TDuU)78&keuD&Y&8A(jc~< zl=wcZu7l~7sm7IAM%lcKr$@1J08C0Z7-8%rH`zkk&TP z36xVPQ5;zn8o|89XBeD*)HY19Y|@F_$$s?KW~|x{2ep0YEQJ%pqZ!f40lMQLF~WfS z_;FicO)(6F4%sYL;ceoD?{#Cdew_B)TmX69-BRqgn3wpsm`sIj=_tIo!Bs2be>@30@Ma=%BPw+&Odv!OUvN4$q337;PG)hGKb^k*oZ=9&ssTV;mfu_y4c@xL;oLKHH&WVslf zp;6Gc%xmN6yo|$)z~*KH@zKx-HAhvCdY;h8pbGMuu&0}2rX%mB3}`7}uu;yfQUi2Aj)e0X zSK(nh^}#R#mn1s|yofx*aW(my$T^qrSm0({JpZJxckM9yS?5h`Mm0R5VJIJOKEkmU zwY%zJc(G5!l0g+75KrYFO1UrOXfFnGSa-SiWji2M^c!EB###O$tX6Q0WA^3*=CJSK zy+f;ggE~^pinGR{nq%o(L%*3`Vq$#Q@PotHNMZ-&H_0((iR#ET#o-?gag?GTapLhl zMyaZl7GHp*QNC3|+Az02;4jJTu6}RV88qK{a97uno7pOa z+j3B{lV6VTNv`0=@3f<#TzkT6Tzk@#ll&@XH9RasK#RRiRU6SUcY{sNWO1t;Eap7; zG*s1=gDw5=WaNelMeImZ8z>d!DBtPT5c(T+evzr)%64>xyER?~3gY@6KWUxwnSxj# zDPU55($fZAG3Zwdj?3IR(pLuAAcSR}E%~Ps?N-{Zdq?UNcuz*@$bV|-YgTn*znwT8zC7MbdK;`tKCk>_tCO-D=8tg zLHsb)Hc$)uWMl@;z^K{L=NPklo}-AzfbxIbRHraqJQ<^#uuP^qHLn41N2}#A?XYJt1+WS4JlGnXL;yzp z{|%ZIvE{#iQ4+XsjP&<@ZEf^oW8-@FFVtyU|NX-Lzi+Tm&vN&jQ9l`pXGKaMa8FQf zIsBF*_u5MCI%ARQKJZ%h&yAkq5;e&|w>#nen`ydD*2mIe8h;OrWaENbWvW%jZZHQ( zQ-ss&H4BKRL8!y9GAE{CwvI|+FFuL{H444De5Z40l9nxxuEU~hd{f>YsY0dMj*Hnd zBz76LuAjCVcEH(y&H+|)VK-Pp4=-7{L*is2i4HcIkS8>)kwLrTpStmnHy%vvfH(bS z8uV`CHfJe(p|SqkCPOzV@*4+=q39hWGWWkf;s?UDVA2#x6wIAjmZ|XyD|fh{3btj< z&f4-V8@NT8B*EnFFeH&M_tLT@Nme~D-a7!R0W-Eyou5MdL19F6Ak)yUmI&LCL;=@! z#7)R9;uIAfM*KREX;z6S%*|>#bMshhR58bj+A#7hj8zq&_5m%<33xLmSJkVTDt?Gh z|Da@=GDRL0`S$PN5oF+huyNN|VX(zr_k0fI%45Zv9JhDL%r1P=s) zli=F8TX46=t#Nmq&N=6vbLXyEGb<1CmV$@s>VHdp^>3+NU3;H5Q{Bm4_;BEh`NFdv zBRnm23;6js^9auZ$Lcv1tmXJ_dK0uI{=E*h03Il3=nU)k$$v$j{wT9QpG$2M)b@yc zmw`6CtoQ3NMP9^>+59QFzmLhI84LXD@67g?@Ht^JepJB`=e2TOeZ26=`$u@ho@Kq+ z|7QRP`_4o}&t1Lf1>q{(tvhZK53Xs3Po1Lc zV_3c{?gLtYrB;IA5J;h`m3I_F3N6!oFb~(E(`lK&!|R#}yL0#n-8yEFWGwLra?&|G z$fcP*hg~Oqz8pJ+4K|-Og)Oc4@ID^4HAkK&#I)UQw|lNsEB!WrTjAxG+rTTZhw*t+ zNNFc{<$U_98_93m9jIJJFX-yt>3L5Yb)_#Zd$T4lrAS!8{Si6*II4S@wCeElG50Ye z74)|8@nffsfaUM6^d8ywpcm(=w=Zr*g1s9He;=EBgzkt(Pd+?oT;8VLnyJIs=Re~8 zc9Py*L{i%O@ncD#Ca7 zsE?P&J_8SWQ@0656yNLgpr~g@IB=)>L^m(#>zXU=g_B6!Jlo`RhoY8JzL%$GQauhs`L%5fg)Zm67mICn)Pdh*5f(qR%6 z9*;raPQfk%2+cNaK8lZEYtIz7`9Yd)J>)g##J4cdlx1(Llxu~HHXpCYZ}*<2b&$2M zYh2A#BulE7(@J_R25Au3O@wE^5Y-jc>|=A?H@l#viUnZWH;#MJrD>H&xBXoTv%8W- zst5QlH^3RTW=jv{`6Z{P!mD*>S8oQ+3rh3B;9rMO&whvJVz*v9myxgz_ybZhv*QTx z&xOY3QV$!LqQD%QNn}A%z6R*ZbTk@J4*Pv|)S6Fj1smbUX&i4#Q?zfg*twjlu*(6A%;lE1?W_pIk{g4I~=Ov6=JlqqM^%iofp&|e45 zyY>KAWDGmuoz}nwAMJK8hA%mwIeHyA@U&E~dtnEuK|UUojMqt*&eo&V*zcN>c3Tw& zUCbxo#dqgu`0}W66PgV9#Z!8Cc3Xul_ki=L2e08SGY*G&)E{45s=|aW&l+~q#g|&3 zHy(4S_7Bqy;0-WI+vC-P!mr__E6b+0HR7!`gjZ95BZ=n6w8xsq!ylI-!(O^FTo5am zPsu$1HeZSTyRLJYm1vl~99$Q>biUbi9}@qbPc;J11^2;1)w$k$2YO@lQVLArpy{;n z;GuaOX9NUzpu6#@xCF4@BFy8YLG?@lhLj@$7=XvMt4I2sN3(uyJ9F@*gWcZatdMWo zsllTU)#Jvc6{dm2)5p*Et)ITb>#}!)KBkVthbz~cpv=2|@0Lnz!Oc5PTEhp4&yQvz zk2MYMkfXz|2y-`&k{0khlDJ41H%lygD<2AvrXYnm`CWJeqLaK|!fUkNxzmO#stS~V z3yhj`>UY0O^i=(lTk|voCnoyRD~hqer}e(Y;V#MSri7xG0t7wnynI->ZK1ufn_sG&hZQrs*LMZIXqFan!$p4i zXaCNH4~W6L_4{kzp2J@R<)*Pv)o|8OQWQ3_v*9o>wlg&0aJPXs)bLGI!rk7$$jZc- z+R((z!d8s-u%U&P+QL|j_9LGXP|04(#N0v-@G(8k9dXQ`@au!(o+9J;%p^G`|@{!)EY|fsHN;2O{n=efb2#ma3V)E6`B!rAPhzy@ z&d&D2oSbfMZX9kr9CnUooLoXeLcgQo=4OX0*quCVoekXCZJp@;8OeXeBW>bji2lnNg;7d#aFk5`bF`lE%dv7MWfDChqS_n(aX zCrT4(17{O)I4C$GE_QAqRUn@*7oRYXkmi32|4-5X2(DyjY+>s0e+n)j%q#e>;QvkZ zui&DbzuEjZR{yvVzfbdj9RGhYG&cG-LVFiS>wjD+V4 ze-rs5xPNi|#q~!7{z&}SU4L=?5rIDv|8>`2Tz^F1kHml7^%vJ45%?qVUw8e*^+yE$ zNc`7be{ua0fj<)eb=O~9e?;Jq#DCrO7uO#V_#^ROcm2inM+E*z{MTK7as3g2KNA0S z*I!(JMBtCaf8F&L*B=r1Bk^B%{l)c11pY|;*Ij>c{Skpb690AAUtE7g;E%+A-SrpO z9})N?@n3iS#q~!7{z&}SU4L=?5rIDv|8>`2Tz^F1kHr61cRl^jdmkpY@RvQ@;BR&C zdP(mB0Mvjt(l1rr)ApJ?VqWxkFkbY7F5e%XbBQfD8JYs@eGyubkkMk6m2`Mtzh68r zd5+yBV;w-p@4As-Zc&_|uKOm+KH!TFSYJx@i+=0SiAThCuB4=gG}Uf6>n+&KAzXnQlTDptb#x z_%pR39x>AAv>hQWIk^wxv&0^6QZXG;&RgMcmtA@GPD;cE$K9;kjbZO!FnuyyvtRUq&h_JFJ7Ab#iCIthJVBXcTHHi&Sqm}lh^iU zaB%x9IlniXF(OTtZp@8TFnaiU!UV6y)`B9>x#Xk1;6$mBScsLbZW3mBIj@e?87Yjo zv{VG0t?}@E(-wEvP%OsFc#2$td)+*NReL}>%n#`()nL!Vm(Yol0^)@e(REraio+Ih zeo~%{kWRIJ*?wwaDLnrU-Ni3pfnG-I9al5r_|EZ6&$(7KE4Q2(8w_T92~ep1r@ zwPuUg`NJ03&f74Eip*l1QU&o%$ysQer?))CHke4*Y&SJ6Jf8$tb_q1{-kem`37pq9Dr#$2Oz3i}WdGUofVri+wqjrXYoJtf(V#jdakF~7P| zf1G-APK=CML(l|4Oj@i*jDJq~)aahZ2?H>R*QH6PEnvh*nD!DtJ7ffTO$6l0!cIMM` zZ(YCYiJFX4zt^8-#dYkzs| zqFbL_QLhi#^_OHBd;$cVWE95oA7bA;?2APQOL?Tp{1tf~R3GDG=@ZD@bm_U$-YaTm z$iBJ%aMm_(no7A_044NX1yK>5rzT@WZ}z+H&bmU;pqmZjL>{HeKcreaC1>2_c)3db zEILod;u7;~du3CCe|U?{5X;eG5TCvg$7cDsJ~qdl$-)Y%uF9>%i6j4!LV5qKBKpl5 zx8okc4&TNKx(5WKJ7PnI`kHs&alc2fh|UI@Jy$hJb7tOj;L0^~^J5tN4Lri#5feJI zBlpyKagPDx+5)X!c?{?bus^HzY>kpWuU?d1*Eb?%d#H*#w^Wo|7vRQ1QjxD@D85vX zl>@QGWTMmL=|HQwp0J*BO<2A1k}%q9!=D$STar(xB8O(YwpEe#B)o>F)~znlSHz>AR0tuK55@xfCzUMnk*>0HKNy$Yl-AD zd7!=vN)9X^)3jlL4t>G8U5*jfGv_0Vyhqor&+p}Uw=FQc^eb^s=@Rus@@_K~2eg5R zbVySt&`p!@3AzhjIq<3A*G2TXhxgrw$RuNB++yFHe2Z-yOC-Q)F|l%0{aHu^V`b%d zWCWQW=cjM{LNe2;iZ8=5_;Zkmaj}0HfmU};lD)_40|!RD6=vB&V$yjgV|lUjVhAmA zDYD;(@D*#9JL|lG7OP@pH|};D(h`~`*LdN7$XiR}kFbQQfBfn}zv-*w!w~fIQq5qR zuH>bIB1w3<@}>WXu+n}DnXAM|xvTG$rWKDdeLBpb^;h|k4}?ZRO87O%;{M8pKQ;%H zBPtq2A4pz5Uqu;~L%&LEb(@`xO1$n(#3C@c>zW)L1=zmU*h`Jo|5|;x-^s9UOWIOZ zgS0YUa)>F=9skDM!8${RCsQnZzTCNwcdJpJtEA6s*;EF(%06LQ4PB~56XUD zZHx#MD#O16@yXhiSiS~OLR1*B-nbkF805Tc%}11tp#R3mvbbRV9_Yxk5T=??5yKj*%yqUb69-AEEK6|Ou0RsTTZh3#JD7m8?h;Q z@Lk{c>#M*W7ig{+21v5=;(p)5zhzb!RDN=qxqR0QyeY!X-b3(;ilfPeQJ zT|q^W#BK5^H}hX^bHp*TaK1zwr7N-FSa-7+;a6)tL`PkR+O0mf9sO63x16i}X6nbC z8w{IdTA?^NfGwOGfJHDj^0;Ot`j62WQ=YNgm(yS47VoRSQC#pF+os7f8xh1&SY9I= z0VDHmQ%Owv%eYJp8gNg2R9nW+q$pE~dzgY=rJ#(j;=#KT+x^!$gCb}_ZQmQALvy7z zofa4QBVgt+424TvQ1Bk`@rN*=Hm(-LIX=X z$Y<^(OeS~jlrio|hg+jTJIVFzb~*kp69wIdN|?qIEXc)+eV`r_YE2Rl7L+*BmhL_A zKm*&l4SIPU?hu8ntU6a`r)tnj+43#PDly1gDy{0m=G923u4n+l>{Knd_+jR2G0dQP zq2n~^<8cSXc3DE)=ef_>jHvg$7VNl`sxiRlazM@NeBfz%?R=}35kXTMu5sVNmEFi8 zNs9E?*D6VEM0CUut{?l%Z(Lr>3hs+Q!)#S>8@ys;>Ty) zxS3j+R<6Yq`$%{p(iK>d9=&{=NU7f+R=e-1gKpNht8kN2@dDZGBv}jhDN8&MQZ>%% zHO#FIMxi<~T(-4VHJ|kw?0j-U@Z^%Rtc{2X25s|UMwqc6YYR54HTn3S3hxYtnK{aS z6-!kUXgrM)aE@tgeL8Bq@wK7q@|@og{h1fYTWrwuQ4VB;WMc+tjy$$4L%rF=ufstu z^IY3{*v{i5`mk>Pnzm-be5}jw_Hqi6$c|cT9Ocs_PH4pI4_A0mKj-+wKUD7h#aa`wEtvl5TS7K2) zH*9MuJD_z<39Ormji~Lw#gDZtNzG%DBv~iQZ2MP?G~SH8G5k|YJPaggIt10lZe7V? zexde`ig;1pn3^02p;8L^5$ouEIWPQhQ~liNx?z*$3U*1QXie8G$!4)u5uM{I^CWfQm&PF)Z%f>F zx-ExxLA$0%lMT8tp8%R)l-%;{ediD)!uAaxQ$m9Qss|v~a}VXWjIgaMbRi?V&B-}; zfjwnlvAhuekFrs;x3W(|YY4(A3g_Yqbil3W#^FP5W`~BEr1yKxiAOk)EV+`* zGu<{cqlktO?NWV;&OdA&gRe*SA-Nac>hZ#B zxRdaJ{(XH$VH12z2W0D$3Vc|Bjmz1Wi=Q2;)kzu+TLe$w$sAX%ce2u2-dN1G-> z@Xl-UuS~1HTCIK{gxs_^jiI2iW+z)LJrN^Q>cek^s~J9mDSpZAOww%1xv!#_hxY0B zdedV*e@fo`qDIJW_d(BNFPO$A$)C8A*C;=jp5aUKwEfUlLf3$Y%SC1->RPgslsF~W z;9Y43H#$LOIoGM1Th5_(S-E;0PC)kr1MQGXC*2Tqs@CY*t6G<0d#16(89Cr3PTDEO zqf!$0RckYg_dx-CrQFQ>t0b!QuEz_7o?|_*J!#90pU`|0qrcW=JaERE!n}6jr<;P<EO zAbpzTS2S7EBQFp)HR?GEzLX2$nL&kJr$)pIu_guYre@J2if?IpUDRP?c~Dhmj0@b+ zt$vya0!oSY-_=`JKzP>?U_Upq{+;e4h+WZ2p;-yp_@cLfk!T7atl7-281(9a>ip&o99)J+K1K&`;CteCy-9Ipe1{ z4N+%@?9KuW>Z*DJ+>LH_=q=7r%Dc5o<+W&^1H!vw#>+J~aR=nbZFV)UyIy2dC-6GA z;%oIP3XCy1t1K3ZM4J0kr7hV?8J@8^$Lgu)*nIkQj%l$$%&J|7xP`K7tv>NNa>S;@G>rC`Z zIg=$)9SK%WPp@rYJ9ED3idesW6S{=X9YKIW;RM(NF`l%KiE%n>g$SZbGrj&!ktz_} zvAS_qFZ~_uvoyEY`J{;#EK)7G-4mvLcY_ohxur0{V~I86O#7pRKK>M9_VIY~W71&7 zfzvS=4!JUu4H_MFLV5Jp5+gN@Gf`|%kRu55gL&D_VGHSWc7TB4G58u6@BJ61MeaP(5>1+!gIjH44paDxxBrJKuQ)) zDjGY{n*Q0t%ZM5(0{jV*V60DL-Zni96$^q`UzFE2ObUA@T4vletzW2%eOg3pqR{FR zR5W0`Q6@d4=%I6cVARPNvkH^#IceN(U`v}9z}(%ND3tf2Q8S}vfCf$AL{Hx;NB;w< z%3I-@dW(yQ>FGqHZFH*w-ssS8$um)C^*Dl0!u7x|=suoPo3rby(^P_As2#X(LpLZA z-Umy}9Ygf=+CJ*)a1(-;#EJBBD#lKNp4>Q$#&d|6gvskPv`ShVOr*YlGQOVZES9`S zo;`D7ivqQe?!a8MRc$0_2#pK`INZL#nn;x|qDC`)2{G-mCItj_^df~%<@Ph+mEJ{@ zw~%=kwT;H69(?3n<&_%=Qr)_wG4{6g4(DLp-$pBKFoF0b$7KH6h4-&%MCj50ry)rK6D>Na{sm?eL^N(j`wMw6-g{tQ+y0sf3xv#(v1?4GRtem+aDooDZlEaX z`=Q;Fclh<_N>C+_;q3Kkbx0ao3Zl+ifh--BmPG_6FM&0;&zR82jY~;$IYTslprH{7 zt-K*Ew|R)FyGh6uE2mxuWLQ%)^{=);w$Dp>l$k|VluMzd2M-Fcuky?h;;)mRd3K+?k#mV(d_5oy#=N)}_!?=J zc4MLFmY?Sl=eL)kK_GB0L5>4;dv7iQIaTIVd2nccZueF1jUzqRL+-vcSWjflk_q*(;0!8a1DLuSUvWF= zgaHMSy>t}im5a~ITXZV-MB`XfPuB`wUQOojWMXC3|Hj)L&p!vsG(g+B;zyU zt|I)AJ<8DBUif0KAaQh$!+`SSMuHv#%LbBE;&#{FQIh1bw@7OW)-B;hJJ8DRJzvxq+w2ao^EXch26f%fnSk&{`UU7Gcyfq1alL0N& zg8O9pxGQ?ex@2UehTUd@Ot(7M&`NB{%Ld)YWv*Lt=c@Q^LB-dRDJJNvpij8v-C2f{ zdx%KoG@WjjJ~O*B$}=1da%!c4;6{}TpEH8^ixQ>vZ+H`K1}|o5%S6!lW0^G?Tctfi zF#}F(B^ow#B(q~w@y7&aF%>~iIf$Xk&J9@fZ*UlzfSu>@>n)``y}WDO2ZB)%_kxI1 zvDL+m8U(17)D9GN-1xiO%(0Ce!?pYbWN{UfaWXj2&;$_4C}U*xspOqT@1#X_jESUA zWn>YOGn5?&u<3B;F3{t3NxrGkMwM)M{*9_jQV{o%@aC;Ke7ww{2U9wLcn3IxOpIxb z^h;NrpOCh1c7$K-J~xT*sCar0b6r5f!Rlo7hYXdWBk?+^KnSgmlPS8-`PgT!VN~pi zW37xvHA+SphTH&Oopm-hII<+By?}P3pLdYVzz0X@4Dk}DvZA^563T3VRJ2G z^P~P`mkw}P^qVB>?r$Mm{M0sz_W={nss;zNxV7LfxT@44dUncSObLw1JjO|rJ<%kN zFlNeo&{*e&uPts=IX}-*=tXAN4uQlaNA@0;Z5{r|SJrH7`_eS8*wgS_YquKcE6spU zJNAmu{zhm0o8YUOS!wC{L)Tb?7#|^2LAQ(QWYPM@jswC9%)TX_x8LT~z>)oe|`syowx)S;KX@6i0M!%w}P zbyFB6HhvG3*zm+yO`zbTK-Y<@v*$ad$0~41t+%ceICa_thBfw{qB0z5WeAE_h(`tx zf9mEBku54|5vmMn@j4FUT0+HET-NjA{^BCCm4Q^Sk+oLpb)R}Q&*|-LoWcup#s6YW zJ#`TgMDBzOzRP#eOq`+ZR>yBTQ=oaEQICbfDg`GIBtnSnM%7O`U_ z)&*Z>+cvVykGRjqtk?%C(#mK0Wj)Zu@LBfMn2Tu^>hS^f4R)pj^i7y7%{s3hEpKW9RUXK=LP5`qDjf1+CddR`wRJ?V9>=}S7C^Qnh)bSzLt~93)OA0{ zvJM25Oluc$>Z!nJFfM!~Bgn$7NtDJ~+?vX~xec$C&T?9Nqlux^sAt-w(M44+ecM|= z4wOEpJ8DMhIONHlEmspZp&J$>vvJJUNuhvN0o|ss7B7dzu#+?KO2002>!;z$Z7lKd`3J(gY6Qz-0&cla`B@{DeF4h0F%k@1|)0<|HM`9*I2aXWW)K2M~E zPY8R*sBHi_-l+w@*g83NFaq3m8@Ih8l0szKf`N)hP!i|jwJv~Q2W8)^d0kF2Lf8;4 zvGdAIUwNxYelo((Pf_yx=7nFL^bG+5BZS{dOHiOZn*}7W0rzZaVaOZ(p8yL=g7+Lx z+3K?=tT-0kdiI%2CfwNG+&i?>-vO>&8}N|oKbA|2EHg%}P?ROdh#DWNDo@*0HCRGjZwP^b^$GdcZ!)>6 z(i}-D#P&f59*eTK77F`}B(}I&ZFcq@MsScvELY1W<-?w*yk zVCK#@kKsO_3OvO&G?O7i!{Qe~RU(M}g_0Ft&SxkEc!tfr%=uQQTR^wmou4AD)6VB6 zAU7-EMmA$k{i>T4<0@PwDbj*UP%w1qK~eq_R!9cjQR@%mEGM7ybGy|_8rn@jUrO&< z@2Qr3;d7(&dvB^pWt^@LZ-n%Q7DvpZ>bBbm1Q* zF^wU@^bfQN0(-1%@FYWh&?YtYt$KwVO1Z?ewV;yK{4^$jDmA3YZz?Eb2hK;`f&K8+ zwxG}KSa8*$`{zd;hhQQAP)sb+^AM*yKmLh)W=XpDHm2!Ca6PR_{?pO<`x_}nhhZ>Y zf041@uUC#s9Bg*fdf(m+*+AfB#CBP^9l&19H^TYTY22Vyo4GD+da+Yez@N<^3d(-D z_B3ixLB2$Y=eEJYYpHBaRjXee*S1|8Yn-%YDFT-s*oX3Ez-z2qr2Kh~DfNo7bGELa zsvVb<$ZEqg(9x3}dW+5AyK07a}I$p#%{s@5#eM{KqMpg_K7u780A4(Go4yN+N|4mqZX7kLL zLIL9x|M~+oDCT28!X#f&QHge9QI);bx(JA zc2??CI9Fy>I1R2rXUqW>kO&OBZxE2dc8yZ~od!pOJFn{Azzd*8KyuAy8my>KV#QD#Y-9R`-iD5>c;{Pi)1~ z8TI18_uYLbV^RGsn&KBR!NJp(Yq`@yD-F@2p*%1SIj!M&X9}|E&F9YIvC(}xjgHT8 z(!H>kt{ysm$Kt+HTfaf8PQ=m64R~iD_R02P2fz8YH|}bPj`4W?l(Wsw&A6@$!z{s3 zqGSfa_vh~C?vfBITi=*14^#2s_PeS^UAsva1Z>qpgT4A?087msU-g5wxLp&ozmt<^ zO>*RrSweV@6Mnz9+Cpb;jiNhU7AOW}ur8Rn;MXiZ;3v-~pHJikfp$qnXLRn`=}MNU z%79I=lL)gRq;Hj!SLf@Tm;yJ#uK}~xyrhEH15Ul`CxTw<#HKjp?d>0&3BE!_`~z7( z=4caC|7;|&&7ZV1df4GR3nF)GJ_N^lyYuR8d71iF>4l77avB3>1VjiT!$;hh zYj>-l6xO_{Oln!EWW^GC?{mw&*NGX;>NC|W28c${h* zpMk+npsXkvBdHV!?K(!_ve%%RwI~ti@LDFLa@Gpu{m-eg#ktPDInX=!s(Ys9jU^KU z)4`4lNHg>bDs|e}2_FywG0XCGe^=dmIpMDe3nsOham+?t=nrscpFMqYWWVSL*!YPt zMAP#!z*11c)Y8P`U{K-o>cQyk+MFg*;2h;ZDa66XM65_4db5wus_szif|qbSKD9u8 zszrBI-aOzX7Rs0GuotQT=WgK zcf3bm3)mFNhd#Q?4_KRPxi~16CPUlf$9+K<@(xId=};VN=!%b zq<#M}6euDPtSugWAB=5Oy|OYe>r~4t5pC74V2-xgPRF|R%PbugMvmjPM=%4ilQ4yC z0>vtcv@*LYv^fkOXkY3DR6sOsL~mCuR0}!0FJRsXZi^m7%4xMo1THQfeq769J<&#w z5BGk}&W93NveXBG)iuo=qX(Jyw?{WAA2+=67C$C!mVQ@d>mn!jQfO+1k&%?6rP72G zSUu1hSALoY4>uLWvnGE{mjN5%4=NMo>k0W6PAA$Qw?8ogFBJPSSA(fO8CH7i{mOSZ zTBb>>J>?)50$~!IqsQ;6RA`sS^qic07=S+++KfB=U{zgiZ}W+pj+8sfpA9Jt``s{t z8owlD;R`6{G}&3BxA>5V%zR63=1J#R61-+uKh5V75)1S^d_>DLGqqn{rm+^n8!Tve zu3c|0u6_^-Q#Nw6e0n*5iKjR?px=^94v0@P7ng88@xT=936{7)A2@(Ur_2gXTB{?Rv#r2d2=5N!UIYrvS@ynjtV0tj zEiL_ZB1NgV{^J+A*J{TljS7=tuiw{QLjbj&!>F73JLlbGwuFr911|IzVyjI5DEljX<3nQbwPk4Ga z9Sg#)wOzQVvkssQsLj*Tlf?$DNC0lW_dQFu*KZACp2)ipH5t6K#gLq4Hi+pr%;RS_ z!P|iMl9nr}T5$ZW@tP1~Tozijik7p)wEa{{jDoa1?LO{VmTSDgb5c2OCpBX%iu8!6 zpdn6?c?w0Wm1LX0N&4y+VFU#hyj>qh`NiqX*O!=K_NHG*@WE;Ni~t;!eMWVYhdW0rx}d8?9uEfl{(84>2uYe z(X*&YVvF6Umr^t=0#Kh;H#%_@rhq#iUUAS{*N9|d4fWXf8esx|VPF8}ycHZG=S9TO zOJ@U)91#)eTdEo(kWjI^V#@VJK~3zdd@rm&ocS$oJFg3lejJHcc)d;YaS-7J<5Bz9 zl$5S=t*GoBW#4jN3n0=LB911&h^1YY1`D%d!N#pV0CbNK)dUlaB5!ztibMWo>DZiK z%zkKvFBM>B&aZXi-dcC(t&sbn&GYbq`XrZSs)?Uc=$fthzC-qC+34+R`$n&eSVn*5 z9%gxCZ2{05uclthQ36fsNPTheAd#E%$(&kKtEl4PY_>Ni3e5>;JeQCg0J3oIJ;A{6 zJZRb+l>BwkNP0SJ{7b)pI^IfGNz>;k3A?{BfCvx!=WZT+_BjFktu0es6{gjw@#yD0zQH!i@(ax^-V*BxJ&Y?W<9AqG)3d)`S?dZ$p}lIX#!$7hH7y|&>d77kBLc&r5OUtL#npmX3nkiOdv~P@OGU^-&IauW)$caRybm27E z2N^0mzfAm5E|t{FMi1Iu3iX!@YJbY=G`~aJv=gdNwc#aAPG2O@eyir7qlU!r9-{>M z$uQ`&QMqyBD0Znl*h$Mk1G>sv#ve6g{={%$?yz@RdFr+Faj0}@ zrnMtlBJ}Y7h(`3T^NrVGFwWXa&)d}o2`^%t*sDDX7w&5A(EemfTlKyXgVJ*(K+iVIZi zMg$|XqAA%AwR^yes}?b~AJ%XW@Gff^7jrO=sB9QB#!QNhgRRfw?QMBob?EG@&|V5O zS}E&iu`*feH&^Slh6Q$@^kM4>7$>R&P;!ub3Vv%4R&7aA4H5%E2$^xDmxwH`DMJ>h z&MisKHFXTw$~q^|O2`^9!jq zAu!^Zl_?+xjcgERzGL(CgWm-MF;hr`>!$`ZVh(^&DZjqoDal4Hx2|;9CnJ^4cFxVQ z5b6p>5(rSWtxHn`zM`~Z?H6>uLfcx!Ho{C@5LceR7T-|nmqK>M_lt+rfb>(?r z;Z4vMPOV`>)+v)Yy*@5E=7#+9`z7`Qi`Vpk7LEE%h-)AKmKr|)2fQ30sfI#4}yp{m~xDPVGTL6cRiT>LC z8Kva30=kUhYy#azj&c`(Wb->r{^i&v(G5p*fxD;)Dc~@xJzy{O=|*}%<~RoG95Ik&&-^vn#_?ru}%OCEkO#X(B!3eb|FL7K?ZuJUYMm-TlzZ(<-+|LE|r z)9?Q1Y1=*lC+$TUnP4^Ja}>jd1dzpEq9=(xlj!-UglX7mAo%y^myjg zDS3Ci_=Yd4n2xz6GIXYS7`W%6awwg&zpaRbVrn=WZD^uNsl$UEoq2!^le=iovKr5B z_QxNOt|^s7)&jX%u}Ygae`a_lO_3*p=9XsWYxR-CsB%H3VIy0;)ZlP$aXB+4k{{?Y zN1@%sjnnOG+iT9ixKmK4wtniNsH{wrI-D&o7U?A(J-huzQC&W{D83Bd;Hu~Q=N4j?%F_EaGql~dHsrehi2p$y#6cF)5GG^92)bHLm`5_xyPv6 ztG+oDxwdyV9p*m0ZD1$jv--Yf-e81T177T5iA(aK#%Hy!!ySV!2Q!!UW#FCo?_1;_ z`cO{{HQM;7+JCt~Q{&1&eh z@5pa)4-;cki3QyYPz0)kbXPBI>#y{g2>P-?D%?rFxso*>X6{S@`FQ*<=Z|$U)3l4o zf#MzCT^YL(bw=*kPizS9$vDnt@IpvKO0RpOR7yrwkc)X@G`ypdv0g($EVUeQnrD zd@-!}E43l{vfA=_?kjs)8;Ho3wGB;De^_63?W&6qZ5%ew8etN%W^tef1j|AgFXQC=8fs3$en0Vy%_s3T>(QC5U-&HyKz!uk- zz)#rSnUe?0JJm1tM9QeJec34!8rEhI;uX5SFWR?sJHKEN@Nq$h-%LQVm{0+38MRLW zNBZB*zujcexo$m$QZ!zG%IY}dqPx#~=i|MMe3=A3IlX5!HK{v~WPoqar%uy5ZbuHU zo~rZ;wV}LgA}@wM!$^J2_U#Fb0=XX7Iyw;c$^6o>T`0x?A-o^>opLh{Q@Z;ZdK{R_ zP$z=hzw=N&q}q)A+uYOm)3g~mwq8#wCmsW;-ViW>v(kKPd@TbNZgG>!rhzbjQ-5KM z%NHB!s->U{r3h&=+u!|r0RaT@0M5n)QY8Q>5{ctgdh~;@Q3uZ5-RZSx6h)d8Iyj!2 z+=O3}kEr;m=>0qf6QP2>RMbl!-)b_Yd2^KANBH3Gz!WQ!2vYnkfWU*{{up6-G;Uab zgeq%OS>Gu8ho~foX55

    (=G1hR&ys7^LDvPP{#Mt0eIl8m-Sw#T`jwpFP^C-#Ti| z&$VnQ9(-;eRa_i`jwuujt43tl=1bu7q^@n#)za*KxJTU({eJVbG48X&ocR_0Mq>Yq zdC(O=eh4>V;9WDmjP-Y9YPVB?RLVIm@Q+=(+smvkB;VJO4+k7i6?bkX`b&fQ75K7~ zC@^4`>QrNd+&p4|+wzniXYYqzjy_^=wjd7qHC0y9#OaT^D1QWKv~GccvQu0jwYP)-*F_oWB<4e)ZYk-R@bm~9e##A z>6qMy!<9f~_*E2|;ePQxnVD#VMnk&|FhUNLY^bi9w(|R8XhHl z{1QMOr!qcsBx)U?$HKaPT6=%A*m}w$&}z->UYg+EDte*xc&Q z7hyKoDnAS>aDsEyD>KGi`t6tK^tW@-_*&yHPPP>3x^a>H3+nYV&B7D>jtZ6%eojSo z%NaUoDC1223}1;+knqNc$Bj}}b5g8+k@YU>hpOX$gfUIT}o z*q33GSeN9pr8Y`+Fn!71}Xp z1a^FO06(0u&X~*8<70Lj_}Tp68DIkUn~|?e?Mzv^9nGi=uiVTDE6;nFmC;f9+2qd- z>!%AcJgbbVs)kqgqRuBmY{eyOH3V+*yt>8pGkxkuQwc9T*q=F(#GjIQ&|N|)ykN0$ z8cXJ@9aOhDJCehkRoct(1xnB{BUd{b`v+ zS@YEiF1gyI&>(%CfiE1JfTqjv$)|0I+w*`|0=mPO%j!B+UN~ygfrlROaoMWI<=PF8 zf~n7^w#mADo$0X5)%v5Q3m-3;#3{!=aA zX!&Z=?J2|Q3eaydD zUH?Jk>rIt{*|FY<%+JriT>Tl0M-Zn{dmkkN6oF8A_sb5tz$=FMpB!mf;VO38(nkBj z@S&Q|TqwhK2K(J8bE&Dz5cD0Q)Ee*Vt+`(P_7k&ll0@Y=W_%o=Vk4vl)(C!$-xfg!-ys zwb{aj8|%1q;XL|-A*vHo;0REb>(;R1ZQ}eJXW@BGY<4y=IT;vzh2GbiEzDoOgw^F` zFo(hSTBy2Jc+DVve(^e%uD*5;)PXpT_9J) z%jYiQ#>#cnYAy=-9JabWEG;jivlXzh58nGBl*^TX0s9`9>*9@bZ(?Rtc&#=rUs*t{UdNu985}=xCpI^`C|7du zeIJ#Yi&nb>f5`FJQ_o^*qKjjx807tvvbk)Ev{Fd$D_}`g68@v=E8DKzl}=^3z(Rk z!mYR6j+xmxcz$$USF0}i`3jzS?IN1%*Rgkc3Jwcgg4fn>pw$WXrrmS@0}30cR$Xjm zig^09i}2R3W5RV&Eab4c)x+ZQby@EHAN&wzX6IxX-}g|h&)}iwPa!+(BkKT@6BD?x zv4Li*gT1YA-;rSA;Sj`Meeo^)+0$dZ_-zZ{e{CNB_YTg8VWd?#B2!O6a9V<4uGlYX(gR;jv;`J8|&z_0$0p@DR70X zP1L}`@pBl*a1h8l;DOf)4?p&>zP5&DV*}k@4{mJ&rBYeGeO2@k2;S=1@AuI38ej-e zdbv~$ytsxO!%!2$u!D>NH^ROn>^l?63@71m7`$YYGeCUxrrmC1Gt^13SVFlX)~gv9 z2U=be{Xq`^N8POKRsHsx~E)bzBJkCDmJ*l42JY+!SqLw#}z8Ha&84lv~4hRR~EeE!`Jv3>#S{;*O{%GZBMI6DL^BN8G`aRTYb(G3w zR9*GW%cgK+eJvcXHcF+y4f*XX2Wa;W!@We#KXUJ(_g;Ozi9EEJY6CIYK1{Lk+ub~F z3rO7G!NYg$aMi0x-&aA8H#d{N2cqvc8ENZCvf&txV>T7TZcQ#@yPUo7dmtvSF)Ej` zuf!t9^wc!+xxgz#Pag~hL3%!qY(59i^WiuQ?N&?XtJP|Ox742LSh^Q_Z50Xy96Edm z`wkq$;X{Xl{RIf$k;Hje4rsSq$T$q1-wx-4kEy9?Oi$0?mRoN_rCfpQ*5ul{u(^3n z4+9Q#HoKUfoIx&EK&e=U@B0{Xz;Csrmz$VpoCDcx=nWITl0|sMMLz5;zzGnxSnn;B z%RzsqrZE@{Lhmgf3_L(*wJLJCET$%>u+?q@U}*U*4EjAZn?5SF8uIx9rlzN*O{vvt zh5LwteH4r_96WRg`}Xa}+`c*Vwl;$YGIKCBJ&j_a7?ks)oz#5D;rl)&_e`T+pTaH2 zZ$rI4iCV1|vqg&e&>svi6?(U2b2;Pu$mMd#=khpu^DUU3nn8Vf5BydO0}gnNrt%hC zJ#P5seO$ihV+er3!Tv)xVRmK?M{m9r`}ZBdkz>c;I2rK45N*E=I2p8CtzdqH^NC)c zZmouTeFC?<=Qt|mO29^Z54Cy?`CJ~;)6>y)p~^*Cx1 z6H2+HvblU7`wt$HJI}|qc^LX2V&Q$o5a0iiq(ge1%No#j001BWNklZ$Yif1f^UtpDDd_Tu+{@k5r@5knU- zxrr<~a}rNoie!eC{)_PaGnervkH2C}yZffS_}$NbNM(7XLH&tO$3QYBL_gA`iw{uI zKBP(KLynBYvqCA8~{8-&4a-JP9_t1o`8c70p^7IV@x^%aL(m>!RWZ~kZN-t zup`Hb^uj}33O1l$6F~gay0L2#v@M}84i?JBwLJ0~X9zikRv(Ygzi3}i$nL;G*@s{m z7O+J=1OtQP1h$b33;LDB*jdOJgWpW)x9p47Z@s*&e%rOHU+cEAwtL-ALeTHuN%_S6 z$YJWStt<=g)AHNIru`V=SYaB?(TH9k2EDw9C9?<-BS#qX2uX_X1T;g0n#e$qjMQ}` zWkOcA{U;_SBJ~!^?Qiw)=xZ18|2%mHzw?zx@%WnyBfYRpdI2}RX!{HEqvl)zQqX{rZc0!YR#iMy3(NHsNzv)Y_ zB0db3Ii%j1`VDk?9C@`h0Uo>~ivegghz%G0a=$Mc|`ky5z)2Fuf2F4fBw|##=7r4GAkK~T(8yg&?l)4Q7ASJ zt(?jJ@zB{T_};6RaQ^y+rN(%;`=(j^?&m%f=^Jq*9bjN1-f*$qxMs-f- zyLn7F9Bq&oi}DQngCLI+cwZUWk*JB#gu##lVSa&*LF5-~N|7xAQBplcuF=ezCpe)E z1XP^?(b~AkM#oaoD-YNPMZOLbF3>Do${U4;cR%R!fie(!J=6U1_fI$j(dW66ZoBV~ zU>_nxHV~fhw6QS`ir{IiujNzbfe0x!3G)DrB{B}8bKJU~xC^!GCeH@i+1=ooALU@I0eikk{hC5h{jWqmyvm4Ij_fQ%Io7PuXCujSEauOlum7G zKdB7F)(6Tkq#atD`$=|S#t?X6DNi4P{t*R=+Dz+=X`jyelipU2J_RWQ`RfJ_# zEPhTNYx7;q`N-a957GuA5RQ&$Wz6lik5TJnvDn5u#9Fp*wykV!Ziche^atzCcioG_ zCya@nZ)!{=#<+YB|JP$L<4+zv9elIEDogU8*ohnSl%RUzalI>R!305#n@*YHsB|9A zkL{+5{zwGPBScHrStTN*<$To(P4~izz5O{nPZ6uq4q5lr=ex2N?pdw}ouP{Uw|s!H z0L2Z5f&3Ok9N7@G@v>Y`Qf|VSq&&Vl-c+y3{2~lcIUaGHdY%W))O>OrSzP}r6N&QC z`eZ!`j3G@tPI;4UP{tg_Z(WGk>YcTV@!MJVs6Kd>)u%+Ak(ga;a{(BQ2#X^^7UKqr zIt0R_Pk&Q-AeD*=Mflna=kVuGoiVm`&yhL&;TJv}mw}Ym*8+tsvVYtl6Uq0bXV2m< zpE28D#t9#L&mnyA=kAemI4oLU)^)9ni$LR~Z#se(=?q%mNu8##G^I-fspUG*MypzD>+FKTbo*MbEK(@`7)B6~&{InpaD+($v`*5wqj z^lam!k#^Fxs@Dye>l=rOaM<^Q2zhKw1O^$C%pV3*3?)`0gN=pIYn)#5wlZ9cFwYyNjc=NH7I|S2q+misNj3yqtRPaulb(}UuANhaMW2e{`J`{61Mx2s z3dAVC?M!So^vi*IJDw(=?|XRh(lY+y>DR`xb=dyqss*Jz>3tT;skg7&Y-Fr6IYT;t zm^YoTjibri&Xg~0y6$zA+6#;H!{N~yx@pbZbR4s}2*jMi3yUL~pRycbNYoZ1khn(} z5_Gx9yfQH*8dDpO-ai16G3!jgX44ym$j4@>(OI zaQg7S{_4--&{TYPvD6DENPwwm05ID?C=)PQW*9-qCUslWDH`YL(kWV{K}UN!^8g|r zbWzQyxu<(!ajhI3Q{5(F^G-3LFC!8&%q54Z<3Y3NeV}NVG9a49$Uuv_^snVn#zoIj zq-_eLmAZcKUz!9@~e> z@M8&-VGK2WNJMNvvh+)Rbo_Ki;SppTV-DPqt}`EfeY7SC|7g%dcDyWL&r&3q5iey|5h8o`Tpd^1+f{ACH(m zE&28RAdN0ztjQu`lcmSYyzt!ZzdX)dwlcKAFsAuJ>?5Cbxjd9Y=^W!=Ijf z1>b%7ErTS<;hv-W@CRS`Xe19)QCJK)b6ESVhc7+*I{y5m`Mp--gj%V9|LMQ@Sxi?; zu{4t$CKe(y6SQp|J5ol`0grT}AS*;V(h&>O(!~#v?f|hpDs;?a!_C$9X+C<6vNPE% zw<9Bpf`3$ASP0WN`3(T{>mj<{#7_<=b`&8u%}U2!VND70m{7SbBq3`3dX*lUWNy-Q zU4PK>C$$kP13R0v%FE5?m2+HW=}P~}wIyw0no#=qaB`41zqS!qXyB zCCfL}@r|KAKhn3XpCzvV(ET7gVIoY6IYu)P-KL@IyXC2js_n(o#d(lpd0nJnAXdGI zdZ2#eLVjhB>Vw9l-L`gp##jJlGJt&F)VK_UmR0K1+M+Vh?|8^-l+>&2JSTl_Yr09h z3MFkIChrLGWR*xsLja~H5)5T%0j8bf0KW3vS^U|PFUJKKBiwUzAAbJ}ACq#?byt(@ zy8KDu(X;dTAHVzbwq+~kviP0PeFS$OnX~56btzG&4QVHwqo_$DaMFK0POArFJ`JrW z$)`*Og7k*mke}$lhTcr`*4TGI>AxsTk)u*x)BiYLShTD|>P!lzy&yE0*p~d$6{N{C zF7h=YczyoR_H`yg#YjZQdK(lG>oS>sn^*wM`b(NWdKe;nN1s+d?T28SoCkll-C%Ss z3fa<*hptn-E*c~|Cihp{H7-0pP5V2>(UZbJOvr~KBO9}z$kpUEMb{E#y zpFVMV#|S^4$*5jbTt(2j{4!sP_{3}t6J`6ytdjorPgL>Weg1yjePqsxG9-%75R85zywzIA}8Iomc{aoAhlQUy|S2FUm*=dKUUN**qAL z$H*`k?Cbh^OqhhD$)|snPw9t&xx`okRCWN6d95*FHX;u!bu$>)6OobjUF5UcnG7tE z_T8piWgmzUDnfm_(>(|>5Y(ktp(9}WG<)D_+8k1Ai!+iv)W_np8$df>gW^SXD- zcEhU+*YO8mdlcRNV02~#Um*JjA3A~m?B3g>H?zWy;+d9a8H(7tw+)$4_Gjw534Mob@$1o?7g3dfdy$Zs&wQtBT=9*HDtMk`}%JupfG+9jjF?3KLM?Ki4y5cPhHE>`w6eCNTv_@lq~ zF?{BZqlt3dv}XeU=p!faXaD4v@r!pJMmFOZy*Xse%;$&D7@kPyh^@8Tyn1ZjZ?Szh zBN$m4n@#LIk23;_Ty^H5uirA*%j;|R`hJQeFD#SXiv9_LAJ+>@*nUR6^;u_XicN~Y^*pGa*ZIet+D0_yfeNuEF+8IM< zRL5+wmAnr`1p2fW=$1YiMKB>7T3&=F&RxMDee;Qg7So6OZa#qD|K*P>?T_-t*hyGv zwsHE(5-zO-uQ5NicLHv)fIAQEMZHuoma*zK1ya}RF@Sxg63RTJcZ?yOhO|0j!Fj(#WBK{buORy06 zZ6lgr)T_&^T?-sRJz^fx>q)u(NQdZHQ2D70`dArNtBt$qe(wOJ^1LcSv>Hb zL&yxeiFz{DNA#Q);pXM}h|CQL8?bv} znHV%1At$4;hK!RCxs3_X*w4dtpROHh z%V45i2DwkiWXq!M=?v85l|}2f?ng;rK%nJ(bzV_#GdjQ8dV9LO9^&h+#*wV@*&8K*>VBV{B%#Bbp{E?9*rf9!k$niukN zEkCVKFRSDY|5I#Vblz&^tvU@8^e?oDGHI^^MhfU-GY+$e)wzw3R8E)8R@TTg5SLSD zA-1v8=em?ZL-{7zw#&A->9;nHl$new7n2L>y;3p=Lp?Omboyomef}x=4f<1l+w?!8 zT$}0}wL`s|bfm1jqe^R+qN9<>Ut=PoeMal^HKa%w zn^I21CWKGrwa6p)O&AzKDuzI8BO(I7=pRCYjP2?n`n{S4-Qi@qwT zURQ?30BoK?x;|~l&lD7y^oq2OS$EPK#7+t}G@mN3C76bh>fWTgQK)tt6s*W$xzAX2 zZ3rg&pHh#7L74IzM2Z#EWfXIq&LvwNlG$oyM4F6Kj&stO(Yo|;8D%pSA^IXABBV&Y zTPT9uDblCqj_sYqe}3<6cF8Q^XYafj|MRbW3U?md8`?ZLJg;euhr=P7&BnH3Q9h}D z8jpj_$6+SAO@rE=1ag8vq?EB(;yN}r=ui4KF>hT`@Y>4qM)iU zKYbH{Zu7D2M-Z_e?=zY*`o(vMC1vTSh-84IQY#P@NH(GQx>=1pZ} zQU+9OV}zzR55!_d=EV+}hE;xUuUBVIHhm~I7-q097#KG#ugfHKr?6#OCsXHYl59E) z99IXa7)bC-_9b`$Isk$2zMQv!HKyk{OpM%_`+RB@q7QtefVGg{zveu_uPt7zlFxe4J=;0f{h#N zSh#W->ual6xN;e5t1Fnld=abHmvQ;x1*|MD;qryIaDC|-E?zi~rE810@Yb7HTD*$4 z&Y#25;#FL*#bLe+Z@r17Ym2z_)_GiCx`s<{oe%20cmb=|mvLqO64q8%aAp1yZmh3i z;mT!f+*rreg?Tg@8(3UiK+|htY55vjEgvh_m(gjru(rB_t<6o`SX)JR>;G@>T)W%U zl`#AYaP0Wj+isff|NqnW`Ow%-+W77mbUqk~(J&)~-Ja96SG86m1JYpFxtLrRL1j&0C>M%Rn5<9ya6q;}}K zE~^tpFvfy*oFw9K@iUUW9t1$i}R{N^U_6V+OyH5ejAqaIB6v7l6cI> z^ry8I^Re??EYh`GUu!XH_hTS5+4`3;?fZ~{3LyWQS`=Wd|JPMjmCqe9RJMYxDpcf$ zZkJ_wDOZ-LY`woMgYvwNw`(mdY0LRTx4Hi=wFrR`MV4iNG002?V+?Y)onI2BOWj=FSp-S?aB+{p(R7e@Bx;pJbrW8r>@EK~70uz-I zE6d4=`!BUgedW}{W6UWmD1>(Gc+ub(BQ1^0C=seQTq9!OB%_Kwglbhw5`nn7Vp+j8 z?HY=a0&hbbtCh~B+Fp+@kY?XgNJ8xB-(UV6(_$4%8uhf!Z^XV9(~Pbt4Q5RV`x^xr z-t%vb3B3M*ttz~(e|RN*KA-X9$9J617p47nI^pHz8K>hB&#NVlhXYotB@X*NR?7wU z`yE!xC+v1xET6t%yV+o|c*17A#^UK4wwpDUi*ML$)>tl|u-$I3Ts&d7* zmlA|k$Q12aRh$@Nv$m|Xe=XY)3Cl*>=c-N_qwyr9JdIaeKSkp~_mg^JeHt%e9Y|%H z*<317q~sRjlP7|BNTepH;*>EPu4?I+NHAM1VoxIx{)Wov{r-rb((|9F{no6#E;`sS zN>GSaj2)vNYD=TOV7&;xi`3D_)L1zp@dWapt!*H~HX?;8zV?57D{co0-`bEksw$uk zYwd+HYT9tr;fTY3uJ^mLo=~bXu;uoHkOu$J{O3uc5c=8wWDO}$ipWezA$guR#Nj@h zhC*n$z)qIIpdk@QKVbfFpQY`-DWx`7@gbec23snVsWRz$bM^d8FQ(#Rb=(K4tXitw zH2zzgCej7CXpMhJ$(47j=y}Yz5_Dx+DjQAw`3yCYKDg5z4oXT?n#tq)YlSx@cBt)` z%I%wIe6$&XE!s#a)1zI<4n22L(b(7srM52eNQs?BlyqlT86MlqN_3}4BKML(^6hp5 zV+^+2jo)^8mSvZ1W3b=vkmot}haHNd!0~v%U~q@i>4dwxAJC29+j;y zo=jk^#bh#t$qXjb8BCU8HlHKQb4=%RL9QqI( zkDp5_T`4yE=AC^}=%_2!%`7amRaMG=U|(1HSFDbcC}R_zT3~%SM;J8c;~e}Lm|bV@ zsxc4{#b46^fYum=BLq5rLCb*H%a|Q+|MEd53q@w!LK~VGz2zRO3V4FDrXQlBm{AIM zyz5%!)WOwp*ELU-q_dTxKBe&mN(;OW^~F;W$ejV=KS)2gLe;*@hVB&FjO|Z3&(WDy zis2TCC^mWOGd2Mz6lwJ`w-5-e&k0hzJ`~DGp$}KCD@Ex-pv9EG0l_+uTi)&KlrPUS zqL_EP?S)A8JLE-y{b7${Fu?J2#NBX+SR z_wGH4y8+&R_=v&q4j(>#!tj2Czdk=;G``2D&kwktOz`>3<0XH1#AG_dm&d;`oz3y^ z_!ZOH9ACcv9pn#>UwygBbcW9lkAa=PK0o+&?nXm=`1lEf;T_(8_=tQ^;Qjj#$nzZY z*&N0gj3-l6*5ZCVL0Og<-;Yt2XAFl!oK8m!heI5W2NZ(=_J=*PqQGvyLsrKr%Q9?h z@{r+ zXj{_kr&Lw{D?Po2OSp2S#!~EYRVUi(K@XG`=(X8(kDJ@@pShxAB#|=1$hT)3IuMUb zj>W!Qk+!|hlsFWMqD|7~Jh>sH8BRrA=R+$)eUyCC>T@beRl>J?cieR<+30uYC1PJ` zi{~zJ(&#$JLERo-cB!b;R!YjevLj0JcYCH(DgjAjG`}jB+U*-ZT83*A#wC`9~GLgbR)$ROj!!g?$ebiOM4cjiGH0j$F6}`SIYK!{h zC?Xh3NF^>pA)*@XgY!MrrV+|;2>QeN0006=Nklz1p$NQ9c9mP^W3lT%9V|`-m*x%M9TCRVk5?S(CB+|}HN@~VHdMcwo`Sl9= zw<0_PKgQ8ne%<)r%5A93DG~fEvXZXTKJj$V4vUR3IKTP24G6h=R#P8;qvwH;i$sv? zO*4B7R#t~VTS;rmzqQV#i@0b!h)U)6?*nCT<@Q?fwDI;NHLT6@>YYcP01))+RqmG< zpN^cyw=3qUZ3MBF-j&1p(n%T#c`yqL_(LH7mXxe23{#yqUI4thA}qx^8lg$`u60vV z$Cfz2DI`|kRSVXCT;W((JG4EzZos`IQ7Xr6RHU9e)}Ig$;3AP_97!jF5*~6%K5O2JOn@K zx*Sb8I|A}{5Zd+SY-lftldz5^up>OnOC=JX*Y;I{Alt9&=9y_R;z%K*6rzwwwN+1x zd!5uiM{K6XPU?d=t`s2>EvDw5&HrM~(x2p#c8~f0m6GoB|HO8vI&R&wCC9oh%3FPk z_FEVy(dtt_s1mkHU5z%R_|RloTU^;Y(&MZ0IZd?4L+Wb>D*C=j<2zD=2;1PX5yy0x zZIOh)=&%0OilIPOeNq=WtNUn2Z$)MnG?m`EeCm-b`w+ynzHa^tE3E=uz0u!y00000 LNkvXXu0mjf3l)h% diff --git a/public/ueditor/lang/en/images/rotateleftdisable.png b/public/ueditor/lang/en/images/rotateleftdisable.png deleted file mode 100644 index 741526e0d5e6eb5c30eb0a62c9b1d6d558ed9cdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 719 zcmV;=0xVLm}k=YQ<2%m+GNILKMZ4Wj)Eo{6dA(i=1OgO`#k70DYI-BmRjYes)SkU2cI0GZBR;y4N3I~Hh!d`9*7LUg-fQ!ZA17DgvC%W<{o)0F! zU*`EmuKGZYN~Kcs0v3uoolcs~W&&`zTnccgjDVT|^mshtI#kAIIINifC7$1T{?yd~ z`f398$nzJ^&xXUj%I~;@1tb~>YHqh%0jWR{cz-&b2!6()Y&M(t%#{JqZzlB@o&~uo zRdFYN7<*g3d>y0SFTSsu}||KmrzxrzXV}0f4+Nl`U`wo^<=3%s|h|0ur}Z0m~6a z)9IA5+3a~Uyo=N{O{`Z26ni!(U6x=a31615Uq6I}2cZ-|0a2}1X+EF7+lbqaCbL*9 zVjpaCBO8zeF31Bljb43c1B|5gdMy+K1i&JZ2&owiAH&aRFjxU~zu$k$sq`Wh)qB?* z7JdW}ya?6MP#9CN2390Mab0C5lljw}edEbwzR6l%S5ujn*P2rK!bg5RKf!pHvr45x zq@5Lg56Rlp|dF?<); zZnrB`Ycv`HPI*-K+S{`L4RzyPXZYcl&002ovPDHLkV1lL= BGwT2V diff --git a/public/ueditor/lang/en/images/rotateleftenable.png b/public/ueditor/lang/en/images/rotateleftenable.png deleted file mode 100644 index e164ddbd62a232f3a89826158c9795f6c082cc89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 952 zcmV;p14sOcP)B{+A~4pJXZ}t_3ogEQ=EtDt@NW=ovC^1YY3D0f#y*iY)MG5<8F z!|f{@kKz7^5#8k3NZf?c9K_t5iFB?APcn|7{XXn#Ybhtak0o(qW)4fuAr!0vET4{< zSc+h47GQ*Qo%FCG#zDtxKn;d}ii3LDciA+S|Xdhl! zB4Tth6pKaVi#F1YAvCEHTFJM^bUHnP0sSYFPoVrcDQm)w^;g8!)bGBFx|JW?%CGA- z&{PEjJ5@v`9|31h11Z`(8l4W74acX!rYt{M#7D#XGmFrJ8p1{(Q)@sv8@F2OUzvR1 zx9$d0kvWXM{tBEwN0$R4YNDW*#-^%Df&-Q6zoW#Uu@ZDmhS%$@-$mxZRD^B@1aSM_ zhL@++3|_o?ixNDPXhWAA>})fj>w5hzGPAR@B4aE>&p+Mbf*>$imMuk5EW2c0000?hzPCHlRk++nh`E3!rKF3htnTQ@ z$gI|MU8lEVHuFTg-PR|Q2`!gP+H5wYX&N~k4)SU74-bY78_Ii7=yw!+~9z)9EC?-%tI1pNtpOgTWwx zYc~hmYPIxUug9z{77N<%_sk-|f_a_y+;xqv4+oe^KHq!n0!Sli2@LjQ?eJI-PQw!5kz2kP;{i1#vW)J3m7@ilvOQx*+0gD21yWM29TG_#>*)V5x3eEte0rs!7XTfq- zNpDVBe^HqJA^?xgte(JHEEaB201ADoR;^a);o$)-i`fNGNCD$l*jUkV&ZOJ#g6-=H z48;P#aDbi7X5{nvH~?d$9K9Fo01LT5x392A!Cv-)3}9cydREAx^dDF>`_*d2002m8 z7y1N?u~>`?4DAa45ev4jw7ek*Sw2XA4L&zdS z9A4&}t`&psbm3W({))<)8k1Mzq-LMgHh4P0I-QOV5C8-H!ohO6T&8$D&Va$Z(UY0s zOeS;lL%|{kl3A%;S#MlC&Amg&cpiN1r-rvC| zuQ1Fer=aUPn>g6re+%A~4HxgfoyFs_jfT}hvT2|~buTAFG7cgsM5)fELnz*RfYsA+ z%+JjZfW5eCXjGl)8+s)4P|lCQu*F>n-SXLP{rpv`@{BNE{IcsI8B@_npSvh)X*hNpW_TLgr2`Ju@0bJqvCruO={o6E(Z3`5{jw@Hv`M-m z=H><1m4WE;;`c%mkz)x|ObZEnAD_J*B%s8ej2PcmwhgRZado>%)jtid7zm=SE zQ*F%`{_{RP6wdfheSj59}E|h^E{{P*E_)R6H^3NW^13gC8C>dV0CgKv@POF4dxfvY6kSFwxaNHki&!>3-Y^~4kn%F>oC=IgN4BfYTUZZWo z4NgH0Fff*Y6!1`OQEtkV%qBhmGZEnCEqwT{hG--_gp%$=?(C?C;zb^jm66PHQ4|^R zkb*cmi1NcmKm&YfVi#crNDyF;_V&?5G diff --git a/public/ueditor/lang/en/images/upload.png b/public/ueditor/lang/en/images/upload.png deleted file mode 100644 index 7bb15b3d6d6799504cf7093a1600bd7ece0d9ef5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3941 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 diff --git a/public/ueditor/lang/zh-cn/images/copy.png b/public/ueditor/lang/zh-cn/images/copy.png deleted file mode 100644 index b2536aac72e763b9a872b507462458ecb96990f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4319 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 N002ovPDHLkV1nv#UQ7T0 diff --git a/public/ueditor/lang/zh-cn/images/localimage.png b/public/ueditor/lang/zh-cn/images/localimage.png deleted file mode 100644 index 7303c364318b6ac27dc4a8ae6717124d8dafaff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6979 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 O0000字数超出最大允许值,服务器可能拒绝保存!', - 'ok':"确认", - 'cancel':"取消", - 'closeDialog':"关闭对话框", - 'tableDrag':"表格拖动必须引入uiUtils.js文件!", - 'autofloatMsg':"工具栏浮动依赖编辑器UI,您首先需要引入UI文件!", - 'loadconfigError': '获取后台配置项请求出错,上传功能将不能正常使用!', - 'loadconfigFormatError': '后台配置项返回格式出错,上传功能将不能正常使用!', - 'loadconfigHttpError': '请求后台配置项http错误,上传功能将不能正常使用!', - 'snapScreen_plugin':{ - 'browserMsg':"仅支持IE浏览器!", - 'callBackErrorMsg':"服务器返回数据有误,请检查配置项之后重试。", - 'uploadErrorMsg':"截图上传失败,请检查服务器端环境! " - }, - 'insertcode':{ - 'as3':'ActionScript 3', - 'bash':'Bash/Shell', - 'cpp':'C/C++', - 'css':'CSS', - 'cf':'ColdFusion', - 'c#':'C#', - 'delphi':'Delphi', - 'diff':'Diff', - 'erlang':'Erlang', - 'groovy':'Groovy', - 'html':'HTML', - 'java':'Java', - 'jfx':'JavaFX', - 'js':'JavaScript', - 'pl':'Perl', - 'php':'PHP', - 'plain':'Plain Text', - 'ps':'PowerShell', - 'python':'Python', - 'ruby':'Ruby', - 'scala':'Scala', - 'sql':'SQL', - 'vb':'Visual Basic', - 'xml':'XML' - }, - 'confirmClear':"确定清空当前文档么?", - 'contextMenu':{ - 'delete':"删除", - 'selectall':"全选", - 'deletecode':"删除代码", - 'cleardoc':"清空文档", - 'confirmclear':"确定清空当前文档么?", - 'unlink':"删除超链接", - 'paragraph':"段落格式", - 'edittable':"表格属性", - 'aligntd':"单元格对齐方式", - 'aligntable':'表格对齐方式', - 'tableleft':'左浮动', - 'tablecenter':'居中显示', - 'tableright':'右浮动', - 'edittd':"单元格属性", - 'setbordervisible':'设置表格边线可见', - 'justifyleft':'左对齐', - 'justifyright':'右对齐', - 'justifycenter':'居中对齐', - 'justifyjustify':'两端对齐', - 'table':"表格", - 'inserttable':'插入表格', - 'deletetable':"删除表格", - 'insertparagraphbefore':"前插入段落", - 'insertparagraphafter':'后插入段落', - 'deleterow':"删除当前行", - 'deletecol':"删除当前列", - 'insertrow':"前插入行", - 'insertcol':"左插入列", - 'insertrownext':'后插入行', - 'insertcolnext':'右插入列', - 'insertcaption':'插入表格名称', - 'deletecaption':'删除表格名称', - 'inserttitle':'插入表格标题行', - 'deletetitle':'删除表格标题行', - 'inserttitlecol':'插入表格标题列', - 'deletetitlecol':'删除表格标题列', - 'averageDiseRow':'平均分布各行', - 'averageDisCol':'平均分布各列', - 'mergeright':"向右合并", - 'mergeleft':"向左合并", - 'mergedown':"向下合并", - 'mergecells':"合并单元格", - 'splittocells':"完全拆分单元格", - 'splittocols':"拆分成列", - 'splittorows':"拆分成行", - 'tablesort':'表格排序', - 'enablesort':'设置表格可排序', - 'disablesort':'取消表格可排序', - 'reversecurrent':'逆序当前', - 'orderbyasc':'按ASCII字符升序', - 'reversebyasc':'按ASCII字符降序', - 'orderbynum':'按数值大小升序', - 'reversebynum':'按数值大小降序', - 'borderbk':'边框底纹', - 'setcolor':'表格隔行变色', - 'unsetcolor':'取消表格隔行变色', - 'setbackground':'选区背景隔行', - 'unsetbackground':'取消选区背景', - 'redandblue':'红蓝相间', - 'threecolorgradient':'三色渐变', - 'copy':"复制(Ctrl + c)", - 'copymsg': "浏览器不支持,请使用 'Ctrl + c'", - 'paste':"粘贴(Ctrl + v)", - 'pastemsg': "浏览器不支持,请使用 'Ctrl + v'" - }, - 'copymsg': "浏览器不支持,请使用 'Ctrl + c'", - 'pastemsg': "浏览器不支持,请使用 'Ctrl + v'", - 'anthorMsg':"链接", - 'clearColor':'清空颜色', - 'standardColor':'标准颜色', - 'themeColor':'主题颜色', - 'property':'属性', - 'default':'默认', - 'modify':'修改', - 'justifyleft':'左对齐', - 'justifyright':'右对齐', - 'justifycenter':'居中', - 'justify':'默认', - 'clear':'清除', - 'anchorMsg':'锚点', - 'delete':'删除', - 'clickToUpload':"点击上传", - 'unset':'尚未设置语言文件', - 't_row':'行', - 't_col':'列', - 'more':'更多', - 'pasteOpt':'粘贴选项', - 'pasteSourceFormat':"保留源格式", - 'tagFormat':'只保留标签', - 'pasteTextFormat':'只保留文本', - 'autoTypeSet':{ - 'mergeLine':"合并空行", - 'delLine':"清除空行", - 'removeFormat':"清除格式", - 'indent':"首行缩进", - 'alignment':"对齐方式", - 'imageFloat':"图片浮动", - 'removeFontsize':"清除字号", - 'removeFontFamily':"清除字体", - 'removeHtml':"清除冗余HTML代码", - 'pasteFilter':"粘贴过滤", - 'run':"执行", - 'symbol':'符号转换', - 'bdc2sb':'全角转半角', - 'tobdc':'半角转全角' - }, - - 'background':{ - 'static':{ - 'lang_background_normal':'背景设置', - 'lang_background_local':'在线图片', - 'lang_background_set':'选项', - 'lang_background_none':'无背景色', - 'lang_background_colored':'有背景色', - 'lang_background_color':'颜色设置', - 'lang_background_netimg':'网络图片', - 'lang_background_align':'对齐方式', - 'lang_background_position':'精确定位', - 'repeatType':{'options':["居中", "横向重复", "纵向重复", "平铺","自定义"]} - - }, - 'noUploadImage':"当前未上传过任何图片!", - 'toggleSelect':"单击可切换选中状态\n原图尺寸: " - }, - //===============dialog i18N======================= - 'insertimage':{ - 'static':{ - 'lang_tab_remote':"插入图片", //节点 - 'lang_tab_upload':"本地上传", - 'lang_tab_online':"在线管理", - 'lang_tab_search':"图片搜索", - 'lang_input_url':"地 址:", - 'lang_input_size':"大 小:", - 'lang_input_width':"宽度", - 'lang_input_height':"高度", - 'lang_input_border':"边 框:", - 'lang_input_vhspace':"边 距:", - 'lang_input_title':"描 述:", - 'lang_input_align':'图片浮动方式:', - 'lang_imgLoading':" 图片加载中……", - 'lang_start_upload':"开始上传", - 'lock':{'title':"锁定宽高比例"}, //属性 - 'searchType':{'title':"图片类型", 'options':["新闻", "壁纸", "表情", "头像"]}, //select的option - 'searchTxt':{'value':"请输入搜索关键词"}, - 'searchBtn':{'value':"百度一下"}, - 'searchReset':{'value':"清空搜索"}, - 'noneAlign':{'title':'无浮动'}, - 'leftAlign':{'title':'左浮动'}, - 'rightAlign':{'title':'右浮动'}, - 'centerAlign':{'title':'居中独占一行'} - }, - 'uploadSelectFile':'点击选择图片', - 'uploadAddFile':'继续添加', - 'uploadStart':'开始上传', - 'uploadPause':'暂停上传', - 'uploadContinue':'继续上传', - 'uploadRetry':'重试上传', - 'uploadDelete':'删除', - 'uploadTurnLeft':'向左旋转', - 'uploadTurnRight':'向右旋转', - 'uploadPreview':'预览中', - 'uploadNoPreview':'不能预览', - 'updateStatusReady': '选中_张图片,共_KB。', - 'updateStatusConfirm': '已成功上传_张照片,_张照片上传失败', - 'updateStatusFinish': '共_张(_KB),_张上传成功', - 'updateStatusError': ',_张上传失败。', - 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', - 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', - 'errorExceedSize':'文件大小超出', - 'errorFileType':'文件格式不允许', - 'errorInterrupt':'文件传输中断', - 'errorUploadRetry':'上传失败,请重试', - 'errorHttp':'http请求错误', - 'errorServerUpload':'服务器返回出错', - 'remoteLockError':"宽高不正确,不能所定比例", - 'numError':"请输入正确的长度或者宽度值!例如:123,400", - 'imageUrlError':"不允许的图片格式或者图片域!", - 'imageLoadError':"图片加载失败!请检查链接地址或网络状态!", - 'searchRemind':"请输入搜索关键词", - 'searchLoading':"图片加载中,请稍后……", - 'searchRetry':" :( ,抱歉,没有找到图片!请重试一次!" - }, - 'attachment':{ - 'static':{ - 'lang_tab_upload': '上传附件', - 'lang_tab_online': '在线附件', - 'lang_start_upload':"开始上传", - 'lang_drop_remind':"可以将文件拖到这里,单次最多可选100个文件" - }, - 'uploadSelectFile':'点击选择文件', - 'uploadAddFile':'继续添加', - 'uploadStart':'开始上传', - 'uploadPause':'暂停上传', - 'uploadContinue':'继续上传', - 'uploadRetry':'重试上传', - 'uploadDelete':'删除', - 'uploadTurnLeft':'向左旋转', - 'uploadTurnRight':'向右旋转', - 'uploadPreview':'预览中', - 'updateStatusReady': '选中_个文件,共_KB。', - 'updateStatusConfirm': '已成功上传_个文件,_个文件上传失败', - 'updateStatusFinish': '共_个(_KB),_个上传成功', - 'updateStatusError': ',_张上传失败。', - 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', - 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', - 'errorExceedSize':'文件大小超出', - 'errorFileType':'文件格式不允许', - 'errorInterrupt':'文件传输中断', - 'errorUploadRetry':'上传失败,请重试', - 'errorHttp':'http请求错误', - 'errorServerUpload':'服务器返回出错' - }, - 'insertvideo':{ - 'static':{ - 'lang_tab_insertV':"插入视频", - 'lang_tab_searchV':"搜索视频", - 'lang_tab_uploadV':"上传视频", - 'lang_video_url':"视频网址", - 'lang_video_size':"视频尺寸", - 'lang_videoW':"宽度", - 'lang_videoH':"高度", - 'lang_alignment':"对齐方式", - 'videoSearchTxt':{'value':"请输入搜索关键字!"}, - 'videoType':{'options':["全部", "热门", "娱乐", "搞笑", "体育", "科技", "综艺"]}, - 'videoSearchBtn':{'value':"百度一下"}, - 'videoSearchReset':{'value':"清空结果"}, - - 'lang_input_fileStatus':' 当前未上传文件', - 'startUpload':{'style':"background:url(upload.png) no-repeat;"}, - - 'lang_upload_size':"视频尺寸", - 'lang_upload_width':"宽度", - 'lang_upload_height':"高度", - 'lang_upload_alignment':"对齐方式", - 'lang_format_advice':"建议使用mp4格式." - - }, - 'numError':"请输入正确的数值,如123,400", - 'floatLeft':"左浮动", - 'floatRight':"右浮动", - '"default"':"默认", - 'block':"独占一行", - 'urlError':"输入的视频地址有误,请检查后再试!", - 'loading':"  视频加载中,请等待……", - 'clickToSelect':"点击选中", - 'goToSource':'访问源视频', - 'noVideo':"    抱歉,找不到对应的视频,请重试!", - - 'browseFiles':'浏览文件', - 'uploadSuccess':'上传成功!', - 'delSuccessFile':'从成功队列中移除', - 'delFailSaveFile':'移除保存失败文件', - 'statusPrompt':' 个文件已上传! ', - 'flashVersionError':'当前Flash版本过低,请更新FlashPlayer后重试!', - 'flashLoadingError':'Flash加载失败!请检查路径或网络状态', - 'fileUploadReady':'等待上传……', - 'delUploadQueue':'从上传队列中移除', - 'limitPrompt1':'单次不能选择超过', - 'limitPrompt2':'个文件!请重新选择!', - 'delFailFile':'移除失败文件', - 'fileSizeLimit':'文件大小超出限制!', - 'emptyFile':'空文件无法上传!', - 'fileTypeError':'文件类型不允许!', - 'unknownError':'未知错误!', - 'fileUploading':'上传中,请等待……', - 'cancelUpload':'取消上传', - 'netError':'网络错误', - 'failUpload':'上传失败!', - 'serverIOError':'服务器IO错误!', - 'noAuthority':'无权限!', - 'fileNumLimit':'上传个数限制', - 'failCheck':'验证失败,本次上传被跳过!', - 'fileCanceling':'取消中,请等待……', - 'stopUploading':'上传已停止……', - - 'uploadSelectFile':'点击选择文件', - 'uploadAddFile':'继续添加', - 'uploadStart':'开始上传', - 'uploadPause':'暂停上传', - 'uploadContinue':'继续上传', - 'uploadRetry':'重试上传', - 'uploadDelete':'删除', - 'uploadTurnLeft':'向左旋转', - 'uploadTurnRight':'向右旋转', - 'uploadPreview':'预览中', - 'updateStatusReady': '选中_个文件,共_KB。', - 'updateStatusConfirm': '成功上传_个,_个失败', - 'updateStatusFinish': '共_个(_KB),_个成功上传', - 'updateStatusError': ',_张上传失败。', - 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', - 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', - 'errorExceedSize':'文件大小超出', - 'errorFileType':'文件格式不允许', - 'errorInterrupt':'文件传输中断', - 'errorUploadRetry':'上传失败,请重试', - 'errorHttp':'http请求错误', - 'errorServerUpload':'服务器返回出错' - }, - 'webapp':{ - 'tip1':"本功能由百度APP提供,如看到此页面,请各位站长首先申请百度APPKey!", - 'tip2':"申请完成之后请至ueditor.config.js中配置获得的appkey! ", - 'applyFor':"点此申请", - 'anthorApi':"百度API" - }, - 'template':{ - 'static':{ - 'lang_template_bkcolor':'背景颜色', - 'lang_template_clear' : '保留原有内容', - 'lang_template_select' : '选择模板' - }, - 'blank':"空白文档", - 'blog':"博客文章", - 'resume':"个人简历", - 'richText':"图文混排", - 'sciPapers':"科技论文" - - - }, - 'scrawl':{ - 'static':{ - 'lang_input_previousStep':"上一步", - 'lang_input_nextsStep':"下一步", - 'lang_input_clear':'清空', - 'lang_input_addPic':'添加背景', - 'lang_input_ScalePic':'缩放背景', - 'lang_input_removePic':'删除背景', - 'J_imgTxt':{title:'添加背景图片'} - }, - 'noScarwl':"尚未作画,白纸一张~", - 'scrawlUpLoading':"涂鸦上传中,别急哦~", - 'continueBtn':"继续", - 'imageError':"糟糕,图片读取失败了!", - 'backgroundUploading':'背景图片上传中,别急哦~' - }, - 'music':{ - 'static':{ - 'lang_input_tips':"输入歌手/歌曲/专辑,搜索您感兴趣的音乐!", - 'J_searchBtn':{value:'搜索歌曲'} - }, - 'emptyTxt':'未搜索到相关音乐结果,请换一个关键词试试。', - 'chapter':'歌曲', - 'singer':'歌手', - 'special':'专辑', - 'listenTest':'试听' - }, - 'anchor':{ - 'static':{ - 'lang_input_anchorName':'锚点名字:' - } - }, - 'charts':{ - 'static':{ - 'lang_data_source':'数据源:', - 'lang_chart_format': '图表格式:', - 'lang_data_align': '数据对齐方式', - 'lang_chart_align_same': '数据源与图表X轴Y轴一致', - 'lang_chart_align_reverse': '数据源与图表X轴Y轴相反', - 'lang_chart_title': '图表标题', - 'lang_chart_main_title': '主标题:', - 'lang_chart_sub_title': '子标题:', - 'lang_chart_x_title': 'X轴标题:', - 'lang_chart_y_title': 'Y轴标题:', - 'lang_chart_tip': '提示文字', - 'lang_cahrt_tip_prefix': '提示文字前缀:', - 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀', - 'lang_chart_data_unit': '数据单位', - 'lang_chart_data_unit_title': '单位:', - 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃', - 'lang_chart_type': '图表类型:', - 'lang_prev_btn': '上一个', - 'lang_next_btn': '下一个' - } - }, - 'emotion':{ - 'static':{ - 'lang_input_choice':'精选', - 'lang_input_Tuzki':'兔斯基', - 'lang_input_BOBO':'BOBO', - 'lang_input_lvdouwa':'绿豆蛙', - 'lang_input_babyCat':'baby猫', - 'lang_input_bubble':'泡泡', - 'lang_input_youa':'有啊' - } - }, - 'gmap':{ - 'static':{ - 'lang_input_address':'地址', - 'lang_input_search':'搜索', - 'address':{value:"北京"} - }, - searchError:'无法定位到该地址!' - }, - 'help':{ - 'static':{ - 'lang_input_about':'关于UEditor', - 'lang_input_shortcuts':'快捷键', - 'lang_input_introduction':'UEditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。开源基于BSD协议,允许自由使用和修改代码。', - 'lang_Txt_shortcuts':'快捷键', - 'lang_Txt_func':'功能', - 'lang_Txt_bold':'给选中字设置为加粗', - 'lang_Txt_copy':'复制选中内容', - 'lang_Txt_cut':'剪切选中内容', - 'lang_Txt_Paste':'粘贴', - 'lang_Txt_undo':'重新执行上次操作', - 'lang_Txt_redo':'撤销上一次操作', - 'lang_Txt_italic':'给选中字设置为斜体', - 'lang_Txt_underline':'给选中字加下划线', - 'lang_Txt_selectAll':'全部选中', - 'lang_Txt_visualEnter':'软回车', - 'lang_Txt_fullscreen':'全屏' - } - }, - 'insertframe':{ - 'static':{ - 'lang_input_address':'地址:', - 'lang_input_width':'宽度:', - 'lang_input_height':'高度:', - 'lang_input_isScroll':'允许滚动条:', - 'lang_input_frameborder':'显示框架边框:', - 'lang_input_alignMode':'对齐方式:', - 'align':{title:"对齐方式", options:["默认", "左对齐", "右对齐", "居中"]} - }, - 'enterAddress':'请输入地址!' - }, - 'link':{ - 'static':{ - 'lang_input_text':'文本内容:', - 'lang_input_url':'链接地址:', - 'lang_input_title':'标题:', - 'lang_input_target':'是否在新窗口打开:' - }, - 'validLink':'只支持选中一个链接时生效', - 'httpPrompt':'您输入的超链接中不包含http等协议名称,默认将为您添加http://前缀' - }, - 'map':{ - 'static':{ - lang_city:"城市", - lang_address:"地址", - city:{value:"北京"}, - lang_search:"搜索", - lang_dynamicmap:"插入动态地图" - }, - cityMsg:"请选择城市", - errorMsg:"抱歉,找不到该位置!" - }, - 'searchreplace':{ - 'static':{ - lang_tab_search:"查找", - lang_tab_replace:"替换", - lang_search1:"查找", - lang_search2:"查找", - lang_replace:"替换", - lang_searchReg:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”', - lang_searchReg1:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”', - lang_case_sensitive1:"区分大小写", - lang_case_sensitive2:"区分大小写", - nextFindBtn:{value:"下一个"}, - preFindBtn:{value:"上一个"}, - nextReplaceBtn:{value:"下一个"}, - preReplaceBtn:{value:"上一个"}, - repalceBtn:{value:"替换"}, - repalceAllBtn:{value:"全部替换"} - }, - getEnd:"已经搜索到文章末尾!", - getStart:"已经搜索到文章头部", - countMsg:"总共替换了{#count}处!" - }, - 'snapscreen':{ - 'static':{ - lang_showMsg:"截图功能需要首先安装UEditor截图插件! ", - lang_download:"点此下载", - lang_step1:"第一步,下载UEditor截图插件并运行安装。", - lang_step2:"第二步,插件安装完成后即可使用,如不生效,请重启浏览器后再试!" - } - }, - 'spechars':{ - 'static':{}, - tsfh:"特殊字符", - lmsz:"罗马字符", - szfh:"数学字符", - rwfh:"日文字符", - xlzm:"希腊字母", - ewzm:"俄文字符", - pyzm:"拼音字母", - yyyb:"英语音标", - zyzf:"其他" - }, - 'edittable':{ - 'static':{ - 'lang_tableStyle':'表格样式', - 'lang_insertCaption':'添加表格名称行', - 'lang_insertTitle':'添加表格标题行', - 'lang_insertTitleCol':'添加表格标题列', - 'lang_orderbycontent':"使表格内容可排序", - 'lang_tableSize':'自动调整表格尺寸', - 'lang_autoSizeContent':'按表格文字自适应', - 'lang_autoSizePage':'按页面宽度自适应', - 'lang_example':'示例', - 'lang_borderStyle':'表格边框', - 'lang_color':'颜色:' - }, - captionName:'表格名称', - titleName:'标题', - cellsName:'内容', - errorMsg:'有合并单元格,不可排序' - }, - 'edittip':{ - 'static':{ - lang_delRow:'删除整行', - lang_delCol:'删除整列' - } - }, - 'edittd':{ - 'static':{ - lang_tdBkColor:'背景颜色:' - } - }, - 'formula':{ - 'static':{ - } - }, - 'wordimage':{ - 'static':{ - lang_resave:"转存步骤", - uploadBtn:{src:"upload.png",alt:"上传"}, - clipboard:{style:"background: url(copy.png) -153px -1px no-repeat;"}, - lang_step:"1、点击顶部复制按钮,将地址复制到剪贴板;2、点击添加照片按钮,在弹出的对话框中使用Ctrl+V粘贴地址;3、点击打开后选择图片上传流程。" - }, - 'fileType':"图片", - 'flashError':"FLASH初始化失败,请检查FLASH插件是否正确安装!", - 'netError':"网络连接错误,请重试!", - 'copySuccess':"图片地址已经复制!", - 'flashI18n':{} //留空默认中文 - }, - 'autosave': { - 'saving':'保存中...', - 'success':'本地保存成功' - } -}; diff --git a/public/ueditor/themes/default/css/ueditor.css b/public/ueditor/themes/default/css/ueditor.css deleted file mode 100644 index ff41b6b..0000000 --- a/public/ueditor/themes/default/css/ueditor.css +++ /dev/null @@ -1,1906 +0,0 @@ -/*基础UI构建 -*/ -/* common layer */ -.edui-default .edui-box { - border: none; - padding: 0; - margin: 0; - overflow: hidden; -} - -.edui-default a.edui-box { - display: block; - text-decoration: none; - color: black; -} - -.edui-default a.edui-box:hover { - text-decoration: none; -} - -.edui-default a.edui-box:active { - text-decoration: none; -} - -.edui-default table.edui-box { - border-collapse: collapse; -} - -.edui-default ul.edui-box { - list-style-type: none; -} - -div.edui-box { - position: relative; - display: -moz-inline-box !important; - display: inline-block !important; - vertical-align: top; -} - -.edui-default .edui-clearfix { - zoom: 1 -} - -.edui-default .edui-clearfix:after { - content: '\20'; - display: block; - clear: both; -} - - * html div.edui-box { - display: inline !important; -} - -*:first-child+html div.edui-box { - display: inline !important; -} - -/* control layout */ -.edui-default .edui-button-body, .edui-splitbutton-body, .edui-menubutton-body, .edui-combox-body { - position: relative; -} - -.edui-default .edui-popup { - position: absolute; - -webkit-user-select: none; - -moz-user-select: none; -} - -.edui-default .edui-popup .edui-shadow { - position: absolute; - z-index: -1; -} - -.edui-default .edui-popup .edui-bordereraser { - position: absolute; - overflow: hidden; -} - -.edui-default .edui-tablepicker .edui-canvas { - position: relative; -} - -.edui-default .edui-tablepicker .edui-canvas .edui-overlay { - position: absolute; -} - -.edui-default .edui-dialog-modalmask, .edui-dialog-dragmask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; -} - -.edui-default .edui-toolbar { - position: relative; -} - -/* - * default theme - */ -.edui-default .edui-label { - cursor: default; -} - -.edui-default span.edui-clickable { - color: blue; - cursor: pointer; - text-decoration: underline; -} - -.edui-default span.edui-unclickable { - color: gray; - cursor: default; -} -/* 工具栏 */ -.edui-default .edui-toolbar { - cursor: default; - -webkit-user-select: none; - -moz-user-select: none; - padding: 1px; - overflow: hidden; /*全屏下单独一行不占位*/ - zoom: 1; - width:auto; - height:auto; -} - -.edui-default .edui-toolbar .edui-button, -.edui-default .edui-toolbar .edui-splitbutton, -.edui-default .edui-toolbar .edui-menubutton, -.edui-default .edui-toolbar .edui-combox { - margin: 1px; -} -/*UI工具栏、编辑区域、底部*/ -.edui-default .edui-editor { - border: 1px solid #d4d4d4; - background-color: white; - position: relative; - overflow: visible; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.edui-editor div{ - width:auto; - height:auto; -} -.edui-default .edui-editor-toolbarbox { - position: relative; - zoom: 1; - -webkit-box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); - -moz-box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); - box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); - border-top-left-radius:2px; - border-top-right-radius:2px; -} - -.edui-default .edui-editor-toolbarboxouter { - border-bottom: 1px solid #d4d4d4; - background-color: #fafafa; - background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); - background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); - background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); - background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); - background-repeat: repeat-x; - /*border: 1px solid #d4d4d4;*/ - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); - *zoom: 1; - -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); -} - -.edui-default .edui-editor-toolbarboxinner { - padding: 2px; -} - -.edui-default .edui-editor-iframeholder { - position: relative; - /*for fix ie6 toolbarmsg under iframe bug. relative -> static */ - /*_position: static !important;* -} - -.edui-default .edui-editor-iframeholder textarea { - font-family: consolas, "Courier New", "lucida console", monospace; - font-size: 12px; - line-height: 18px; -} - -.edui-default .edui-editor-bottombar { - /*border-top: 1px solid #ccc;*/ - /*height: 20px;*/ - /*width: 40%;*/ - /*float: left;*/ - /*overflow: hidden;*/ -} - -.edui-default .edui-editor-bottomContainer { - overflow: hidden; -} - -.edui-default .edui-editor-bottomContainer table { - width: 100%; - height: 0; - overflow: hidden; - border-spacing: 0; -} - -.edui-default .edui-editor-bottomContainer td { - white-space: nowrap; - border-top: 1px solid #ccc; - line-height: 20px; - font-size: 12px; - font-family: Arial, Helvetica, Tahoma, Verdana, Sans-Serif; -} - -.edui-default .edui-editor-wordcount { - text-align: right; - margin-right: 5px; - color: #aaa; -} -.edui-default .edui-editor-scale { - width: 12px; -} -.edui-default .edui-editor-scale .edui-editor-icon { - float: right; - width: 100%; - height: 12px; - margin-top: 10px; - background: url(../images/scale.png) no-repeat; - cursor: se-resize; -} -.edui-default .edui-editor-breadcrumb { - margin: 2px 0 0 3px; -} - -.edui-default .edui-editor-breadcrumb span { - cursor: pointer; - text-decoration: underline; - color: blue; -} - -.edui-default .edui-toolbar .edui-for-fullscreen { - float: right; -} - -.edui-default .edui-bubble .edui-popup-content { - border: 1px solid #DCAC6C; - background-color: #fff6d9; - padding: 5px; - font-size: 10pt; - font-family: "宋体"; -} - -.edui-default .edui-bubble .edui-shadow { - /*box-shadow: 1px 1px 3px #818181;*/ - /*-webkit-box-shadow: 2px 2px 3px #818181;*/ - /*-moz-box-shadow: 2px 2px 3px #818181;*/ - /*filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius = '2', MakeShadow = 'true', ShadowOpacity = '0.5');*/ -} - -.edui-default .edui-editor-toolbarmsg { - background-color: #FFF6D9; - border-bottom: 1px solid #ccc; - position: absolute; - bottom: -25px; - left: 0; - z-index: 1009; - width: 99.9%; -} - -.edui-default .edui-editor-toolbarmsg-upload { - font-size: 14px; - color: blue; - width: 100px; - height: 16px; - line-height: 16px; - cursor: pointer; - position: absolute; - top: 5px; - left: 350px; -} - -.edui-default .edui-editor-toolbarmsg-label { - font-size: 12px; - line-height: 16px; - padding: 4px; -} - -.edui-default .edui-editor-toolbarmsg-close { - float: right; - width: 20px; - height: 16px; - line-height: 16px; - cursor: pointer; - color: red; -} -/*可选中菜单按钮*/ -.edui-default .edui-list .edui-bordereraser { - display: none; -} - -.edui-default .edui-listitem { - padding: 1px; - white-space: nowrap; -} - -.edui-default .edui-list .edui-state-hover { - position: relative; - background-color: #fff5d4; - border: 1px solid #dcac6c; - padding: 0; -} - -.edui-default .edui-for-fontfamily .edui-listitem-label { - min-width: 130px; - _width: 120px; - font-size: 12px; - height: 22px; - line-height: 22px; - padding-left: 5px; -} -.edui-default .edui-for-insertcode .edui-listitem-label { - min-width: 120px; - _width: 120px; - font-size: 12px; - height: 22px; - line-height: 22px; - padding-left: 5px; -} -.edui-default .edui-for-underline .edui-listitem-label { - min-width: 120px; - _width: 120px; - padding: 3px 5px; - font-size: 12px; -} - -.edui-default .edui-for-fontsize .edui-listitem-label { - min-width: 120px; - _width: 120px; - padding: 3px 5px; - -} - -.edui-default .edui-for-paragraph .edui-listitem-label { - min-width: 200px; - _width: 200px; - padding: 2px 5px; -} - -.edui-default .edui-for-rowspacingtop .edui-listitem-label, -.edui-default .edui-for-rowspacingbottom .edui-listitem-label { - min-width: 53px; - _width: 53px; - padding: 2px 5px; -} - -.edui-default .edui-for-lineheight .edui-listitem-label { - min-width: 53px; - _width: 53px; - padding: 2px 5px; -} - -.edui-default .edui-for-customstyle .edui-listitem-label { - min-width: 200px; - _width: 200px; - width: 200px !important; - padding: 2px 5px; -} -/* 可选中按钮弹出菜单*/ -.edui-default .edui-menu { - z-index: 3000; -} - -.edui-default .edui-menu .edui-popup-content { - padding: 3px; -} - -.edui-default .edui-menu-body { - _width: 150px; - min-width: 170px; - background: url("../images/sparator_v.png") repeat-y 25px; -} - -.edui-default .edui-menuitem-body { -} - -.edui-default .edui-menuitem { - height: 20px; - cursor: default; - vertical-align: top; -} - -.edui-default .edui-menuitem .edui-icon { - width: 20px !important; - height: 20px !important; - background: url(../images/icons.png) 0 -4000px; - background: url(../images/icons.gif) 0 -4000px\9; -} - -.edui-default .edui-menuitem .edui-label { - font-size: 12px; - line-height: 20px; - height: 20px; - padding-left: 10px; -} - -.edui-default .edui-state-checked .edui-menuitem-body { - background: url("../images/icons-all.gif") no-repeat 6px -205px; -} - -.edui-default .edui-state-disabled .edui-menuitem-label { - color: gray; -} - - -/*不可选中菜单按钮 */ -.edui-default .edui-toolbar .edui-combox-body .edui-button-body { - width: 60px; - font-size: 12px; - height: 20px; - line-height: 20px; - padding-left: 5px; - white-space: nowrap; - margin: 0 3px 0 0; -} - -.edui-default .edui-toolbar .edui-combox-body .edui-arrow { - background: url(../images/icons.png) -741px 0; - _background: url(../images/icons.gif) -741px 0; - height: 20px; - width: 9px; -} - -.edui-default .edui-toolbar .edui-combox .edui-combox-body { - border: 1px solid #CCC; - background-color: white; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; -} - -.edui-default .edui-toolbar .edui-combox-body .edui-splitborder { - display: none; -} - -.edui-default .edui-toolbar .edui-combox-body .edui-arrow { - border-left: 1px solid #CCC; -} - -.edui-default .edui-toolbar .edui-state-hover .edui-combox-body { - background-color: #fff5d4; - border: 1px solid #dcac6c; -} - -.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow { - border-left: 1px solid #dcac6c; -} - -.edui-default .edui-toolbar .edui-state-checked .edui-combox-body { - background-color: #FFE69F; - border: 1px solid #DCAC6C; -} - -.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow { - border-left: 1px solid #DCAC6C; -} - -.edui-toolbar .edui-state-disabled .edui-combox-body { - background-color: #F0F0EE; - opacity: 0.3; - filter: alpha(opacity = 30); -} - -.edui-toolbar .edui-state-opened .edui-combox-body { - background-color: white; - border: 1px solid gray; -} -/*普通按钮样式及状态*/ -.edui-default .edui-toolbar .edui-button .edui-icon, -.edui-default .edui-toolbar .edui-menubutton .edui-icon, -.edui-default .edui-toolbar .edui-splitbutton .edui-icon { - height: 20px !important; - width: 20px !important; - background-image: url(../images/icons.png); - background-image: url(../images/icons.gif) \9; -} - -.edui-default .edui-toolbar .edui-button .edui-button-wrap { - padding: 1px; - position: relative; -} - -.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap { - background-color: #fff5d4; - padding: 0; - border: 1px solid #dcac6c; -} - -.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap { - background-color: #ffe69f; - padding: 0; - border: 1px solid #dcac6c; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; -} - -.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap { - background-color: #ffffff; - padding: 0; - border: 1px solid gray; -} -.edui-default .edui-toolbar .edui-state-disabled .edui-label { - color: #ccc; -} -.edui-default .edui-toolbar .edui-state-disabled .edui-icon { - opacity: 0.3; - filter: alpha(opacity = 30); -} - -/* toolbar icons */ -.edui-default .edui-for-undo .edui-icon { - background-position: -160px 0; -} - -.edui-default .edui-for-redo .edui-icon { - background-position: -100px 0; -} - -.edui-default .edui-for-bold .edui-icon { - background-position: 0 0; -} - -.edui-default .edui-for-italic .edui-icon { - background-position: -60px 0; -} - -.edui-default .edui-for-fontborder .edui-icon { - background-position:-160px -40px; -} -.edui-default .edui-for-underline .edui-icon { - background-position: -140px 0; -} - -.edui-default .edui-for-strikethrough .edui-icon { - background-position: -120px 0; -} - -.edui-default .edui-for-subscript .edui-icon { - background-position: -600px 0; -} - -.edui-default .edui-for-superscript .edui-icon { - background-position: -620px 0; -} - -.edui-default .edui-for-blockquote .edui-icon { - background-position: -220px 0; -} - -.edui-default .edui-for-forecolor .edui-icon { - background-position: -720px 0; -} - -.edui-default .edui-for-backcolor .edui-icon { - background-position: -760px 0; -} - -.edui-default .edui-for-inserttable .edui-icon { - background-position: -580px -20px; -} - -.edui-default .edui-for-autotypeset .edui-icon { - background-position: -640px -40px; -} - -.edui-default .edui-for-justifyleft .edui-icon { - background-position: -460px 0; -} - -.edui-default .edui-for-justifycenter .edui-icon { - background-position: -420px 0; -} - -.edui-default .edui-for-justifyright .edui-icon { - background-position: -480px 0; -} - -.edui-default .edui-for-justifyjustify .edui-icon { - background-position: -440px 0; -} - -.edui-default .edui-for-insertorderedlist .edui-icon { - background-position: -80px 0; -} - -.edui-default .edui-for-insertunorderedlist .edui-icon { - background-position: -20px 0; -} - -.edui-default .edui-for-lineheight .edui-icon { - background-position: -725px -40px; -} - -.edui-default .edui-for-rowspacingbottom .edui-icon { - background-position: -745px -40px; -} - -.edui-default .edui-for-rowspacingtop .edui-icon { - background-position: -765px -40px; -} - -.edui-default .edui-for-horizontal .edui-icon { - background-position: -360px 0; -} - -.edui-default .edui-for-link .edui-icon { - background-position: -500px 0; -} - -.edui-default .edui-for-code .edui-icon { - background-position: -440px -40px; -} - -.edui-default .edui-for-insertimage .edui-icon { - background-position: -726px -77px; -} - -.edui-default .edui-for-insertframe .edui-icon { - background-position: -240px -40px; -} - -.edui-default .edui-for-emoticon .edui-icon { - background-position: -60px -20px; -} - -.edui-default .edui-for-spechars .edui-icon { - background-position: -240px 0; -} - -.edui-default .edui-for-help .edui-icon { - background-position: -340px 0; -} - -.edui-default .edui-for-print .edui-icon { - background-position: -440px -20px; -} - -.edui-default .edui-for-preview .edui-icon { - background-position: -420px -20px; -} - -.edui-default .edui-for-selectall .edui-icon { - background-position: -400px -20px; -} - -.edui-default .edui-for-searchreplace .edui-icon { - background-position: -520px -20px; -} - -.edui-default .edui-for-map .edui-icon { - background-position: -40px -40px; -} - -.edui-default .edui-for-gmap .edui-icon { - background-position: -260px -40px; -} - -.edui-default .edui-for-insertvideo .edui-icon { - background-position: -320px -20px; -} - -.edui-default .edui-for-time .edui-icon { - background-position: -160px -20px; -} - -.edui-default .edui-for-date .edui-icon { - background-position: -140px -20px; -} - -.edui-default .edui-for-cut .edui-icon { - background-position: -680px 0; -} - -.edui-default .edui-for-copy .edui-icon { - background-position: -700px 0; -} - -.edui-default .edui-for-paste .edui-icon { - background-position: -560px 0; -} - -.edui-default .edui-for-formatmatch .edui-icon { - background-position: -40px 0; -} - -.edui-default .edui-for-pasteplain .edui-icon { - background-position: -360px -20px; -} - -.edui-default .edui-for-directionalityltr .edui-icon { - background-position: -20px -20px; -} - -.edui-default .edui-for-directionalityrtl .edui-icon { - background-position: -40px -20px; -} - -.edui-default .edui-for-source .edui-icon { - background-position: -261px -0px; -} - -.edui-default .edui-for-removeformat .edui-icon { - background-position: -580px 0; -} - -.edui-default .edui-for-unlink .edui-icon { - background-position: -640px 0; -} - -.edui-default .edui-for-touppercase .edui-icon { - background-position: -786px 0; -} - -.edui-default .edui-for-tolowercase .edui-icon { - background-position: -806px 0; -} - -.edui-default .edui-for-insertrow .edui-icon { - background-position: -478px -76px; -} - -.edui-default .edui-for-insertrownext .edui-icon { - background-position: -498px -76px; -} - -.edui-default .edui-for-insertcol .edui-icon { - background-position: -455px -76px; -} - -.edui-default .edui-for-insertcolnext .edui-icon { - background-position: -429px -76px; -} - -.edui-default .edui-for-mergeright .edui-icon { - background-position: -60px -40px; -} - -.edui-default .edui-for-mergedown .edui-icon { - background-position: -80px -40px; -} - -.edui-default .edui-for-splittorows .edui-icon { - background-position: -100px -40px; -} - -.edui-default .edui-for-splittocols .edui-icon { - background-position: -120px -40px; -} - -.edui-default .edui-for-insertparagraphbeforetable .edui-icon { - background-position: -140px -40px; -} - -.edui-default .edui-for-deleterow .edui-icon { - background-position: -660px -20px; -} - -.edui-default .edui-for-deletecol .edui-icon { - background-position: -640px -20px; -} - -.edui-default .edui-for-splittocells .edui-icon { - background-position: -800px -20px; -} - -.edui-default .edui-for-mergecells .edui-icon { - background-position: -760px -20px; -} - -.edui-default .edui-for-deletetable .edui-icon { - background-position: -620px -20px; -} - -.edui-default .edui-for-cleardoc .edui-icon { - background-position: -520px 0; -} - -.edui-default .edui-for-fullscreen .edui-icon { - background-position: -100px -20px; -} - -.edui-default .edui-for-anchor .edui-icon { - background-position: -200px 0; -} - -.edui-default .edui-for-pagebreak .edui-icon { - background-position: -460px -40px; -} - -.edui-default .edui-for-imagenone .edui-icon { - background-position: -480px -40px; -} - -.edui-default .edui-for-imageleft .edui-icon { - background-position: -500px -40px; -} - -.edui-default .edui-for-wordimage .edui-icon { - background-position: -660px -40px; -} - -.edui-default .edui-for-imageright .edui-icon { - background-position: -520px -40px; -} - -.edui-default .edui-for-imagecenter .edui-icon { - background-position: -540px -40px; -} - -.edui-default .edui-for-indent .edui-icon { - background-position: -400px 0; -} - -.edui-default .edui-for-outdent .edui-icon { - background-position: -540px 0; -} - -.edui-default .edui-for-webapp .edui-icon { - background-position: -601px -40px -} - -.edui-default .edui-for-table .edui-icon { - background-position: -580px -20px; -} - -.edui-default .edui-for-edittable .edui-icon { - background-position: -420px -40px; -} - -.edui-default .edui-for-template .edui-icon { - background-position: -339px -40px; -} - -.edui-default .edui-for-delete .edui-icon { - background-position: -360px -40px; -} - -.edui-default .edui-for-attachment .edui-icon { - background-position: -620px -40px; -} - -.edui-default .edui-for-edittd .edui-icon { - background-position: -700px -40px; -} - -.edui-default .edui-for-snapscreen .edui-icon { - background-position: -581px -40px -} - -.edui-default .edui-for-scrawl .edui-icon { - background-position: -801px -41px -} - -.edui-default .edui-for-background .edui-icon { - background-position: -680px -40px; -} - -.edui-default .edui-for-music .edui-icon { - background-position: -18px -40px -} - -.edui-default .edui-for-formula .edui-icon { - background-position: -200px -40px -} - -.edui-default .edui-for-aligntd .edui-icon { - background-position: -236px -76px; -} - -.edui-default .edui-for-insertparagraphtrue .edui-icon { - background-position: -625px -76px; -} - -.edui-default .edui-for-insertparagraph .edui-icon { - background-position: -602px -76px; -} - -.edui-default .edui-for-insertcaption .edui-icon { - background-position: -336px -76px; -} - -.edui-default .edui-for-deletecaption .edui-icon { - background-position: -362px -76px; -} - -.edui-default .edui-for-inserttitle .edui-icon { - background-position: -286px -76px; -} - -.edui-default .edui-for-deletetitle .edui-icon { - background-position: -311px -76px; -} - -.edui-default .edui-for-aligntable .edui-icon { - background-position: -440px 0; -} - -.edui-default .edui-for-tablealignment-left .edui-icon { - background-position: -460px 0; -} - -.edui-default .edui-for-tablealignment-center .edui-icon { - background-position: -420px 0; -} - -.edui-default .edui-for-tablealignment-right .edui-icon { - background-position: -480px 0; -} - -.edui-default .edui-for-drafts .edui-icon { - background-position: -560px 0; -} - -.edui-default .edui-for-charts .edui-icon { - background: url(../images/charts.png) no-repeat 2px 3px!important; -} - -.edui-default .edui-for-inserttitlecol .edui-icon { - background-position: -673px -76px; -} - -.edui-default .edui-for-deletetitlecol .edui-icon { - background-position: -698px -76px; -} - -.edui-default .edui-for-simpleupload .edui-icon { - background-position: -380px 0px; -} - -/*splitbutton*/ -.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow, -.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow { - background: url(../images/icons.png) -741px 0; - _background: url(../images/icons.gif) -741px 0; - height: 20px; - width: 9px; -} - -.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body, -.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body { - padding: 1px; -} - -.edui-default .edui-toolbar .edui-splitborder { - width: 1px; - height: 20px; -} - -.edui-default .edui-toolbar .edui-state-hover .edui-splitborder { - width: 1px; - border-left: 0px solid #dcac6c; -} - -.edui-default .edui-toolbar .edui-state-active .edui-splitborder { - width: 0; - border-left: 1px solid gray; -} - -.edui-default .edui-toolbar .edui-state-opened .edui-splitborder { - width: 1px; - border: 0; -} - -.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body, -.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body { - background-color: #fff5d4; - border: 1px solid #dcac6c; - padding: 0; -} - -.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body, -.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body { - background-color: #FFE69F; - border: 1px solid #DCAC6C; - padding: 0; -} - -.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body, -.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body { - background-color: #ffffff; - border: 1px solid gray; - padding: 0; -} - -.edui-default .edui-state-disabled .edui-arrow { - opacity: 0.3; - _filter: alpha(opacity = 30); -} - -.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body, -.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body { - background-color: white; - border: 1px solid gray; - padding: 0; -} - -.edui-default .edui-for-insertorderedlist .edui-bordereraser, -.edui-default .edui-for-lineheight .edui-bordereraser, -.edui-default .edui-for-rowspacingtop .edui-bordereraser, -.edui-default .edui-for-rowspacingbottom .edui-bordereraser, -.edui-default .edui-for-insertunorderedlist .edui-bordereraser { - background-color: white; -} - -/* 解决嵌套导致的图标问题 */ -.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon, -.edui-default .edui-for-lineheight .edui-popup-body .edui-icon, -.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon, -.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon, -.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon { - /*background-position: 0 -40px;*/ - background-image: none ; -} - -/* 弹出菜单 */ -.edui-default .edui-popup { - z-index: 3000; - background-color: #ffffff; - width:auto; - height:auto; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} - -.edui-default .edui-popup .edui-shadow { - left: 0; - top: 0; - width: 100%; - height: 100%; -} - -.edui-default .edui-popup-content { - border:1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - *border-right-width: 2px; - *border-bottom-width: 2px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); - box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - padding: 5px; - background:#ffffff; -} - -.edui-default .edui-popup .edui-bordereraser { - background-color: white; - height: 3px; -} - -.edui-default .edui-menu .edui-bordereraser { - height: 3px; -} - -.edui-default .edui-anchor-topleft .edui-bordereraser { - left: 1px; - top: -2px; -} - -.edui-default .edui-anchor-topright .edui-bordereraser { - right: 1px; - top: -2px; -} - -.edui-default .edui-anchor-bottomleft .edui-bordereraser { - left: 0; - bottom: -6px; - height: 7px; - border-left: 1px solid gray; - border-right: 1px solid gray; -} - -.edui-default .edui-anchor-bottomright .edui-bordereraser { - right: 0; - bottom: -6px; - height: 7px; - border-left: 1px solid gray; - border-right: 1px solid gray; -} - -.edui-popup div{ - width:auto; - height:auto; -} -.edui-default .edui-editor-messageholder { - display: block; - width: 150px; - height: auto; - border: 0; - margin: 0; - padding: 0; - position: absolute; - top: 28px; - right: 3px; -} - -.edui-default .edui-message{ - min-height: 10px; - text-shadow: 0 1px 0 rgba(255,255,255,0.5); - padding: 0; - margin-bottom: 3px; - position: relative; -} -.edui-default .edui-message-body{ - border-radius: 3px; - padding: 8px 15px 8px 8px; - color: #c09853; - background-color: #fcf8e3; - border: 1px solid #fbeed5; -} -.edui-default .edui-message-type-info{ - color: #3a87ad; - background-color: #d9edf7; - border-color: #bce8f1 -} -.edui-default .edui-message-type-success{ - color: #468847; - background-color: #dff0d8; - border-color: #d6e9c6 -} -.edui-default .edui-message-type-danger, -.edui-default .edui-message-type-error{ - color: #b94a48; - background-color: #f2dede; - border-color: #eed3d7 -} -.edui-default .edui-message .edui-message-closer { - display: block; - width: 16px; - height: 16px; - line-height: 16px; - position: absolute; - top: 0; - right: 0; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - float: right; - font-size: 20px; - font-weight: bold; - color: #999; - text-shadow: 0 1px 0 #fff; - font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; -} -.edui-default .edui-message .edui-message-content { - font-size: 10pt; - word-wrap: break-word; - word-break: normal; -} -/* 弹出对话框按钮和对话框大小 */ -.edui-default .edui-dialog { - z-index: 2000; - position: absolute; - -} - -.edui-dialog div{ - width:auto; -} - -.edui-default .edui-dialog-wrap { - margin-right: 6px; - margin-bottom: 6px; -} - -.edui-default .edui-dialog-fullscreen-flag { - margin-right: 0; - margin-bottom: 0; -} - -.edui-default .edui-dialog-body { - position: relative; - padding:2px 0 0 2px; - _zoom: 1; -} - -.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body { - padding: 0; -} - -.edui-default .edui-dialog-shadow { - position: absolute; - z-index: -1; - left: 0; - top: 0; - width: 100%; - height: 100%; - background-color: #ffffff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - *border-right-width: 2px; - *border-bottom-width: 2px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} - -.edui-default .edui-dialog-foot { - background-color: white; -} - -.edui-default .edui-dialog-titlebar { - height: 26px; - border-bottom: 1px solid #c6c6c6; - background: url(../images/dialog-title-bg.png) repeat-x bottom; - position: relative; - cursor: move; -} -.edui-default .edui-dialog-caption { - font-weight: bold; - font-size: 12px; - line-height: 26px; - padding-left: 5px; -} - -.edui-default .edui-dialog-draghandle { - height: 26px; -} - -.edui-default .edui-dialog-closebutton { - position: absolute !important; - right: 5px; - top: 3px; -} - -.edui-default .edui-dialog-closebutton .edui-button-body { - height: 20px; - width: 20px; - cursor: pointer; - background: url("../images/icons-all.gif") no-repeat 0 -59px; -} - -.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body { - background: url("../images/icons-all.gif") no-repeat 0 -89px; -} - -.edui-default .edui-dialog-foot { - height: 40px; -} - -.edui-default .edui-dialog-buttons { - position: absolute; - right: 0; -} - -.edui-default .edui-dialog-buttons .edui-button { - margin-right: 10px; -} - -.edui-default .edui-dialog-buttons .edui-button .edui-button-body { - background: url("../images/icons-all.gif") no-repeat; - height: 24px; - width: 96px; - font-size: 12px; - line-height: 24px; - text-align: center; - cursor: default; -} - -.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body { - background: url("../images/icons-all.gif") no-repeat 0 -30px; -} - -.edui-default .edui-dialog iframe { - border: 0; - padding: 0; - margin: 0; - vertical-align: top; -} - -.edui-default .edui-dialog-modalmask { - opacity: 0.3; - filter: alpha(opacity = 30); - background-color: #ccc; - position: absolute; - /*z-index: 1999;*/ -} - -.edui-default .edui-dialog-dragmask { - position: absolute; - /*z-index: 2001;*/ - background-color: transparent; - cursor: move; -} - -.edui-default .edui-dialog-content { - position: relative; -} - -.edui-default .dialogcontmask { - cursor: move; - visibility: hidden; - display: block; - position: absolute; - width: 100%; - height: 100%; - opacity: 0; - filter: alpha(opacity = 0); -} - -/*link-dialog*/ -.edui-default .edui-for-link .edui-dialog-content { - width: 420px; - height: 200px; - overflow: hidden; -} -/*background-dialog*/ -.edui-default .edui-for-background .edui-dialog-content { - width: 440px; - height: 280px; - overflow: hidden; -} - -/*template-dialog*/ -.edui-default .edui-for-template .edui-dialog-content { - width: 630px; - height: 390px; - overflow: hidden; -} - -/*scrawl-dialog*/ -.edui-default .edui-for-scrawl .edui-dialog-content { - width: 515px; - *width: 506px; - height: 360px; -} - -/*spechars-dialog*/ -.edui-default .edui-for-spechars .edui-dialog-content { - width: 620px; - height: 500px; - *width: 630px; - *height: 570px; -} - -/*image-dialog*/ -.edui-default .edui-for-insertimage .edui-dialog-content { - width: 650px; - height: 400px; - overflow: hidden; -} -/*webapp-dialog*/ -.edui-default .edui-for-webapp .edui-dialog-content { - width: 560px; - _width: 565px; - height: 450px; - overflow: hidden; -} - -/*image-insertframe*/ -.edui-default .edui-for-insertframe .edui-dialog-content { - width: 350px; - height: 200px; - overflow: hidden; -} - -/*wordImage-dialog*/ -.edui-default .edui-for-wordimage .edui-dialog-content { - width: 620px; - height: 380px; - overflow: hidden; -} - -/*attachment-dialog*/ -.edui-default .edui-for-attachment .edui-dialog-content { - width: 650px; - height: 400px; - overflow: hidden; -} - - -/*map-dialog*/ -.edui-default .edui-for-map .edui-dialog-content { - width: 550px; - height: 400px; -} - -/*gmap-dialog*/ -.edui-default .edui-for-gmap .edui-dialog-content { - width: 550px; - height: 400px; -} - -/*video-dialog*/ -.edui-default .edui-for-insertvideo .edui-dialog-content { - width: 590px; - height: 390px; -} - -/*anchor-dialog*/ -.edui-default .edui-for-anchor .edui-dialog-content { - width: 320px; - height: 60px; - overflow: hidden; -} - -/*searchreplace-dialog*/ -.edui-default .edui-for-searchreplace .edui-dialog-content { - width: 400px; - height: 220px; -} - -/*help-dialog*/ -.edui-default .edui-for-help .edui-dialog-content { - width: 400px; - height: 420px; -} - -/*edittable-dialog*/ -.edui-default .edui-for-edittable .edui-dialog-content { - width: 540px; - _width:590px; - height: 335px; -} - -/*edittip-dialog*/ -.edui-default .edui-for-edittip .edui-dialog-content { - width: 225px; - height: 60px; -} - -/*edittd-dialog*/ -.edui-default .edui-for-edittd .edui-dialog-content { - width: 240px; - height: 50px; -} -/*snapscreen-dialog*/ -.edui-default .edui-for-snapscreen .edui-dialog-content { - width: 400px; - height: 220px; -} - -/*music-dialog*/ -.edui-default .edui-for-music .edui-dialog-content { - width: 515px; - height: 360px; -} - -/*段落弹出菜单*/ -.edui-default .edui-for-paragraph .edui-listitem-label { - font-family: Tahoma, Verdana, Arial, Helvetica; -} - -.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p { - font-size: 22px; - line-height: 27px; -} - -.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1 { - font-weight: bolder; - font-size: 32px; - line-height: 36px; -} - -.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2 { - font-weight: bolder; - font-size: 27px; - line-height: 29px; -} - -.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3 { - font-weight: bolder; - font-size: 19px; - line-height: 23px; -} - -.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4 { - font-weight: bolder; - font-size: 16px; - line-height: 19px -} - -.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5 { - font-weight: bolder; - font-size: 13px; - line-height: 16px; -} - -.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6 { - font-weight: bolder; - font-size: 12px; - line-height: 14px; -} -/* 表格弹出菜单 */ -.edui-default .edui-for-inserttable .edui-splitborder { - display: none -} -.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow { - width: 0 -} -.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder{ - border-left: 1px solid transparent; -} -.edui-default .edui-tablepicker .edui-infoarea { - height: 14px; - line-height: 14px; - font-size: 12px; - width: 220px; - margin-bottom: 3px; - clear: both; -} - -.edui-default .edui-tablepicker .edui-infoarea .edui-label { - float: left; -} - -.edui-default .edui-dialog-buttons .edui-label { - line-height: 24px; -} - -.edui-default .edui-tablepicker .edui-infoarea .edui-clickable { - float: right; -} - -.edui-default .edui-tablepicker .edui-pickarea { - background: url("../images/unhighlighted.gif") repeat; - height: 220px; - width: 220px; -} - -.edui-default .edui-tablepicker .edui-pickarea .edui-overlay { - background: url("../images/highlighted.gif") repeat; -} - -/* 颜色弹出菜单 */ -.edui-default .edui-colorpicker-topbar { - height: 27px; - width: 200px; - /*border-bottom: 1px gray dashed;*/ -} - -.edui-default .edui-colorpicker-preview { - height: 20px; - border: 1px inset black; - margin-left: 1px; - width: 128px; - float: left; -} - -.edui-default .edui-colorpicker-nocolor { - float: right; - margin-right: 1px; - font-size: 12px; - line-height: 14px; - height: 14px; - border: 1px solid #333; - padding: 3px 5px; - cursor: pointer; -} - -.edui-default .edui-colorpicker-tablefirstrow { - height: 30px; -} - -.edui-default .edui-colorpicker-colorcell { - width: 14px; - height: 14px; - display: block; - margin: 0; - cursor: pointer; -} - -.edui-default .edui-colorpicker-colorcell:hover { - width: 14px; - height: 14px; - margin: 0; -} -.edui-default .edui-colorpicker-advbtn{ - display: block; - text-align: center; - cursor: pointer; - height:20px; -} -.arrow_down{ - background: white url('../images/arrow_down.png') no-repeat center; -} -.arrow_up{ - background: white url('../images/arrow_up.png') no-repeat center; -} -/*高级的样式*/ -.edui-colorpicker-adv{ - position: relative; - overflow: hidden; - height: 180px; - display: none; -} -.edui-colorpicker-plant, .edui-colorpicker-hue { - border: solid 1px #666; -} -.edui-colorpicker-pad { - width: 150px; - height: 150px; - left: 14px; - top: 13px; - position: absolute; - background: red; - overflow: hidden; - cursor: crosshair; -} -.edui-colorpicker-cover{ - position: absolute; - top: 0; - left: 0; - width: 150px; - height: 150px; - background: url("../images/tangram-colorpicker.png") -160px -200px; -} -.edui-colorpicker-padDot{ - position: absolute; - top: 0; - left: 0; - width: 11px; - height: 11px; - overflow: hidden; - background: url(../images/tangram-colorpicker.png) 0px -200px repeat-x; - z-index: 1000; - -} -.edui-colorpicker-sliderMain { - position: absolute; - left: 171px; - top: 13px; - width: 19px; - height: 152px; - background: url(../images/tangram-colorpicker.png) -179px -12px no-repeat; - -} -.edui-colorpicker-slider { - width: 100%; - height: 100%; - cursor: pointer; -} -.edui-colorpicker-thumb{ - position: absolute; - top: 0; - cursor: pointer; - height: 3px; - left: -1px; - right: -1px; - border: 1px solid black; - background: white; - opacity: .8; -} -/*自动排版弹出菜单*/ -.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body { - font-size: 12px; - margin-bottom: 3px; - clear: both; -} - -.edui-default .edui-autotypesetpicker-body table { - border-collapse: separate; - border-spacing: 2px; -} - -.edui-default .edui-autotypesetpicker-body td { - font-size: 12px; - word-wrap:break-word; -} - -.edui-default .edui-autotypesetpicker-body td input { - margin: 3px 3px 3px 4px; - *margin: 1px 0 0 0; -} -/*自动排版弹出菜单*/ -.edui-default .edui-cellalignpicker .edui-cellalignpicker-body { - width: 70px; - font-size: 12px; - cursor: default; -} - -.edui-default .edui-cellalignpicker-body table { - border-collapse: separate; - border-spacing: 0; -} -.edui-default .edui-cellalignpicker-body td{ - padding: 1px; -} -.edui-default .edui-cellalignpicker-body .edui-icon{ - height: 20px; - width: 20px; - padding: 1px; - background-image: url(../images/table-cell-align.png); -} - -.edui-default .edui-cellalignpicker-body .edui-left{ - background-position: 0 0; -} - -.edui-default .edui-cellalignpicker-body .edui-center{ - background-position: -25px 0; -} -.edui-default .edui-cellalignpicker-body .edui-right{ - background-position: -51px 0; -} - -.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left{ - background-position: -73px 0; -} - -.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center{ - background-position: -98px 0; -} - -.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right{ - background-position: -124px 0; -} - -.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left { - background-position: -146px 0; - background-color: #f1f4f5; -} - -.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center { - background-position: -245px 0; -} - -.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right { - background-position: -271px 0; -} -/*分隔线*/ -.edui-default .edui-toolbar .edui-separator { - width: 2px; - height: 20px; - margin: 2px 4px 2px 3px; - background: url(../images/icons.png) -181px 0; - background: url(../images/icons.gif) -181px 0 \9; -} - -/*颜色按钮 */ -.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump { - position: absolute; - overflow: hidden; - bottom: 1px; - left: 1px; - width: 18px; - height: 4px; -} -/*表情按钮及弹出菜单*/ -/*去除了表情的下拉箭头*/ -.edui-default .edui-for-emotion .edui-icon { - background-position: -60px -20px; -} -.edui-default .edui-for-emotion .edui-popup-content iframe -{ - width: 514px; - height: 380px; - overflow: hidden; -} -.edui-default .edui-for-emotion .edui-popup-content -{ - position: relative; - z-index: 555 -} - -.edui-default .edui-for-emotion .edui-splitborder { - display: none -} - -.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow -{ - width: 0 -} -.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder -{ - border-left: 1px solid transparent; -} -/*contextmenu*/ -.edui-default .edui-hassubmenu .edui-arrow { - height: 20px; - width: 20px; - float: right; - background: url("../images/icons-all.gif") no-repeat 10px -233px; -} - -.edui-default .edui-menu-body .edui-menuitem { - padding: 1px; -} - -.edui-default .edui-menuseparator { - margin: 2px 0; - height: 1px; - overflow: hidden; -} - -.edui-default .edui-menuseparator-inner { - border-bottom: 1px solid #e2e3e3; - margin-left: 29px; - margin-right: 1px; -} - -.edui-default .edui-menu-body .edui-state-hover { - padding: 0 !important; - background-color: #fff5d4; - border: 1px solid #dcac6c; -} -/*弹出菜单*/ -.edui-default .edui-shortcutmenu { - padding: 2px; - width: 190px; - height: 50px; - background-color: #fff; - border: 1px solid #ccc; - border-radius: 5px; -} - -/*粘贴弹出菜单*/ -.edui-default .edui-wordpastepop .edui-popup-content{ - border: none; - padding: 0; - width: 54px; - height: 21px; -} -.edui-default .edui-pasteicon { - width: 100%; - height: 100%; - background-image: url('../images/wordpaste.png'); - background-position: 0 0; -} - -.edui-default .edui-pasteicon.edui-state-opened { - background-position: 0 -34px; -} - -.edui-default .edui-pastecontainer { - position: relative; - visibility: hidden; - width: 97px; - background: #fff; - border: 1px solid #ccc; -} - -.edui-default .edui-pastecontainer .edui-title { - font-weight: bold; - background: #F8F8FF; - height: 25px; - line-height: 25px; - font-size: 12px; - padding-left: 5px; -} - -.edui-default .edui-pastecontainer .edui-button { - overflow: hidden; - margin: 3px 0; -} - -.edui-default .edui-pastecontainer .edui-button .edui-richtxticon, -.edui-default .edui-pastecontainer .edui-button .edui-tagicon, -.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{ - float: left; - cursor: pointer; - width: 29px; - height: 29px; - margin-left: 5px; - background-image: url('../images/wordpaste.png'); - background-repeat: no-repeat; -} -.edui-default .edui-pastecontainer .edui-button .edui-richtxticon { - margin-left: 0; - background-position: -109px 0; -} -.edui-default .edui-pastecontainer .edui-button .edui-tagicon { - background-position: -148px 1px; -} - -.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon { - background-position: -72px 0; -} - -.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon { - background-position: -109px -34px; -} -.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon{ - background-position: -148px -34px; -} -.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon{ - background-position: -72px -34px; -} \ No newline at end of file diff --git a/public/ueditor/themes/default/css/ueditor.min.css b/public/ueditor/themes/default/css/ueditor.min.css deleted file mode 100644 index 78370df..0000000 --- a/public/ueditor/themes/default/css/ueditor.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * ueditor - * version: 2.0.0 - * build: Fri Aug 11 2023 10:42:30 GMT+0800 (中国标准时间) - */ - - -.edui-default .edui-box{border:0;padding:0;margin:0;overflow:hidden}.edui-default a.edui-box{display:block;text-decoration:none;color:#000}.edui-default a.edui-box:hover{text-decoration:none}.edui-default a.edui-box:active{text-decoration:none}.edui-default table.edui-box{border-collapse:collapse}.edui-default ul.edui-box{list-style-type:none}div.edui-box{position:relative;display:-moz-inline-box!important;display:inline-block!important;vertical-align:top}.edui-default .edui-clearfix{zoom:1}.edui-default .edui-clearfix:after{content:'\20';display:block;clear:both}* html div.edui-box{display:inline!important}:first-child+html div.edui-box{display:inline!important}.edui-default .edui-button-body,.edui-splitbutton-body,.edui-menubutton-body,.edui-combox-body{position:relative}.edui-default .edui-popup{position:absolute;-webkit-user-select:none;-moz-user-select:none}.edui-default .edui-popup .edui-shadow{position:absolute;z-index:-1}.edui-default .edui-popup .edui-bordereraser{position:absolute;overflow:hidden}.edui-default .edui-tablepicker .edui-canvas{position:relative}.edui-default .edui-tablepicker .edui-canvas .edui-overlay{position:absolute}.edui-default .edui-dialog-modalmask,.edui-dialog-dragmask{position:absolute;left:0;top:0;width:100%;height:100%}.edui-default .edui-toolbar{position:relative}.edui-default .edui-label{cursor:default}.edui-default span.edui-clickable{color:#00f;cursor:pointer;text-decoration:underline}.edui-default span.edui-unclickable{color:gray;cursor:default}.edui-default .edui-toolbar{cursor:default;-webkit-user-select:none;-moz-user-select:none;padding:1px;overflow:hidden;zoom:1;width:auto;height:auto}.edui-default .edui-toolbar .edui-button,.edui-default .edui-toolbar .edui-splitbutton,.edui-default .edui-toolbar .edui-menubutton,.edui-default .edui-toolbar .edui-combox{margin:1px}.edui-default .edui-editor{border:1px solid #d4d4d4;background-color:#fff;position:relative;overflow:visible;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.edui-editor div{width:auto;height:auto}.edui-default .edui-editor-toolbarbox{position:relative;zoom:1;-webkit-box-shadow:0 1px 4px rgba(204,204,204,.6);-moz-box-shadow:0 1px 4px rgba(204,204,204,.6);box-shadow:0 1px 4px rgba(204,204,204,.6);border-top-left-radius:2px;border-top-right-radius:2px}.edui-default .edui-editor-toolbarboxouter{border-bottom:1px solid #d4d4d4;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,.065);box-shadow:0 1px 4px rgba(0,0,0,.065)}.edui-default .edui-editor-toolbarboxinner{padding:2px}.edui-default .edui-editor-iframeholder{position:relative}.edui-default .edui-editor-bottomContainer{overflow:hidden}.edui-default .edui-editor-bottomContainer table{width:100%;height:0;overflow:hidden;border-spacing:0}.edui-default .edui-editor-bottomContainer td{white-space:nowrap;border-top:1px solid #ccc;line-height:20px;font-size:12px;font-family:Arial,Helvetica,Tahoma,Verdana,Sans-Serif}.edui-default .edui-editor-wordcount{text-align:right;margin-right:5px;color:#aaa}.edui-default .edui-editor-scale{width:12px}.edui-default .edui-editor-scale .edui-editor-icon{float:right;width:100%;height:12px;margin-top:10px;background:url(../images/scale.png) no-repeat;cursor:se-resize}.edui-default .edui-editor-breadcrumb{margin:2px 0 0 3px}.edui-default .edui-editor-breadcrumb span{cursor:pointer;text-decoration:underline;color:#00f}.edui-default .edui-toolbar .edui-for-fullscreen{float:right}.edui-default .edui-bubble .edui-popup-content{border:1px solid #DCAC6C;background-color:#fff6d9;padding:5px;font-size:10pt;font-family:"宋体"}.edui-default .edui-bubble .edui-shadow{}.edui-default .edui-editor-toolbarmsg{background-color:#FFF6D9;border-bottom:1px solid #ccc;position:absolute;bottom:-25px;left:0;z-index:1009;width:99.9%}.edui-default .edui-editor-toolbarmsg-upload{font-size:14px;color:#00f;width:100px;height:16px;line-height:16px;cursor:pointer;position:absolute;top:5px;left:350px}.edui-default .edui-editor-toolbarmsg-label{font-size:12px;line-height:16px;padding:4px}.edui-default .edui-editor-toolbarmsg-close{float:right;width:20px;height:16px;line-height:16px;cursor:pointer;color:red}.edui-default .edui-list .edui-bordereraser{display:none}.edui-default .edui-listitem{padding:1px;white-space:nowrap}.edui-default .edui-list .edui-state-hover{position:relative;background-color:#fff5d4;border:1px solid #dcac6c;padding:0}.edui-default .edui-for-fontfamily .edui-listitem-label{min-width:130px;_width:120px;font-size:12px;height:22px;line-height:22px;padding-left:5px}.edui-default .edui-for-insertcode .edui-listitem-label{min-width:120px;_width:120px;font-size:12px;height:22px;line-height:22px;padding-left:5px}.edui-default .edui-for-underline .edui-listitem-label{min-width:120px;_width:120px;padding:3px 5px;font-size:12px}.edui-default .edui-for-fontsize .edui-listitem-label{min-width:120px;_width:120px;padding:3px 5px}.edui-default .edui-for-paragraph .edui-listitem-label{min-width:200px;_width:200px;padding:2px 5px}.edui-default .edui-for-rowspacingtop .edui-listitem-label,.edui-default .edui-for-rowspacingbottom .edui-listitem-label{min-width:53px;_width:53px;padding:2px 5px}.edui-default .edui-for-lineheight .edui-listitem-label{min-width:53px;_width:53px;padding:2px 5px}.edui-default .edui-for-customstyle .edui-listitem-label{min-width:200px;_width:200px;width:200px!important;padding:2px 5px}.edui-default .edui-menu{z-index:3000}.edui-default .edui-menu .edui-popup-content{padding:3px}.edui-default .edui-menu-body{_width:150px;min-width:170px;background:url(../images/sparator_v.png) repeat-y 25px}.edui-default .edui-menuitem-body{}.edui-default .edui-menuitem{height:20px;cursor:default;vertical-align:top}.edui-default .edui-menuitem .edui-icon{width:20px!important;height:20px!important;background:url(../images/icons.png) 0 -4000px;background:url(../images/icons.gif) 0 -4000px\9}.edui-default .edui-menuitem .edui-label{font-size:12px;line-height:20px;height:20px;padding-left:10px}.edui-default .edui-state-checked .edui-menuitem-body{background:url(../images/icons-all.gif) no-repeat 6px -205px}.edui-default .edui-state-disabled .edui-menuitem-label{color:gray}.edui-default .edui-toolbar .edui-combox-body .edui-button-body{width:60px;font-size:12px;height:20px;line-height:20px;padding-left:5px;white-space:nowrap;margin:0 3px 0 0}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0;height:20px;width:9px}.edui-default .edui-toolbar .edui-combox .edui-combox-body{border:1px solid #CCC;background-color:#fff;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.edui-default .edui-toolbar .edui-combox-body .edui-splitborder{display:none}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{border-left:1px solid #CCC}.edui-default .edui-toolbar .edui-state-hover .edui-combox-body{background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow{border-left:1px solid #dcac6c}.edui-default .edui-toolbar .edui-state-checked .edui-combox-body{background-color:#FFE69F;border:1px solid #DCAC6C}.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow{border-left:1px solid #DCAC6C}.edui-toolbar .edui-state-disabled .edui-combox-body{background-color:#F0F0EE;opacity:.3;filter:alpha(opacity=30)}.edui-toolbar .edui-state-opened .edui-combox-body{background-color:#fff;border:1px solid gray}.edui-default .edui-toolbar .edui-button .edui-icon,.edui-default .edui-toolbar .edui-menubutton .edui-icon,.edui-default .edui-toolbar .edui-splitbutton .edui-icon{height:20px!important;width:20px!important;background-image:url(../images/icons.png);background-image:url(../images/icons.gif) \9}.edui-default .edui-toolbar .edui-button .edui-button-wrap{padding:1px;position:relative}.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap{background-color:#fff5d4;padding:0;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap{background-color:#ffe69f;padding:0;border:1px solid #dcac6c;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap{background-color:#fff;padding:0;border:1px solid gray}.edui-default .edui-toolbar .edui-state-disabled .edui-label{color:#ccc}.edui-default .edui-toolbar .edui-state-disabled .edui-icon{opacity:.3;filter:alpha(opacity=30)}.edui-default .edui-for-undo .edui-icon{background-position:-160px 0}.edui-default .edui-for-redo .edui-icon{background-position:-100px 0}.edui-default .edui-for-bold .edui-icon{background-position:0 0}.edui-default .edui-for-italic .edui-icon{background-position:-60px 0}.edui-default .edui-for-fontborder .edui-icon{background-position:-160px -40px}.edui-default .edui-for-underline .edui-icon{background-position:-140px 0}.edui-default .edui-for-strikethrough .edui-icon{background-position:-120px 0}.edui-default .edui-for-subscript .edui-icon{background-position:-600px 0}.edui-default .edui-for-superscript .edui-icon{background-position:-620px 0}.edui-default .edui-for-blockquote .edui-icon{background-position:-220px 0}.edui-default .edui-for-forecolor .edui-icon{background-position:-720px 0}.edui-default .edui-for-backcolor .edui-icon{background-position:-760px 0}.edui-default .edui-for-inserttable .edui-icon{background-position:-580px -20px}.edui-default .edui-for-autotypeset .edui-icon{background-position:-640px -40px}.edui-default .edui-for-justifyleft .edui-icon{background-position:-460px 0}.edui-default .edui-for-justifycenter .edui-icon{background-position:-420px 0}.edui-default .edui-for-justifyright .edui-icon{background-position:-480px 0}.edui-default .edui-for-justifyjustify .edui-icon{background-position:-440px 0}.edui-default .edui-for-insertorderedlist .edui-icon{background-position:-80px 0}.edui-default .edui-for-insertunorderedlist .edui-icon{background-position:-20px 0}.edui-default .edui-for-lineheight .edui-icon{background-position:-725px -40px}.edui-default .edui-for-rowspacingbottom .edui-icon{background-position:-745px -40px}.edui-default .edui-for-rowspacingtop .edui-icon{background-position:-765px -40px}.edui-default .edui-for-horizontal .edui-icon{background-position:-360px 0}.edui-default .edui-for-link .edui-icon{background-position:-500px 0}.edui-default .edui-for-code .edui-icon{background-position:-440px -40px}.edui-default .edui-for-insertimage .edui-icon{background-position:-726px -77px}.edui-default .edui-for-insertframe .edui-icon{background-position:-240px -40px}.edui-default .edui-for-emoticon .edui-icon{background-position:-60px -20px}.edui-default .edui-for-spechars .edui-icon{background-position:-240px 0}.edui-default .edui-for-help .edui-icon{background-position:-340px 0}.edui-default .edui-for-print .edui-icon{background-position:-440px -20px}.edui-default .edui-for-preview .edui-icon{background-position:-420px -20px}.edui-default .edui-for-selectall .edui-icon{background-position:-400px -20px}.edui-default .edui-for-searchreplace .edui-icon{background-position:-520px -20px}.edui-default .edui-for-map .edui-icon{background-position:-40px -40px}.edui-default .edui-for-gmap .edui-icon{background-position:-260px -40px}.edui-default .edui-for-insertvideo .edui-icon{background-position:-320px -20px}.edui-default .edui-for-time .edui-icon{background-position:-160px -20px}.edui-default .edui-for-date .edui-icon{background-position:-140px -20px}.edui-default .edui-for-cut .edui-icon{background-position:-680px 0}.edui-default .edui-for-copy .edui-icon{background-position:-700px 0}.edui-default .edui-for-paste .edui-icon{background-position:-560px 0}.edui-default .edui-for-formatmatch .edui-icon{background-position:-40px 0}.edui-default .edui-for-pasteplain .edui-icon{background-position:-360px -20px}.edui-default .edui-for-directionalityltr .edui-icon{background-position:-20px -20px}.edui-default .edui-for-directionalityrtl .edui-icon{background-position:-40px -20px}.edui-default .edui-for-source .edui-icon{background-position:-261px -0px}.edui-default .edui-for-removeformat .edui-icon{background-position:-580px 0}.edui-default .edui-for-unlink .edui-icon{background-position:-640px 0}.edui-default .edui-for-touppercase .edui-icon{background-position:-786px 0}.edui-default .edui-for-tolowercase .edui-icon{background-position:-806px 0}.edui-default .edui-for-insertrow .edui-icon{background-position:-478px -76px}.edui-default .edui-for-insertrownext .edui-icon{background-position:-498px -76px}.edui-default .edui-for-insertcol .edui-icon{background-position:-455px -76px}.edui-default .edui-for-insertcolnext .edui-icon{background-position:-429px -76px}.edui-default .edui-for-mergeright .edui-icon{background-position:-60px -40px}.edui-default .edui-for-mergedown .edui-icon{background-position:-80px -40px}.edui-default .edui-for-splittorows .edui-icon{background-position:-100px -40px}.edui-default .edui-for-splittocols .edui-icon{background-position:-120px -40px}.edui-default .edui-for-insertparagraphbeforetable .edui-icon{background-position:-140px -40px}.edui-default .edui-for-deleterow .edui-icon{background-position:-660px -20px}.edui-default .edui-for-deletecol .edui-icon{background-position:-640px -20px}.edui-default .edui-for-splittocells .edui-icon{background-position:-800px -20px}.edui-default .edui-for-mergecells .edui-icon{background-position:-760px -20px}.edui-default .edui-for-deletetable .edui-icon{background-position:-620px -20px}.edui-default .edui-for-cleardoc .edui-icon{background-position:-520px 0}.edui-default .edui-for-fullscreen .edui-icon{background-position:-100px -20px}.edui-default .edui-for-anchor .edui-icon{background-position:-200px 0}.edui-default .edui-for-pagebreak .edui-icon{background-position:-460px -40px}.edui-default .edui-for-imagenone .edui-icon{background-position:-480px -40px}.edui-default .edui-for-imageleft .edui-icon{background-position:-500px -40px}.edui-default .edui-for-wordimage .edui-icon{background-position:-660px -40px}.edui-default .edui-for-imageright .edui-icon{background-position:-520px -40px}.edui-default .edui-for-imagecenter .edui-icon{background-position:-540px -40px}.edui-default .edui-for-indent .edui-icon{background-position:-400px 0}.edui-default .edui-for-outdent .edui-icon{background-position:-540px 0}.edui-default .edui-for-webapp .edui-icon{background-position:-601px -40px}.edui-default .edui-for-table .edui-icon{background-position:-580px -20px}.edui-default .edui-for-edittable .edui-icon{background-position:-420px -40px}.edui-default .edui-for-template .edui-icon{background-position:-339px -40px}.edui-default .edui-for-delete .edui-icon{background-position:-360px -40px}.edui-default .edui-for-attachment .edui-icon{background-position:-620px -40px}.edui-default .edui-for-edittd .edui-icon{background-position:-700px -40px}.edui-default .edui-for-snapscreen .edui-icon{background-position:-581px -40px}.edui-default .edui-for-scrawl .edui-icon{background-position:-801px -41px}.edui-default .edui-for-background .edui-icon{background-position:-680px -40px}.edui-default .edui-for-music .edui-icon{background-position:-18px -40px}.edui-default .edui-for-formula .edui-icon{background-position:-200px -40px}.edui-default .edui-for-aligntd .edui-icon{background-position:-236px -76px}.edui-default .edui-for-insertparagraphtrue .edui-icon{background-position:-625px -76px}.edui-default .edui-for-insertparagraph .edui-icon{background-position:-602px -76px}.edui-default .edui-for-insertcaption .edui-icon{background-position:-336px -76px}.edui-default .edui-for-deletecaption .edui-icon{background-position:-362px -76px}.edui-default .edui-for-inserttitle .edui-icon{background-position:-286px -76px}.edui-default .edui-for-deletetitle .edui-icon{background-position:-311px -76px}.edui-default .edui-for-aligntable .edui-icon{background-position:-440px 0}.edui-default .edui-for-tablealignment-left .edui-icon{background-position:-460px 0}.edui-default .edui-for-tablealignment-center .edui-icon{background-position:-420px 0}.edui-default .edui-for-tablealignment-right .edui-icon{background-position:-480px 0}.edui-default .edui-for-drafts .edui-icon{background-position:-560px 0}.edui-default .edui-for-charts .edui-icon{background:url(../images/charts.png) no-repeat 2px 3px!important}.edui-default .edui-for-inserttitlecol .edui-icon{background-position:-673px -76px}.edui-default .edui-for-deletetitlecol .edui-icon{background-position:-698px -76px}.edui-default .edui-for-simpleupload .edui-icon{background-position:-380px 0}.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow,.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow{background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0;height:20px;width:9px}.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body{padding:1px}.edui-default .edui-toolbar .edui-splitborder{width:1px;height:20px}.edui-default .edui-toolbar .edui-state-hover .edui-splitborder{width:1px;border-left:0 solid #dcac6c}.edui-default .edui-toolbar .edui-state-active .edui-splitborder{width:0;border-left:1px solid gray}.edui-default .edui-toolbar .edui-state-opened .edui-splitborder{width:1px;border:0}.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body{background-color:#fff5d4;border:1px solid #dcac6c;padding:0}.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body{background-color:#FFE69F;border:1px solid #DCAC6C;padding:0}.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body{background-color:#fff;border:1px solid gray;padding:0}.edui-default .edui-state-disabled .edui-arrow{opacity:.3;_filter:alpha(opacity=30)}.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body{background-color:#fff;border:1px solid gray;padding:0}.edui-default .edui-for-insertorderedlist .edui-bordereraser,.edui-default .edui-for-lineheight .edui-bordereraser,.edui-default .edui-for-rowspacingtop .edui-bordereraser,.edui-default .edui-for-rowspacingbottom .edui-bordereraser,.edui-default .edui-for-insertunorderedlist .edui-bordereraser{background-color:#fff}.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon,.edui-default .edui-for-lineheight .edui-popup-body .edui-icon,.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon,.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon,.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon{background-image:none}.edui-default .edui-popup{z-index:3000;background-color:#fff;width:auto;height:auto;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.edui-default .edui-popup .edui-shadow{left:0;top:0;width:100%;height:100%}.edui-default .edui-popup-content{border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 4px rgba(0,0,0,.2);-moz-box-shadow:0 3px 4px rgba(0,0,0,.2);box-shadow:0 3px 4px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;padding:5px;background:#fff}.edui-default .edui-popup .edui-bordereraser{background-color:#fff;height:3px}.edui-default .edui-menu .edui-bordereraser{height:3px}.edui-default .edui-anchor-topleft .edui-bordereraser{left:1px;top:-2px}.edui-default .edui-anchor-topright .edui-bordereraser{right:1px;top:-2px}.edui-default .edui-anchor-bottomleft .edui-bordereraser{left:0;bottom:-6px;height:7px;border-left:1px solid gray;border-right:1px solid gray}.edui-default .edui-anchor-bottomright .edui-bordereraser{right:0;bottom:-6px;height:7px;border-left:1px solid gray;border-right:1px solid gray}.edui-popup div{width:auto;height:auto}.edui-default .edui-editor-messageholder{display:block;width:150px;height:auto;border:0;margin:0;padding:0;position:absolute;top:28px;right:3px}.edui-default .edui-message{min-height:10px;text-shadow:0 1px 0 rgba(255,255,255,.5);padding:0;margin-bottom:3px;position:relative}.edui-default .edui-message-body{border-radius:3px;padding:8px 15px 8px 8px;color:#c09853;background-color:#fcf8e3;border:1px solid #fbeed5}.edui-default .edui-message-type-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.edui-default .edui-message-type-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.edui-default .edui-message-type-danger,.edui-default .edui-message-type-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.edui-default .edui-message .edui-message-closer{display:block;width:16px;height:16px;line-height:16px;position:absolute;top:0;right:0;padding:0;cursor:pointer;background:transparent;border:0;float:right;font-size:20px;font-weight:700;color:#999;text-shadow:0 1px 0 #fff;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.edui-default .edui-message .edui-message-content{font-size:10pt;word-wrap:break-word;word-break:normal}.edui-default .edui-dialog{z-index:2000;position:absolute}.edui-dialog div{width:auto}.edui-default .edui-dialog-wrap{margin-right:6px;margin-bottom:6px}.edui-default .edui-dialog-fullscreen-flag{margin-right:0;margin-bottom:0}.edui-default .edui-dialog-body{position:relative;padding:2px 0 0 2px;_zoom:1}.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body{padding:0}.edui-default .edui-dialog-shadow{position:absolute;z-index:-1;left:0;top:0;width:100%;height:100%;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.edui-default .edui-dialog-foot{background-color:#fff}.edui-default .edui-dialog-titlebar{height:26px;border-bottom:1px solid #c6c6c6;background:url(../images/dialog-title-bg.png) repeat-x bottom;position:relative;cursor:move}.edui-default .edui-dialog-caption{font-weight:700;font-size:12px;line-height:26px;padding-left:5px}.edui-default .edui-dialog-draghandle{height:26px}.edui-default .edui-dialog-closebutton{position:absolute!important;right:5px;top:3px}.edui-default .edui-dialog-closebutton .edui-button-body{height:20px;width:20px;cursor:pointer;background:url(../images/icons-all.gif) no-repeat 0 -59px}.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body{background:url(../images/icons-all.gif) no-repeat 0 -89px}.edui-default .edui-dialog-foot{height:40px}.edui-default .edui-dialog-buttons{position:absolute;right:0}.edui-default .edui-dialog-buttons .edui-button{margin-right:10px}.edui-default .edui-dialog-buttons .edui-button .edui-button-body{background:url(../images/icons-all.gif) no-repeat;height:24px;width:96px;font-size:12px;line-height:24px;text-align:center;cursor:default}.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body{background:url(../images/icons-all.gif) no-repeat 0 -30px}.edui-default .edui-dialog iframe{border:0;padding:0;margin:0;vertical-align:top}.edui-default .edui-dialog-modalmask{opacity:.3;filter:alpha(opacity=30);background-color:#ccc;position:absolute}.edui-default .edui-dialog-dragmask{position:absolute;background-color:transparent;cursor:move}.edui-default .edui-dialog-content{position:relative}.edui-default .dialogcontmask{cursor:move;visibility:hidden;display:block;position:absolute;width:100%;height:100%;opacity:0;filter:alpha(opacity=0)}.edui-default .edui-for-link .edui-dialog-content{width:420px;height:200px;overflow:hidden}.edui-default .edui-for-background .edui-dialog-content{width:440px;height:280px;overflow:hidden}.edui-default .edui-for-template .edui-dialog-content{width:630px;height:390px;overflow:hidden}.edui-default .edui-for-scrawl .edui-dialog-content{width:515px;*width:506px;height:360px}.edui-default .edui-for-spechars .edui-dialog-content{width:620px;height:500px;*width:630px;*height:570px}.edui-default .edui-for-insertimage .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-webapp .edui-dialog-content{width:560px;_width:565px;height:450px;overflow:hidden}.edui-default .edui-for-insertframe .edui-dialog-content{width:350px;height:200px;overflow:hidden}.edui-default .edui-for-wordimage .edui-dialog-content{width:620px;height:380px;overflow:hidden}.edui-default .edui-for-attachment .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-map .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-gmap .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-insertvideo .edui-dialog-content{width:590px;height:390px}.edui-default .edui-for-anchor .edui-dialog-content{width:320px;height:60px;overflow:hidden}.edui-default .edui-for-searchreplace .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-help .edui-dialog-content{width:400px;height:420px}.edui-default .edui-for-edittable .edui-dialog-content{width:540px;_width:590px;height:335px}.edui-default .edui-for-edittip .edui-dialog-content{width:225px;height:60px}.edui-default .edui-for-edittd .edui-dialog-content{width:240px;height:50px}.edui-default .edui-for-snapscreen .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-music .edui-dialog-content{width:515px;height:360px}.edui-default .edui-for-paragraph .edui-listitem-label{font-family:Tahoma,Verdana,Arial,Helvetica}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p{font-size:22px;line-height:27px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1{font-weight:bolder;font-size:32px;line-height:36px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2{font-weight:bolder;font-size:27px;line-height:29px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3{font-weight:bolder;font-size:19px;line-height:23px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4{font-weight:bolder;font-size:16px;line-height:19px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5{font-weight:bolder;font-size:13px;line-height:16px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6{font-weight:bolder;font-size:12px;line-height:14px}.edui-default .edui-for-inserttable .edui-splitborder{display:none}.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow{width:0}.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder{border-left:1px solid transparent}.edui-default .edui-tablepicker .edui-infoarea{height:14px;line-height:14px;font-size:12px;width:220px;margin-bottom:3px;clear:both}.edui-default .edui-tablepicker .edui-infoarea .edui-label{float:left}.edui-default .edui-dialog-buttons .edui-label{line-height:24px}.edui-default .edui-tablepicker .edui-infoarea .edui-clickable{float:right}.edui-default .edui-tablepicker .edui-pickarea{background:url(../images/unhighlighted.gif) repeat;height:220px;width:220px}.edui-default .edui-tablepicker .edui-pickarea .edui-overlay{background:url(../images/highlighted.gif) repeat}.edui-default .edui-colorpicker-topbar{height:27px;width:200px}.edui-default .edui-colorpicker-preview{height:20px;border:1px inset #000;margin-left:1px;width:128px;float:left}.edui-default .edui-colorpicker-nocolor{float:right;margin-right:1px;font-size:12px;line-height:14px;height:14px;border:1px solid #333;padding:3px 5px;cursor:pointer}.edui-default .edui-colorpicker-tablefirstrow{height:30px}.edui-default .edui-colorpicker-colorcell{width:14px;height:14px;display:block;margin:0;cursor:pointer}.edui-default .edui-colorpicker-colorcell:hover{width:14px;height:14px;margin:0}.edui-default .edui-colorpicker-advbtn{display:block;text-align:center;cursor:pointer;height:20px}.arrow_down{background:#fff url(../images/arrow_down.png) no-repeat center}.arrow_up{background:#fff url(../images/arrow_up.png) no-repeat center}.edui-colorpicker-adv{position:relative;overflow:hidden;height:180px;display:none}.edui-colorpicker-plant,.edui-colorpicker-hue{border:solid 1px #666}.edui-colorpicker-pad{width:150px;height:150px;left:14px;top:13px;position:absolute;background:red;overflow:hidden;cursor:crosshair}.edui-colorpicker-cover{position:absolute;top:0;left:0;width:150px;height:150px;background:url(../images/tangram-colorpicker.png) -160px -200px}.edui-colorpicker-padDot{position:absolute;top:0;left:0;width:11px;height:11px;overflow:hidden;background:url(../images/tangram-colorpicker.png) 0 -200px repeat-x;z-index:1000}.edui-colorpicker-sliderMain{position:absolute;left:171px;top:13px;width:19px;height:152px;background:url(../images/tangram-colorpicker.png) -179px -12px no-repeat}.edui-colorpicker-slider{width:100%;height:100%;cursor:pointer}.edui-colorpicker-thumb{position:absolute;top:0;cursor:pointer;height:3px;left:-1px;right:-1px;border:1px solid #000;background:#fff;opacity:.8}.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body{font-size:12px;margin-bottom:3px;clear:both}.edui-default .edui-autotypesetpicker-body table{border-collapse:separate;border-spacing:2px}.edui-default .edui-autotypesetpicker-body td{font-size:12px;word-wrap:break-word}.edui-default .edui-autotypesetpicker-body td input{margin:3px 3px 3px 4px;*margin:1px 0 0}.edui-default .edui-cellalignpicker .edui-cellalignpicker-body{width:70px;font-size:12px;cursor:default}.edui-default .edui-cellalignpicker-body table{border-collapse:separate;border-spacing:0}.edui-default .edui-cellalignpicker-body td{padding:1px}.edui-default .edui-cellalignpicker-body .edui-icon{height:20px;width:20px;padding:1px;background-image:url(../images/table-cell-align.png)}.edui-default .edui-cellalignpicker-body .edui-left{background-position:0 0}.edui-default .edui-cellalignpicker-body .edui-center{background-position:-25px 0}.edui-default .edui-cellalignpicker-body .edui-right{background-position:-51px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left{background-position:-73px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center{background-position:-98px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right{background-position:-124px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left{background-position:-146px 0;background-color:#f1f4f5}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center{background-position:-245px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right{background-position:-271px 0}.edui-default .edui-toolbar .edui-separator{width:2px;height:20px;margin:2px 4px 2px 3px;background:url(../images/icons.png) -181px 0;background:url(../images/icons.gif) -181px 0 \9}.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump{position:absolute;overflow:hidden;bottom:1px;left:1px;width:18px;height:4px}.edui-default .edui-for-emotion .edui-icon{background-position:-60px -20px}.edui-default .edui-for-emotion .edui-popup-content iframe{width:514px;height:380px;overflow:hidden}.edui-default .edui-for-emotion .edui-popup-content{position:relative;z-index:555}.edui-default .edui-for-emotion .edui-splitborder{display:none}.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow{width:0}.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder{border-left:1px solid transparent}.edui-default .edui-hassubmenu .edui-arrow{height:20px;width:20px;float:right;background:url(../images/icons-all.gif) no-repeat 10px -233px}.edui-default .edui-menu-body .edui-menuitem{padding:1px}.edui-default .edui-menuseparator{margin:2px 0;height:1px;overflow:hidden}.edui-default .edui-menuseparator-inner{border-bottom:1px solid #e2e3e3;margin-left:29px;margin-right:1px}.edui-default .edui-menu-body .edui-state-hover{padding:0!important;background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-shortcutmenu{padding:2px;width:190px;height:50px;background-color:#fff;border:1px solid #ccc;border-radius:5px}.edui-default .edui-wordpastepop .edui-popup-content{border:0;padding:0;width:54px;height:21px}.edui-default .edui-pasteicon{width:100%;height:100%;background-image:url(../images/wordpaste.png);background-position:0 0}.edui-default .edui-pasteicon.edui-state-opened{background-position:0 -34px}.edui-default .edui-pastecontainer{position:relative;visibility:hidden;width:97px;background:#fff;border:1px solid #ccc}.edui-default .edui-pastecontainer .edui-title{font-weight:700;background:#F8F8FF;height:25px;line-height:25px;font-size:12px;padding-left:5px}.edui-default .edui-pastecontainer .edui-button{overflow:hidden;margin:3px 0}.edui-default .edui-pastecontainer .edui-button .edui-richtxticon,.edui-default .edui-pastecontainer .edui-button .edui-tagicon,.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{float:left;cursor:pointer;width:29px;height:29px;margin-left:5px;background-image:url(../images/wordpaste.png);background-repeat:no-repeat}.edui-default .edui-pastecontainer .edui-button .edui-richtxticon{margin-left:0;background-position:-109px 0}.edui-default .edui-pastecontainer .edui-button .edui-tagicon{background-position:-148px 1px}.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{background-position:-72px 0}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon{background-position:-109px -34px}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon{background-position:-148px -34px}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon{background-position:-72px -34px} \ No newline at end of file diff --git a/public/ueditor/themes/default/dialogbase.css b/public/ueditor/themes/default/dialogbase.css deleted file mode 100644 index cd663d5..0000000 --- a/public/ueditor/themes/default/dialogbase.css +++ /dev/null @@ -1,100 +0,0 @@ -/*弹出对话框页面样式组件 -*/ - -/*reset -*/ -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, font, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td { - margin: 0; - padding: 0; - outline: 0; - font-size: 100%; -} - -body { - line-height: 1; -} - -ol, ul { - list-style: none; -} - -blockquote, q { - quotes: none; -} - -ins { - text-decoration: none; -} - -del { - text-decoration: line-through; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -/*module -*/ -body { - background-color: #fff; - font: 12px/1.5 sans-serif, "宋体", "Arial Narrow", HELVETICA; - color: #646464; -} - -/*tab*/ -.tabhead { - position: relative; - z-index: 10; -} - -.tabhead span { - display: inline-block; - padding: 0 5px; - height: 30px; - border: 1px solid #ccc; - background: url("images/dialog-title-bg.png") repeat-x; - text-align: center; - line-height: 30px; - cursor: pointer; - *margin-right: 5px; -} - -.tabhead span.focus { - height: 31px; - border-bottom: none; - background: #fff; -} - -.tabbody { - position: relative; - top: -1px; - margin: 0 auto; - border: 1px solid #ccc; -} - -/*button*/ -a.button { - display: block; - text-align: center; - line-height: 24px; - text-decoration: none; - height: 24px; - width: 95px; - border: 0; - color: #838383; - background: url(../../themes/default/images/icons-all.gif) no-repeat; -} - -a.button:hover { - background-position: 0 -30px; -} \ No newline at end of file diff --git a/public/ueditor/themes/default/images/anchor.gif b/public/ueditor/themes/default/images/anchor.gif deleted file mode 100644 index 5aa797b2240a432d9f3f1d166ed5542eaf684937..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmZ?wbhEHb6kygJ|Uu&?oD;%Ae!z@09(NL_hv#6Slx0y!YR{?r|LJZgAju=f-$sQVWNL{+Tsz18#+~Ke%+zTWns()WcPwy8dQcr!JH# U&i)o#ra{o6vp4_np&fqGg-1;GP^BJO_p_?A6nLIYwB=H*Qp>A8nZf?fNnCY(uvZL zYMq5r=M|ASom0_?Sn7~VE3B<^mcq1BrHIr9EGW>Ifm~m?y<>mJPIAsKPjWszPx7z| z^K(;^4e+i)B*?S*guTS?B+Vho2 z`WG1Kuclp>qR!nSa-c>gf6E3&1HPK$>6qGXeOCp%qBL8aEd$S;?m%#@0uH|roliGe zy#i~1E?Ad#U1t}6uwt+qqgIm=xY8r0F*7 zl{ZWo1&^Wcj_roRaNKw0cq|%;M#7eRWh<*7;!rva!w3Wdg+kTSXqlOr3+!(Y+UH1c!M>bUYK1<=lG*1pq%m&P~1QC>Rx($IJPWjnN zpR&G{Rq^JvgludxnIl{D8LgfGe-+MHCcM_UcHp8Td8VLE6B~29!k7r659<2nKp^Fl zj!GszzF7d5gy6DP@ZR1H93XOu{-OI@l6&5C>BJ*|uw%klayELyqgg z(1r2VJa0I-7Tj#n#oR8}RJ&g+`2!5Q8%of3mwZ1ylT{6m^cuZ3bEx<+w~3H6c=s2I zHqmMPM&{IH<=Icl=QPsL@wWkIaQ9;d5!{KiwDTAp6ANhcA|rcd_*y;vPo-D@#WUD8 zxj?H-u8_-Qb;^#oX{dywAOO4sP%-&Maru89peVTaNW45UP{=b_+ByMxH6aCa_?|l> lFG7akQpaiL%L!NFwXt25X8cm0x*UH6P&xU?o7rDC{|kH`9-#mL diff --git a/public/ueditor/themes/default/images/arrow_down.png b/public/ueditor/themes/default/images/arrow_down.png deleted file mode 100644 index e9257e83b00375259f2f724c7cbac03d0df5ceb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1610 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW`)d{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d20o>TUVrVb{15Cdnu|VHY&j92lm_lD){7Q3k;i`*Ef>IIg#cFVINM%8) zeo$(0erZuMFyhjbK~@!5ITxiSmgEG&eP`1g19yq1OegIswNQ-xSi<4Z1u2!m4XhFqBbF8wG<_`!+|HhuxMFc&SLMF{7Z@fVvH$#8 ze|mSH#FSX^%>h00S4ci?>YufC3b$>be$N&e)g9;i=5%xkTh1s~5&sk~hpZURp;Qa?iE^5gq z0+?2AoO*aq`+eIDGp&3MoLz0RPBnf@mZEj!Y0cZVUxN2^iyZs(a?eI%oljxTtdUFo z4zJtT6vh6mc<(8@dEybWbJNr%Pc%*VvF}gIi|llP_mw#+z3j zapfmJXkU5iJgMMaq6;%eEr0F`fv2A$yk@Z1O`YMLW4b!$#En-43)(gNwO&tIE1$YR z{=f_5V<-h{r;w^f@VvOcJ`XH-Laf=HZ$7pE8y$b zea|FcbA8_y&V4&;c0EYAF6z7Uq;gWX%!S@_GP~BiYk9@S9hp{rSmuZc`!rX#z78?b z>^=VrHI}o6**U$5wKDVU&pfZEJI56Y zoT$4mvucV;+x1h4)@uJZd{#I=XN5ldnP;uVH#)aA-sLj_f6xsvx)X=xc_v2 z@-mt-`NgS3hTn0)cfZMswpSgNlI1YlD$F(+3=d#Wzp$P!&XKAJY diff --git a/public/ueditor/themes/default/images/arrow_up.png b/public/ueditor/themes/default/images/arrow_up.png deleted file mode 100644 index 74277af1e6a8ef91f8fe664efde11377a5292dbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1649 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=9J8kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d2fv+#z;JjjJKmmhHzap_f-%!s$KQ|ZTFR<$3lAu(CGq9>I4yi0i)elN7 z&Mz%W2F6F4GE6ft?C@IzQV4X7m48ttFj5k8T=J7kb5rw5JY8&+fHHb1nJHGr&Zcf= zZpLmdj^@s;MuvtK&X$(07A9_{2F`9K1|}9TGqCA(Gj?@#HgIt=cQbG_G;}qxFf=l- zbaON}GPN)@wKR5t>GjMjE=kNwPKDW<3A7ig*AcH?E9aur#FG4?ko^1{SPBTp$S=t+ z&d4uNa1J(A2+zz*$uBPkMGnNTE~!PCWvMA{Mftf3;Lx?o#9}*PUqke!kP~A1K*#8V zk_J*zfe8WAABYK0_&^Rk>!juZ^GgvhW0Y{Wv@$R-E%tPA45_#^WvZ{gh@(K;>Z+== zX-At4KPH3-+4r@v2}X8*AN$Mh@OiHNYs3&%QbHW!0`#zh1`9tBzYV@8G#Wg&l2-#)h$FUdfE_lvm%b2=kt^Ebzn( zr(4oF%+7xg2Te=y(fqh}+AK?Nt8-e6Vo~YWrY1FhH}uX($oOv&HCTs__< zzEdCca~LbgR5%PtJYh=3FjGRGp=cUaJC^c^yU)Zr^k2P zlm5xRG;W0~lefT@)ERLuic?K4bNlUNS|KodrrwHIUNWEc`M1i>U^rI0VS1uR{)PLi zihmWG2&`Lpzrjh}nD@mILlb2Uhtt|CHp`N!r`KF5c$VaRcJZF}LJe(& zwV}p~KZGbP@?1Z4Mc+d4`MOQrYgSe4X#ZDh+%|1dL)h$@nv3?ZH`~Z?rV3X7(F@K> zb+Z2u>#VllaHj5&E!~}`b21Ja)w^fT&+2mzy!OR_pE1^}_1<=w+EA5Nm$Hp%M~^AK zU)Z92;jd=Sl<1n3x7z+*ci#Wo(IT=)J{K*+Q?C!N1MD&Sbd le02W-shBsPKJ+s%GgK)^wA}p_d>&K@c)I$ztaD0e0svXmV!r?Y diff --git a/public/ueditor/themes/default/images/button-bg.gif b/public/ueditor/themes/default/images/button-bg.gif deleted file mode 100644 index ec7fa2eabf0705226fe0c488d65198508bf547e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1114 zcmV-g1f}~&Nk%w1VKM+R0OkMy00030|Nr{?`~Uyg|Nq+c_4NPz*Z=(3`t{5D_RRV9 z%lr1t{P@xN^27S{$occg`t-~D_Rjb6(E0Jf`t!&5^V9k7zxnUL`S8H{@x=P_$@uNP z`0c*=@5lM`q&aU|6w)f(-(ZHJcKyq);w!1v|A_vOL(=ELpXz3||{+03)&lq#;^N`q z;o#ul-{0Tf-rm~U+Sk|D(9qET|Nj6000000000000000000000A^8LW004OaEC2ui z05SkF000O7fO%_oc!h?Ch>41ei+5{zWp`--l$Dm3n3+> zsF_HyqQ#3CGiszrN8-khAVaF@xTd7ZlPFWFT*=ZTojPn{%A85Frp=o;W!90Hv!~CW zBj>nb)267=qezn~UCPvr&^vA(N|o9Msu?(T?r7c0wX4^!V8PmfVC>oFmqw6)fdnp04j^zqp|u`Sa-0r=OsK#f}aaILMz*zrOwZ z`0-!pup>tY5FP|5;D7`cXyAbdg3v(@I*72r2M|Um;e-@cXrYB0h@gWGA&@Y_haiS1 z;)o=cSRx4_Z1{o+CA8?`i!jD0v_{FvJiptdPRD zl1w(~KIEzAo_zM{=bwE7aRU-l5Rn8GGXU|#qKr1`=%bKE+9(h+P>}@@TWDd06i{^P z>8GHED(a}AN@0Z-TXdns6;*su#jCK!D(kGY)*7p;S18d%0YNN*1r}fgE9|hu7HjOW g!~VKN5CsU(L=jFzEA6z@R%`9G*G3VB0D%AiJBq`ncK`qY diff --git a/public/ueditor/themes/default/images/cancelbutton.gif b/public/ueditor/themes/default/images/cancelbutton.gif deleted file mode 100644 index df4bc2c06d485df4403d689c98ee745a4cde8e97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1227 zcmV;+1T_0cNk%w1VH^Ms0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui02}}g000R80N?d8lSPY`ECmaSA@vT~rz=b%E}1xSN+M*v*63=s zj2W|z%bEpKgUQntPOMg`Ql)Ygt58`0p~(cQlP6A|I&tD;)03AgfeIBOG>DKjY^XJ4==@p5kGnYDTB5w7&K^jxZs(hL{cL~lH}dPcdt$q zD_5TQ&|`gZmzMqH0#&%8nU(?9AzvZOs&E($thW17wAnF=2dS zixx%10*e+@Tw%iubG*?-5ob)X#T8L>VFrIHgwcf)I#^*u6G{}}gcVlU-~$+ANa4h3 zU5Eh&8T;8#LljaNAp~tsNC8C^Rb1i1Av~P%1{`$QfyY)`G0{dGGhE??7h#NH1{!Ik pfd&v=WTQt8w{C>_-)j6kG zmZ@`2opZWct<*WE%jHsMvsp;f^!~Ol**?^DO`hifs44&=f~umb34Y07v! zehXl>0V0C67HciWn4KjeEEWr@sxtk4|8?WtNwEFcm{Yc@Vy$H`7@(^3dc70h4xmY} zPa;B+{C!@Q<^CQRW6lMfrwb>zFkriOfWsf}arIZ0*)jKSzW9HD4>|2i1+FOg^6oL0 zuMGL+PHkt#*vvh~NQ@CxMMM#xZ40h-e^cjfe*)md?7iRY1HqRBjSwR0J%@RRXP>@> zkKcbjGFwIi5M!jSYpSZEsw%t>6uuy+C;C8K=M*aB-KzlIq|@mbYi)bIUbpA-`I#n_ zWy#v)_!v+R^=b{kGLNXLO{}#BFq6sTxvIY0l+`3NPhQ=Ac;nXf2W4IstBgcUD^b-d zJ3eY@@JRF1!NCEoR?7f{5J-}wDJcQkB4Re+sH#y!e2lU916r{A&pdHrm;e9(07*qo IM6N<$g2apNRsaA1 diff --git a/public/ueditor/themes/default/images/cursor_h.gif b/public/ueditor/themes/default/images/cursor_h.gif deleted file mode 100644 index d7c3e7e9eb5755d57ec03c34097c258244abe61a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmVG|6H_V+Po~-c6$N^_IEGZ*Iy1qOk3oThS@Yxn_+t|0*P6|%n+#L~Iyf|E zrg84hNMwpx9_!-6|BEHhl_}FHLcZHi@xo+A>tN1bvzr~8Z#Ex)a8Qdkef% WRW|>PuXh3sXYh3Ob6Mw<&;$VH);Gui diff --git a/public/ueditor/themes/default/images/cursor_v.gif b/public/ueditor/themes/default/images/cursor_v.gif deleted file mode 100644 index bb508db552b6ac3f670f9ce1fcb1e55669db0dd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmZ?wbhEHbQBhG}zIty_2L(xqFsZe72A-PqWelao_UPVUE#AKKd5`}glJC@2UB2rw`(IB?*A zqN1XRh{(>JJ55YXczAeJRaJNI-YqUJE-x?t@#Dumd-if8Ejy6@I4`1w~F!Qzky-V-VnInOpfk+|GDYn9AS7wc)Z8bf!!3 zZ2HZ7qm!>fg-@N3u_S6BtfcFRaLzUWGF!q z%AzEfB~`D;I)q^T@hn>GjrE?{UdLiPgP&3w>7tmXsgPC#5>G@))3jVemdgxLP8K0W zSvgGh3k4G=ZtO?YCn3lc(TL2c!850)DFo3*HcZxKVg(a36p4}m^OOpp{&p|bt$J&&x7~}fl`AqcVt%cEU2}27dM96QnwD)g zZI46N>oIHU?{_Z!WDf$^W^<7J82vsuXemZ#a;t%OX9%BFi diff --git a/public/ueditor/themes/default/images/filescan.png b/public/ueditor/themes/default/images/filescan.png deleted file mode 100644 index 1d271588692c1726e3521032f71d8354b66fab0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4282 zcmV;r5Jm5aP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z1?NdbK~#9!?3_!lWmOT!t7_HW`<(lvZ{H>$5@Q?MbURQ7v;-We31bE(&WQtc=8P#* zJ^>RAGY2LPoG<`iA;Azj5j8?%(@{|Rrqg}SeH_nzt+lGk!3`$J>9zR)_4^3F{8#PT zwH|0@w>~=R#xaCo;QT)bAR=2$bLC54z`uWZXJ>os!rqRXD)>5Ct=DbG|LMoaAAPtV zqsuDDy0Eu%cX7;h6_SXkyDE`Hs)|_+RL#s~l~6S^U{h07RdpjpS*mJmV5%lAYcg42 zYzC^PUb8;eGBi_DHBVMimZ_OBn2DN*C#!@612YBy00VGYWefng9mabnt1%|`QJ|@- zb{M%IV-y|6=tc_6np$#ZL?jAC!HpCk3W~x&NP#f8tfH(yAjpIiCy*XdM^2q-7i~-=?qyF|ON2^@cMp^Y}+eiJ= zPt5SQf4hHopf5kRuZCXbH*{D4g!a!nXOGO4|Mc*1Kq4exhGkg<0BnF_DCXma5@Kk8eAef@ z?2cRSvq~InbK7S&!|chLA{&|^6Cnro&7Cs*$qXKunc0ODW$`B)7FFQNWfiFc6A=?p zU2$EzkP>ypM8qLbRfozyhUH|{Aq3(;P}kIC@8FBcswogKGtOr)dh1YRJ_BatS%te> zko-_-;a>+}cMF;d*wS#g4;mo*DclFBVuZsTxSb-t^})%_wO+e&fCPSX;Ij~dDZF>< z`06g9nccjzdi~vdt5M9OwINuz*Mw)k_VCrm_80*AVLVwb*L`wT8w-}qtA5xA0DkSA zfBp5t<#XS<+_0a~+AM3#@|(YWyj=D8)1STZ{P(V{x~RT)|G=_^dt3D@zq`p>b+zha z8@+{}2-v(1JZ5d9bkUD?mt|qh#!+-V4zox~%DBDJRix%rU#Ha~$0O@8F4T;LT`2ENxy zTx1bXR*4Yov=z?8W7UY?H=K|aGBNYKsrPmzd+Sh?#mw!B!>p+v+Lh$D?~AgkDx5SN z>blz5LVv2D2-j7pYsP?7Gx>a`2-S=M8O$t;sTcSXmI=&QQp#PMy=IlEDoKf@>&DX) z@!y?tQ(A@GbsW2OTrRSB2VX4kfpXXK1(JTT$i8J*P8Q)oK>WoUw_kYW&F#vClxP#Y z^!zhuX1{;ugI~S=$K~;vOWDZ9gZ=M6`}B9e`2+*Nw=d7GJ#{Db3-HJ6J_}McKRmcR z0|0D4db9nW?p8e@@1=$Epyn(CjR4{F=jz zK-Z|fJ9%*b4xkVkWP}9TgSo6C3J96OB3KJHxR7GF6f81WLhVpT7gDNPs$hx1M$it- zWtEqqfQ<~6KwI!+O~}gU$%>#IsJ~M>nXGs&s|EFWR#{d$mz6Re`^&{9so@8s|^FfM#}lHq)$07*qoM6N<$f|`Fa&Hw-a diff --git a/public/ueditor/themes/default/images/highlighted.gif b/public/ueditor/themes/default/images/highlighted.gif deleted file mode 100644 index 9272b4915ad2b8d4052a19b4c80a41b7c71cf1f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111 zcmZ?wbhEHb6k`x$Sjfb1_to#iH~&L`;!hSvE(RtB9R?r($ulrHOzB@K_Ll!X=Ym_^ zj diff --git a/public/ueditor/themes/default/images/icons-all.gif b/public/ueditor/themes/default/images/icons-all.gif deleted file mode 100644 index 21915e59dede0aa22cda8c7097a14f0f1f68906c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3750 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 b4O*493C(v}$CrKE*L~j?e&ctU0s;U#>#h02 diff --git a/public/ueditor/themes/default/images/icons.png b/public/ueditor/themes/default/images/icons.png deleted file mode 100644 index c015e3aac9a84ebad11b932e84722124772d9641..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19694 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ÏmvOE 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 b`u_(2Nr-(&rSM diff --git a/public/ueditor/themes/default/images/img-cracked.png b/public/ueditor/themes/default/images/img-cracked.png deleted file mode 100644 index 3b1d38965486452bf9a13a913109299ec713c8f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1497 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 diff --git a/public/ueditor/themes/default/images/loading.gif b/public/ueditor/themes/default/images/loading.gif deleted file mode 100644 index b713e27dfba708a01c380e7c731a13b52a34edfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 734 zcmZ?wbhEHb6krfw*v!jdZ*RYU|9&kkt+4ULFya6I z{|pQa5E95x{Lk&@8WQa67~pE8XTZz|68g!)$-uzNpaWzB4HaNuV6okB(sT7*i`QqX zc^L!>4t!=<(wVp51?zD`Kkg=-D~S>;skcR%7#$omMC>21xN*pcHs0c0tRNsF(;}SM ziPc1Fu!&|20tT$-nJa`fCQUjv@kC+C3!quI1U@ISvoqf2Xk|(i=IUl?N@{e_G3Yq3 z;U-H^uFrB+CTuRW+i+5nfx|fagWLs?!jQY{X6=arU0riqs^&x$2`7X};t z37RYmQ;O#*G6uOVn*=nAm7~Q)&(!ybaj}oz`WtJ?PQSHN#^y?3ICf5PGS1Ha8pE+k zgJmJh5y6y1=@^y-ft=a0ZG|ZdPArq?H(+2`(;|7`F{6Xpbl>GI8B?M_My|#ljzAN4 z3Pb@-+?qdUsm6)xA>j@^Y0K7lSt}-Mopvo#qQ-sCkLXFkyF zSLvgkf4d8-w;?feL$4)lp3HYoMI*E5@=0AueT*09aVgICcu;r3k!5-F!GZ%U3=K0F z9S$(a^)KPCsC4r`z65*B*uc`x?)kvPGDl;Yns{Fj0|R3#FisfHGY4!D^0$zE1ljvXNk%w1VH^N10QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui02}}=000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Na$VuFhf5;SOl zQR2k}8962Z;Gkkb01ZqM%&2mp#+Cvv!u%%_X3ds21*#in3e-1?2?(ltc28ctYrP)k z{Pb@UlQicB-E)}JlDi_MMmXbuk803?iR{rRp~2S#dR_^-LU%))h*>DmHq0rnjf;8~ zsJM}rcHp`#D%4?EVW;cduL6J7ThT2kQ{cJka07oF;i3Wu4ZceYpGm&F`Sa-04-5zZJCANLt@XPdKI8X22WQ%mvv4FO#q2N BK}7%n diff --git a/public/ueditor/themes/default/images/pagebreak.gif b/public/ueditor/themes/default/images/pagebreak.gif deleted file mode 100644 index 8d1cffd64af72709b1180b3b0a51bbfe30bcb8c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmZ?wbhEHb{( zJaZG%Q-e|yQz{EjrrH1%u?6^qxTdA0{r~^J*gJ9sP=u)@$S?Rm!_(~sUO=9vr;B4q z#jTK2Cpj4yIG7J^{J*Sr7aP;;!*evU*UP7-zWuuR&zi{Xq6rL2tqds~bx9pSO$?r{ KelF{r5}E*+%QgN0 diff --git a/public/ueditor/themes/default/images/sortable.png b/public/ueditor/themes/default/images/sortable.png deleted file mode 100644 index 1bca649698e187a80e1b1951fde99ddea3d7b038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2851 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 BXOsW{ diff --git a/public/ueditor/themes/default/images/spacer.gif b/public/ueditor/themes/default/images/spacer.gif deleted file mode 100644 index 5bfd67a2d6f72ac3a55cbfcea5866e841d22f5d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 mcmZ?wbhEHbWMp7uXkdT>#h)yUAf^t80Ld^gF}W}@SOWlZ0R#L1 diff --git a/public/ueditor/themes/default/images/sparator_v.png b/public/ueditor/themes/default/images/sparator_v.png deleted file mode 100644 index 8cf5662da8c36a446e1e08eb71b992c730ab8d15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-Y0V1m%Ufcz7ii6yp7}lMWc?smOq&xaLGB9lH z=l+w(3gmMZctjR6Fz_7)VaDV6D^h@h{GKk3Arj%q6<>aQ{Qv(yqp%0-vU7cb$AD4{ Mp00i_>zopr0ET%XRR910 diff --git a/public/ueditor/themes/default/images/table-cell-align.png b/public/ueditor/themes/default/images/table-cell-align.png deleted file mode 100644 index ddf42853ea5c00663e74d9195d1f1264ab684252..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1847 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 diff --git a/public/ueditor/themes/default/images/toolbar_bg.png b/public/ueditor/themes/default/images/toolbar_bg.png deleted file mode 100644 index 7ab685f4236ad543601b0d7dc43e429e041bee98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI{!2~3a95{LaNJ*BsMwA5Sra_n`~3ut zhqFCqhNk>9eAm}?**d-K>ErgL-9FQkEgB1_|9|!V%ggstduo?ezj^hOMS@|yt(J@G Th3lO_a~V8c{an^LB{Ts5X5&F_ diff --git a/public/ueditor/themes/default/images/unhighlighted.gif b/public/ueditor/themes/default/images/unhighlighted.gif deleted file mode 100644 index 7ad0b67ae634d41e76848ec0b6696e8ac7e06983..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111 zcmZ?wbhEHb6k`x$Sjfci#j9d&%3_1)z0Fq~5a+uP;QtU1Nea;29 zx*cclynVJpP9xwz=Q6F#ReGoPZ4xWkEPX#)_EqLPYsO~h_`vc#s_EX6+DxrJi$d-_ L>N=ao&0q}x{nsuG diff --git a/public/ueditor/themes/default/images/upload.png b/public/ueditor/themes/default/images/upload.png deleted file mode 100644 index 08d4d9268204a20ca343bf75784302cc706d2417..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6608 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 O00001IobTth)ve1{+;xF-z$zX1$@cbk;N#jz zM8mU4YCupmEU?Nii0lQg^bRCan?Ab3%VAH658-8xBFJMB`IuzR@?X?_cxg~njWe8Z z7he1{t~NY@;sD2oqwB>InLWHP3|(&rFL;_%YXisG!f|)t`LI~xqj*wKLbXWp)f$eo z4#asOE4^bXVR1zDClZ^-`L@9YE{GEUM6w@>B$|*3C13A^6xxLq**_!Pdr{&MM+{D{ z56z@TzG*@hw6S^P4v136mt~*C)1y;z@#LIHDjO7zE0$NBVk(?tEAPD`x}r!4rSvo+ zGrN|Z-`M*gk?fXS+qo0;d0 zh<&hBzt>Fxc`eUN=*S8tip(N)4%c-Hsa$abS1kGZZD3dwRL~Y&OiQls$!Zy(aK#~| zjPP=1B(V$A*qhVABln1FxZ*mlSSnXYWQzzgJF1owUC)i7_7-#saE!r1=5SG$fWQ*I z?G_O^BB^|7ZhisN&MW7LKFbwbTU$SV{P_O;`{w56#>U3_`uf`1+Un}+%F2pDp;%g4 zT3lS5pP!e@<#Tg$GMVhlmoKxkvokX@)6>(Flao@ZbYfycB9V-bkB^RyibNuzP$&=x zMn*=4hK2?Q2l;$HkH;Gr80hQk>+S93a=9E1r@OnG&1QFYb~2ev27}Sj(b3-C-qzOE z+}zyQ*hr;PDHIBkNX*O2%g)YDPEJltOhlnjzdrQ8MQa@l0suN-^vmE^6Tt3mAau_$ zXbql@q{N)M&$25b1FG78WjFA2Q`{wpcH+plH-T+lc4H{-V^L{To}?sY^7t- zRp-#0EC|Fh>5nV9*osg354U2y3FFpwXQ!`Na;JKQ;uHrYmb=qU|MBr zTOt(Y=@VUlJq+6mQt^WJ9lIJTz?$6jvB@_0Ijg#xyHYhx6QE$9@Q;P`SNru{MQcx_ z>I9eqMm;}}tfJ*J&?Udq;ijL1AIs^TNj%ED8++(4bqQ3YK5><%~obS)3oEv z2`L9EwBilZbt=4c48b+h%ydj29TQf1;FclAt3p@D@Iv$C>k|Ryx={((b>+iEv*M}T zw2%>2(|!*aqioP7@6#WGj~%z23qkbWx? zq>K{ydFDHsgH&Ab#e8p|DBB+i&e7YjgH&Dp_Cc?zbGzF=vu-e#1^&&3UitP6Qvg=W z;+>M!e1J%3O7HX-hEcUA+~cC@8WAyj^bml>?&AT`HEEBQ}9Z=3X$i*Zty)I zU*Zj5^tvjIuB=l9Z9~T)&b;Eg=FK&TO>3g*yVOqt8d@&{JXvVbxz7~cYII$TQHvSS zgJ#LpO3a#6>HScB5@i5vKw}cnyiI*AUkCSPz7s6};*mIoCN(8C-gssBWz<}Twr?3} zMG(-KVyeCT&UjVicgg-NE@GN=DKAW@1zjD3zqggT>WPOqXK6a*HA(U%`Q-^?%QNdz M>|NJq=D?r-0Tclc1poj5 diff --git a/public/ueditor/themes/default/images/word.gif b/public/ueditor/themes/default/images/word.gif deleted file mode 100644 index 9ef5d09b7b30c4f3225f77788462e429cc494b9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1019 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 bp?H9uNI6(~=EJQ&zcn<}bW|&qZNmQtXU+rA diff --git a/public/ueditor/themes/iframe.css b/public/ueditor/themes/iframe.css deleted file mode 100644 index 774013a..0000000 --- a/public/ueditor/themes/iframe.css +++ /dev/null @@ -1 +0,0 @@ -/*可以在这里添加你自己的css*/ diff --git a/public/ueditor/third-party/SyntaxHighlighter/shCore.js b/public/ueditor/third-party/SyntaxHighlighter/shCore.js deleted file mode 100644 index 3249184..0000000 --- a/public/ueditor/third-party/SyntaxHighlighter/shCore.js +++ /dev/null @@ -1,3655 +0,0 @@ -// XRegExp 1.5.1 -// (c) 2007-2012 Steven Levithan -// MIT License -// -// Provides an augmented, extensible, cross-browser implementation of regular expressions, -// including support for additional syntax, flags, and methods - -var XRegExp; - -if (XRegExp) { - // Avoid running twice, since that would break references to native globals - throw Error("can't load XRegExp twice in the same frame"); -} - -// Run within an anonymous function to protect variables and avoid new globals -(function (undefined) { - - //--------------------------------- - // Constructor - //--------------------------------- - - // Accepts a pattern and flags; returns a new, extended `RegExp` object. Differs from a native - // regular expression in that additional syntax and flags are supported and cross-browser - // syntax inconsistencies are ameliorated. `XRegExp(/regex/)` clones an existing regex and - // converts to type XRegExp - XRegExp = function (pattern, flags) { - var output = [], - currScope = XRegExp.OUTSIDE_CLASS, - pos = 0, - context, tokenResult, match, chr, regex; - - if (XRegExp.isRegExp(pattern)) { - if (flags !== undefined) - throw TypeError("can't supply flags when constructing one RegExp from another"); - return clone(pattern); - } - // Tokens become part of the regex construction process, so protect against infinite - // recursion when an XRegExp is constructed within a token handler or trigger - if (isInsideConstructor) - throw Error("can't call the XRegExp constructor within token definition functions"); - - flags = flags || ""; - context = { // `this` object for custom tokens - hasNamedCapture: false, - captureNames: [], - hasFlag: function (flag) {return flags.indexOf(flag) > -1;}, - setFlag: function (flag) {flags += flag;} - }; - - while (pos < pattern.length) { - // Check for custom tokens at the current position - tokenResult = runTokens(pattern, pos, currScope, context); - - if (tokenResult) { - output.push(tokenResult.output); - pos += (tokenResult.match[0].length || 1); - } else { - // Check for native multicharacter metasequences (excluding character classes) at - // the current position - if (match = nativ.exec.call(nativeTokens[currScope], pattern.slice(pos))) { - output.push(match[0]); - pos += match[0].length; - } else { - chr = pattern.charAt(pos); - if (chr === "[") - currScope = XRegExp.INSIDE_CLASS; - else if (chr === "]") - currScope = XRegExp.OUTSIDE_CLASS; - // Advance position one character - output.push(chr); - pos++; - } - } - } - - regex = RegExp(output.join(""), nativ.replace.call(flags, flagClip, "")); - regex._xregexp = { - source: pattern, - captureNames: context.hasNamedCapture ? context.captureNames : null - }; - return regex; - }; - - - //--------------------------------- - // Public properties - //--------------------------------- - - XRegExp.version = "1.5.1"; - - // Token scope bitflags - XRegExp.INSIDE_CLASS = 1; - XRegExp.OUTSIDE_CLASS = 2; - - - //--------------------------------- - // Private variables - //--------------------------------- - - var replacementToken = /\$(?:(\d\d?|[$&`'])|{([$\w]+)})/g, - flagClip = /[^gimy]+|([\s\S])(?=[\s\S]*\1)/g, // Nonnative and duplicate flags - quantifier = /^(?:[?*+]|{\d+(?:,\d*)?})\??/, - isInsideConstructor = false, - tokens = [], - // Copy native globals for reference ("native" is an ES3 reserved keyword) - nativ = { - exec: RegExp.prototype.exec, - test: RegExp.prototype.test, - match: String.prototype.match, - replace: String.prototype.replace, - split: String.prototype.split - }, - compliantExecNpcg = nativ.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups - compliantLastIndexIncrement = function () { - var x = /^/g; - nativ.test.call(x, ""); - return !x.lastIndex; - }(), - hasNativeY = RegExp.prototype.sticky !== undefined, - nativeTokens = {}; - - // `nativeTokens` match native multicharacter metasequences only (including deprecated octals, - // excluding character classes) - nativeTokens[XRegExp.INSIDE_CLASS] = /^(?:\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S]))/; - nativeTokens[XRegExp.OUTSIDE_CLASS] = /^(?:\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??)/; - - - //--------------------------------- - // Public methods - //--------------------------------- - - // Lets you extend or change XRegExp syntax and create custom flags. This is used internally by - // the XRegExp library and can be used to create XRegExp plugins. This function is intended for - // users with advanced knowledge of JavaScript's regular expression syntax and behavior. It can - // be disabled by `XRegExp.freezeTokens` - XRegExp.addToken = function (regex, handler, scope, trigger) { - tokens.push({ - pattern: clone(regex, "g" + (hasNativeY ? "y" : "")), - handler: handler, - scope: scope || XRegExp.OUTSIDE_CLASS, - trigger: trigger || null - }); - }; - - // Accepts a pattern and flags; returns an extended `RegExp` object. If the pattern and flag - // combination has previously been cached, the cached copy is returned; otherwise the newly - // created regex is cached - XRegExp.cache = function (pattern, flags) { - var key = pattern + "/" + (flags || ""); - return XRegExp.cache[key] || (XRegExp.cache[key] = XRegExp(pattern, flags)); - }; - - // Accepts a `RegExp` instance; returns a copy with the `/g` flag set. The copy has a fresh - // `lastIndex` (set to zero). If you want to copy a regex without forcing the `global` - // property, use `XRegExp(regex)`. Do not use `RegExp(regex)` because it will not preserve - // special properties required for named capture - XRegExp.copyAsGlobal = function (regex) { - return clone(regex, "g"); - }; - - // Accepts a string; returns the string with regex metacharacters escaped. The returned string - // can safely be used at any point within a regex to match the provided literal string. Escaped - // characters are [ ] { } ( ) * + ? - . , \ ^ $ | # and whitespace - XRegExp.escape = function (str) { - return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); - }; - - // Accepts a string to search, regex to search with, position to start the search within the - // string (default: 0), and an optional Boolean indicating whether matches must start at-or- - // after the position or at the specified position only. This function ignores the `lastIndex` - // of the provided regex in its own handling, but updates the property for compatibility - XRegExp.execAt = function (str, regex, pos, anchored) { - var r2 = clone(regex, "g" + ((anchored && hasNativeY) ? "y" : "")), - match; - r2.lastIndex = pos = pos || 0; - match = r2.exec(str); // Run the altered `exec` (required for `lastIndex` fix, etc.) - if (anchored && match && match.index !== pos) - match = null; - if (regex.global) - regex.lastIndex = match ? r2.lastIndex : 0; - return match; - }; - - // Breaks the unrestorable link to XRegExp's private list of tokens, thereby preventing - // syntax and flag changes. Should be run after XRegExp and any plugins are loaded - XRegExp.freezeTokens = function () { - XRegExp.addToken = function () { - throw Error("can't run addToken after freezeTokens"); - }; - }; - - // Accepts any value; returns a Boolean indicating whether the argument is a `RegExp` object. - // Note that this is also `true` for regex literals and regexes created by the `XRegExp` - // constructor. This works correctly for variables created in another frame, when `instanceof` - // and `constructor` checks would fail to work as intended - XRegExp.isRegExp = function (o) { - return Object.prototype.toString.call(o) === "[object RegExp]"; - }; - - // Executes `callback` once per match within `str`. Provides a simpler and cleaner way to - // iterate over regex matches compared to the traditional approaches of subverting - // `String.prototype.replace` or repeatedly calling `exec` within a `while` loop - XRegExp.iterate = function (str, regex, callback, context) { - var r2 = clone(regex, "g"), - i = -1, match; - while (match = r2.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) - if (regex.global) - regex.lastIndex = r2.lastIndex; // Doing this to follow expectations if `lastIndex` is checked within `callback` - callback.call(context, match, ++i, str, regex); - if (r2.lastIndex === match.index) - r2.lastIndex++; - } - if (regex.global) - regex.lastIndex = 0; - }; - - // Accepts a string and an array of regexes; returns the result of using each successive regex - // to search within the matches of the previous regex. The array of regexes can also contain - // objects with `regex` and `backref` properties, in which case the named or numbered back- - // references specified are passed forward to the next regex or returned. E.g.: - // var xregexpImgFileNames = XRegExp.matchChain(html, [ - // {regex: /]+)>/i, backref: 1}, // tag attributes - // {regex: XRegExp('(?ix) \\s src=" (? [^"]+ )'), backref: "src"}, // src attribute values - // {regex: XRegExp("^http://xregexp\\.com(/[^#?]+)", "i"), backref: 1}, // xregexp.com paths - // /[^\/]+$/ // filenames (strip directory paths) - // ]); - XRegExp.matchChain = function (str, chain) { - return function recurseChain (values, level) { - var item = chain[level].regex ? chain[level] : {regex: chain[level]}, - regex = clone(item.regex, "g"), - matches = [], i; - for (i = 0; i < values.length; i++) { - XRegExp.iterate(values[i], regex, function (match) { - matches.push(item.backref ? (match[item.backref] || "") : match[0]); - }); - } - return ((level === chain.length - 1) || !matches.length) ? - matches : recurseChain(matches, level + 1); - }([str], 0); - }; - - - //--------------------------------- - // New RegExp prototype methods - //--------------------------------- - - // Accepts a context object and arguments array; returns the result of calling `exec` with the - // first value in the arguments array. the context is ignored but is accepted for congruity - // with `Function.prototype.apply` - RegExp.prototype.apply = function (context, args) { - return this.exec(args[0]); - }; - - // Accepts a context object and string; returns the result of calling `exec` with the provided - // string. the context is ignored but is accepted for congruity with `Function.prototype.call` - RegExp.prototype.call = function (context, str) { - return this.exec(str); - }; - - - //--------------------------------- - // Overriden native methods - //--------------------------------- - - // Adds named capture support (with backreferences returned as `result.name`), and fixes two - // cross-browser issues per ES3: - // - Captured values for nonparticipating capturing groups should be returned as `undefined`, - // rather than the empty string. - // - `lastIndex` should not be incremented after zero-length matches. - RegExp.prototype.exec = function (str) { - var match, name, r2, origLastIndex; - if (!this.global) - origLastIndex = this.lastIndex; - match = nativ.exec.apply(this, arguments); - if (match) { - // Fix browsers whose `exec` methods don't consistently return `undefined` for - // nonparticipating capturing groups - if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) { - r2 = RegExp(this.source, nativ.replace.call(getNativeFlags(this), "g", "")); - // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed - // matching due to characters outside the match - nativ.replace.call((str + "").slice(match.index), r2, function () { - for (var i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) - match[i] = undefined; - } - }); - } - // Attach named capture properties - if (this._xregexp && this._xregexp.captureNames) { - for (var i = 1; i < match.length; i++) { - name = this._xregexp.captureNames[i - 1]; - if (name) - match[name] = match[i]; - } - } - // Fix browsers that increment `lastIndex` after zero-length matches - if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) - this.lastIndex--; - } - if (!this.global) - this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) - return match; - }; - - // Fix browser bugs in native method - RegExp.prototype.test = function (str) { - // Use the native `exec` to skip some processing overhead, even though the altered - // `exec` would take care of the `lastIndex` fixes - var match, origLastIndex; - if (!this.global) - origLastIndex = this.lastIndex; - match = nativ.exec.call(this, str); - // Fix browsers that increment `lastIndex` after zero-length matches - if (match && !compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) - this.lastIndex--; - if (!this.global) - this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) - return !!match; - }; - - // Adds named capture support and fixes browser bugs in native method - String.prototype.match = function (regex) { - if (!XRegExp.isRegExp(regex)) - regex = RegExp(regex); // Native `RegExp` - if (regex.global) { - var result = nativ.match.apply(this, arguments); - regex.lastIndex = 0; // Fix IE bug - return result; - } - return regex.exec(this); // Run the altered `exec` - }; - - // Adds support for `${n}` tokens for named and numbered backreferences in replacement text, - // and provides named backreferences to replacement functions as `arguments[0].name`. Also - // fixes cross-browser differences in replacement text syntax when performing a replacement - // using a nonregex search value, and the value of replacement regexes' `lastIndex` property - // during replacement iterations. Note that this doesn't support SpiderMonkey's proprietary - // third (`flags`) parameter - String.prototype.replace = function (search, replacement) { - var isRegex = XRegExp.isRegExp(search), - captureNames, result, str, origLastIndex; - - // There are too many combinations of search/replacement types/values and browser bugs that - // preclude passing to native `replace`, so don't try - //if (...) - // return nativ.replace.apply(this, arguments); - - if (isRegex) { - if (search._xregexp) - captureNames = search._xregexp.captureNames; // Array or `null` - if (!search.global) - origLastIndex = search.lastIndex; - } else { - search = search + ""; // Type conversion - } - - if (Object.prototype.toString.call(replacement) === "[object Function]") { - result = nativ.replace.call(this + "", search, function () { - if (captureNames) { - // Change the `arguments[0]` string primitive to a String object which can store properties - arguments[0] = new String(arguments[0]); - // Store named backreferences on `arguments[0]` - for (var i = 0; i < captureNames.length; i++) { - if (captureNames[i]) - arguments[0][captureNames[i]] = arguments[i + 1]; - } - } - // Update `lastIndex` before calling `replacement` (fix browsers) - if (isRegex && search.global) - search.lastIndex = arguments[arguments.length - 2] + arguments[0].length; - return replacement.apply(null, arguments); - }); - } else { - str = this + ""; // Type conversion, so `args[args.length - 1]` will be a string (given nonstring `this`) - result = nativ.replace.call(str, search, function () { - var args = arguments; // Keep this function's `arguments` available through closure - return nativ.replace.call(replacement + "", replacementToken, function ($0, $1, $2) { - // Numbered backreference (without delimiters) or special variable - if ($1) { - switch ($1) { - case "$": return "$"; - case "&": return args[0]; - case "`": return args[args.length - 1].slice(0, args[args.length - 2]); - case "'": return args[args.length - 1].slice(args[args.length - 2] + args[0].length); - // Numbered backreference - default: - // What does "$10" mean? - // - Backreference 10, if 10 or more capturing groups exist - // - Backreference 1 followed by "0", if 1-9 capturing groups exist - // - Otherwise, it's the string "$10" - // Also note: - // - Backreferences cannot be more than two digits (enforced by `replacementToken`) - // - "$01" is equivalent to "$1" if a capturing group exists, otherwise it's the string "$01" - // - There is no "$0" token ("$&" is the entire match) - var literalNumbers = ""; - $1 = +$1; // Type conversion; drop leading zero - if (!$1) // `$1` was "0" or "00" - return $0; - while ($1 > args.length - 3) { - literalNumbers = String.prototype.slice.call($1, -1) + literalNumbers; - $1 = Math.floor($1 / 10); // Drop the last digit - } - return ($1 ? args[$1] || "" : "$") + literalNumbers; - } - // Named backreference or delimited numbered backreference - } else { - // What does "${n}" mean? - // - Backreference to numbered capture n. Two differences from "$n": - // - n can be more than two digits - // - Backreference 0 is allowed, and is the entire match - // - Backreference to named capture n, if it exists and is not a number overridden by numbered capture - // - Otherwise, it's the string "${n}" - var n = +$2; // Type conversion; drop leading zeros - if (n <= args.length - 3) - return args[n]; - n = captureNames ? indexOf(captureNames, $2) : -1; - return n > -1 ? args[n + 1] : $0; - } - }); - }); - } - - if (isRegex) { - if (search.global) - search.lastIndex = 0; // Fix IE, Safari bug (last tested IE 9.0.5, Safari 5.1.2 on Windows) - else - search.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) - } - - return result; - }; - - // A consistent cross-browser, ES3 compliant `split` - String.prototype.split = function (s /* separator */, limit) { - // If separator `s` is not a regex, use the native `split` - if (!XRegExp.isRegExp(s)) - return nativ.split.apply(this, arguments); - - var str = this + "", // Type conversion - output = [], - lastLastIndex = 0, - match, lastLength; - - // Behavior for `limit`: if it's... - // - `undefined`: No limit - // - `NaN` or zero: Return an empty array - // - A positive number: Use `Math.floor(limit)` - // - A negative number: No limit - // - Other: Type-convert, then use the above rules - if (limit === undefined || +limit < 0) { - limit = Infinity; - } else { - limit = Math.floor(+limit); - if (!limit) - return []; - } - - // This is required if not `s.global`, and it avoids needing to set `s.lastIndex` to zero - // and restore it to its original value when we're done using the regex - s = XRegExp.copyAsGlobal(s); - - while (match = s.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) - if (s.lastIndex > lastLastIndex) { - output.push(str.slice(lastLastIndex, match.index)); - - if (match.length > 1 && match.index < str.length) - Array.prototype.push.apply(output, match.slice(1)); - - lastLength = match[0].length; - lastLastIndex = s.lastIndex; - - if (output.length >= limit) - break; - } - - if (s.lastIndex === match.index) - s.lastIndex++; - } - - if (lastLastIndex === str.length) { - if (!nativ.test.call(s, "") || lastLength) - output.push(""); - } else { - output.push(str.slice(lastLastIndex)); - } - - return output.length > limit ? output.slice(0, limit) : output; - }; - - - //--------------------------------- - // Private helper functions - //--------------------------------- - - // Supporting function for `XRegExp`, `XRegExp.copyAsGlobal`, etc. Returns a copy of a `RegExp` - // instance with a fresh `lastIndex` (set to zero), preserving properties required for named - // capture. Also allows adding new flags in the process of copying the regex - function clone (regex, additionalFlags) { - if (!XRegExp.isRegExp(regex)) - throw TypeError("type RegExp expected"); - var x = regex._xregexp; - regex = XRegExp(regex.source, getNativeFlags(regex) + (additionalFlags || "")); - if (x) { - regex._xregexp = { - source: x.source, - captureNames: x.captureNames ? x.captureNames.slice(0) : null - }; - } - return regex; - } - - function getNativeFlags (regex) { - return (regex.global ? "g" : "") + - (regex.ignoreCase ? "i" : "") + - (regex.multiline ? "m" : "") + - (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3 - (regex.sticky ? "y" : ""); - } - - function runTokens (pattern, index, scope, context) { - var i = tokens.length, - result, match, t; - // Protect against constructing XRegExps within token handler and trigger functions - isInsideConstructor = true; - // Must reset `isInsideConstructor`, even if a `trigger` or `handler` throws - try { - while (i--) { // Run in reverse order - t = tokens[i]; - if ((scope & t.scope) && (!t.trigger || t.trigger.call(context))) { - t.pattern.lastIndex = index; - match = t.pattern.exec(pattern); // Running the altered `exec` here allows use of named backreferences, etc. - if (match && match.index === index) { - result = { - output: t.handler.call(context, match, scope), - match: match - }; - break; - } - } - } - } catch (err) { - throw err; - } finally { - isInsideConstructor = false; - } - return result; - } - - function indexOf (array, item, from) { - if (Array.prototype.indexOf) // Use the native array method if available - return array.indexOf(item, from); - for (var i = from || 0; i < array.length; i++) { - if (array[i] === item) - return i; - } - return -1; - } - - - //--------------------------------- - // Built-in tokens - //--------------------------------- - - // Augment XRegExp's regular expression syntax and flags. Note that when adding tokens, the - // third (`scope`) argument defaults to `XRegExp.OUTSIDE_CLASS` - - // Comment pattern: (?# ) - XRegExp.addToken( - /\(\?#[^)]*\)/, - function (match) { - // Keep tokens separated unless the following token is a quantifier - return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; - } - ); - - // Capturing group (match the opening parenthesis only). - // Required for support of named capturing groups - XRegExp.addToken( - /\((?!\?)/, - function () { - this.captureNames.push(null); - return "("; - } - ); - - // Named capturing group (match the opening delimiter only): (? - XRegExp.addToken( - /\(\?<([$\w]+)>/, - function (match) { - this.captureNames.push(match[1]); - this.hasNamedCapture = true; - return "("; - } - ); - - // Named backreference: \k - XRegExp.addToken( - /\\k<([\w$]+)>/, - function (match) { - var index = indexOf(this.captureNames, match[1]); - // Keep backreferences separate from subsequent literal numbers. Preserve back- - // references to named groups that are undefined at this point as literal strings - return index > -1 ? - "\\" + (index + 1) + (isNaN(match.input.charAt(match.index + match[0].length)) ? "" : "(?:)") : - match[0]; - } - ); - - // Empty character class: [] or [^] - XRegExp.addToken( - /\[\^?]/, - function (match) { - // For cross-browser compatibility with ES3, convert [] to \b\B and [^] to [\s\S]. - // (?!) should work like \b\B, but is unreliable in Firefox - return match[0] === "[]" ? "\\b\\B" : "[\\s\\S]"; - } - ); - - // Mode modifier at the start of the pattern only, with any combination of flags imsx: (?imsx) - // Does not support x(?i), (?-i), (?i-m), (?i: ), (?i)(?m), etc. - XRegExp.addToken( - /^\(\?([imsx]+)\)/, - function (match) { - this.setFlag(match[1]); - return ""; - } - ); - - // Whitespace and comments, in free-spacing (aka extended) mode only - XRegExp.addToken( - /(?:\s+|#.*)+/, - function (match) { - // Keep tokens separated unless the following token is a quantifier - return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; - }, - XRegExp.OUTSIDE_CLASS, - function () {return this.hasFlag("x");} - ); - - // Dot, in dotall (aka singleline) mode only - XRegExp.addToken( - /\./, - function () {return "[\\s\\S]";}, - XRegExp.OUTSIDE_CLASS, - function () {return this.hasFlag("s");} - ); - - - //--------------------------------- - // Backward compatibility - //--------------------------------- - - // Uncomment the following block for compatibility with XRegExp 1.0-1.2: - /* - XRegExp.matchWithinChain = XRegExp.matchChain; - RegExp.prototype.addFlags = function (s) {return clone(this, s);}; - RegExp.prototype.execAll = function (s) {var r = []; XRegExp.iterate(s, this, function (m) {r.push(m);}); return r;}; - RegExp.prototype.forEachExec = function (s, f, c) {return XRegExp.iterate(s, this, f, c);}; - RegExp.prototype.validate = function (s) {var r = RegExp("^(?:" + this.source + ")$(?!\\s)", getNativeFlags(this)); if (this.global) this.lastIndex = 0; return s.search(r) === 0;}; - */ - -})(); - -// -// Begin anonymous function. This is used to contain local scope variables without polutting global scope. -// -if (typeof(SyntaxHighlighter) == 'undefined') var SyntaxHighlighter = function() { - -// CommonJS - if (typeof(require) != 'undefined' && typeof(XRegExp) == 'undefined') - { - XRegExp = require('XRegExp').XRegExp; - } - -// Shortcut object which will be assigned to the SyntaxHighlighter variable. -// This is a shorthand for local reference in order to avoid long namespace -// references to SyntaxHighlighter.whatever... - var sh = { - defaults : { - /** Additional CSS class names to be added to highlighter elements. */ - 'class-name' : '', - - /** First line number. */ - 'first-line' : 1, - - /** - * Pads line numbers. Possible values are: - * - * false - don't pad line numbers. - * true - automaticaly pad numbers with minimum required number of leading zeroes. - * [int] - length up to which pad line numbers. - */ - 'pad-line-numbers' : false, - - /** Lines to highlight. */ - 'highlight' : false, - - /** Title to be displayed above the code block. */ - 'title' : null, - - /** Enables or disables smart tabs. */ - 'smart-tabs' : true, - - /** Gets or sets tab size. */ - 'tab-size' : 4, - - /** Enables or disables gutter. */ - 'gutter' : true, - - /** Enables or disables toolbar. */ - 'toolbar' : true, - - /** Enables quick code copy and paste from double click. */ - 'quick-code' : true, - - /** Forces code view to be collapsed. */ - 'collapse' : false, - - /** Enables or disables automatic links. */ - 'auto-links' : false, - - /** Gets or sets light mode. Equavalent to turning off gutter and toolbar. */ - 'light' : false, - - 'unindent' : true, - - 'html-script' : false - }, - - config : { - space : ' ', - - /** Enables use of - * - * ``` - */ - findParent: function(node, filterFn, includeSelf) { - if (node && !domUtils.isBody(node)) { - node = includeSelf ? node : node.parentNode; - while (node) { - if (!filterFn || filterFn(node) || domUtils.isBody(node)) { - return filterFn && !filterFn(node) && domUtils.isBody(node) - ? null - : node; - } - node = node.parentNode; - } - } - return null; - }, - /** - * 查找node的节点名为tagName的第一个祖先节点, 查找的起点是node节点的父节点。 - * @method findParentByTagName - * @param { Node } node 需要查找的节点对象 - * @param { Array } tagNames 需要查找的父节点的名称数组 - * @warning 查找的终点是到body节点为止 - * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL - * @example - * ```javascript - * var node = UE.dom.domUtils.findParentByTagName( document.getElementsByTagName("div")[0], [ "BODY" ] ); - * //output: BODY - * console.log( node.tagName ); - * ``` - */ - - /** - * 查找node的节点名为tagName的祖先节点, 如果includeSelf的值为true,则查找的起点是给定的节点node, - * 否则, 起点是node的父节点。 - * @method findParentByTagName - * @param { Node } node 需要查找的节点对象 - * @param { Array } tagNames 需要查找的父节点的名称数组 - * @param { Boolean } includeSelf 查找过程是否包含node节点自身 - * @warning 查找的终点是到body节点为止 - * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL - * @example - * ```javascript - * var queryTarget = document.getElementsByTagName("div")[0]; - * var node = UE.dom.domUtils.findParentByTagName( queryTarget, [ "DIV" ], true ); - * //output: true - * console.log( queryTarget === node ); - * ``` - */ - findParentByTagName: function(node, tagNames, includeSelf, excludeFn) { - tagNames = utils.listToMap(utils.isArray(tagNames) ? tagNames : [tagNames]); - return domUtils.findParent( - node, - function(node) { - return tagNames[node.tagName] && !(excludeFn && excludeFn(node)); - }, - includeSelf - ); - }, - /** - * 查找节点node的祖先节点集合, 查找的起点是给定节点的父节点,结果集中不包含给定的节点。 - * @method findParents - * @param { Node } node 需要查找的节点对象 - * @return { Array } 给定节点的祖先节点数组 - * @grammar UE.dom.domUtils.findParents(node) => Array //返回一个祖先节点数组集合,不包含自身 - * @grammar UE.dom.domUtils.findParents(node,includeSelf) => Array //返回一个祖先节点数组集合,includeSelf指定是否包含自身 - * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn) => Array //返回一个祖先节点数组集合,filterFn指定过滤条件,返回true的node将被选取 - * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn,closerFirst) => Array //返回一个祖先节点数组集合,closerFirst为true的话,node的直接父亲节点是数组的第0个 - */ - - /** - * 查找节点node的祖先节点集合, 如果includeSelf的值为true, - * 则返回的结果集中允许出现当前给定的节点, 否则, 该节点不会出现在其结果集中。 - * @method findParents - * @param { Node } node 需要查找的节点对象 - * @param { Boolean } includeSelf 查找的结果中是否允许包含当前查找的节点对象 - * @return { Array } 给定节点的祖先节点数组 - */ - findParents: function(node, includeSelf, filterFn, closerFirst) { - var parents = includeSelf && ((filterFn && filterFn(node)) || !filterFn) - ? [node] - : []; - while ((node = domUtils.findParent(node, filterFn))) { - parents.push(node); - } - return closerFirst ? parents : parents.reverse(); - }, - - /** - * 在节点node后面插入新节点newNode - * @method insertAfter - * @param { Node } node 目标节点 - * @param { Node } newNode 新插入的节点, 该节点将置于目标节点之后 - * @return { Node } 新插入的节点 - */ - insertAfter: function(node, newNode) { - return node.nextSibling - ? node.parentNode.insertBefore(newNode, node.nextSibling) - : node.parentNode.appendChild(newNode); - }, - - /** - * 删除节点node及其下属的所有节点 - * @method remove - * @param { Node } node 需要删除的节点对象 - * @return { Node } 返回刚删除的节点对象 - * @example - * ```html - *

    - *
    你好
    - *
    - * - * ``` - */ - - /** - * 删除节点node,并根据keepChildren的值决定是否保留子节点 - * @method remove - * @param { Node } node 需要删除的节点对象 - * @param { Boolean } keepChildren 是否需要保留子节点 - * @return { Node } 返回刚删除的节点对象 - * @example - * ```html - *
    - *
    你好
    - *
    - * - * ``` - */ - remove: function(node, keepChildren) { - var parent = node.parentNode, - child; - if (parent) { - if (keepChildren && node.hasChildNodes()) { - while ((child = node.firstChild)) { - parent.insertBefore(child, node); - } - } - parent.removeChild(node); - } - return node; - }, - - /** - * 取得node节点的下一个兄弟节点, 如果该节点其后没有兄弟节点, 则递归查找其父节点之后的第一个兄弟节点, - * 直到找到满足条件的节点或者递归到BODY节点之后才会结束。 - * @method getNextDomNode - * @param { Node } node 需要获取其后的兄弟节点的节点对象 - * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL - * @example - * ```html - * - *
    - * - *
    - * xxx - * - * - * ``` - * @example - * ```html - * - *
    - * - * xxx - *
    - * xxx - * - * - * ``` - */ - - /** - * 取得node节点的下一个兄弟节点, 如果startFromChild的值为ture,则先获取其子节点, - * 如果有子节点则直接返回第一个子节点;如果没有子节点或者startFromChild的值为false, - * 则执行
    getNextDomNode(Node node)的查找过程。 - * @method getNextDomNode - * @param { Node } node 需要获取其后的兄弟节点的节点对象 - * @param { Boolean } startFromChild 查找过程是否从其子节点开始 - * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL - * @see UE.dom.domUtils.getNextDomNode(Node) - */ - getNextDomNode: function(node, startFromChild, filterFn, guard) { - return getDomNode( - node, - "firstChild", - "nextSibling", - startFromChild, - filterFn, - guard - ); - }, - getPreDomNode: function(node, startFromChild, filterFn, guard) { - return getDomNode( - node, - "lastChild", - "previousSibling", - startFromChild, - filterFn, - guard - ); - }, - /** - * 检测节点node是否属是UEditor定义的bookmark节点 - * @method isBookmarkNode - * @private - * @param { Node } node 需要检测的节点对象 - * @return { Boolean } 是否是bookmark节点 - * @example - * ```html - * - * - * ``` - */ - isBookmarkNode: function(node) { - return node.nodeType == 1 && node.id && /^_baidu_bookmark_/i.test(node.id); - }, - /** - * 获取节点node所属的window对象 - * @method getWindow - * @param { Node } node 节点对象 - * @return { Window } 当前节点所属的window对象 - * @example - * ```javascript - * //output: true - * console.log( UE.dom.domUtils.getWindow( document.body ) === window ); - * ``` - */ - getWindow: function(node) { - var doc = node.ownerDocument || node; - return doc.defaultView || doc.parentWindow; - }, - /** - * 获取离nodeA与nodeB最近的公共的祖先节点 - * @method getCommonAncestor - * @param { Node } nodeA 第一个节点 - * @param { Node } nodeB 第二个节点 - * @remind 如果给定的两个节点是同一个节点, 将直接返回该节点。 - * @return { Node | NULL } 如果未找到公共节点, 返回NULL, 否则返回最近的公共祖先节点。 - * @example - * ```javascript - * var commonAncestor = UE.dom.domUtils.getCommonAncestor( document.body, document.body.firstChild ); - * //output: true - * console.log( commonAncestor.tagName.toLowerCase() === 'body' ); - * ``` - */ - getCommonAncestor: function(nodeA, nodeB) { - if (nodeA === nodeB) return nodeA; - var parentsA = [nodeA], - parentsB = [nodeB], - parent = nodeA, - i = -1; - while ((parent = parent.parentNode)) { - if (parent === nodeB) { - return parent; - } - parentsA.push(parent); - } - parent = nodeB; - while ((parent = parent.parentNode)) { - if (parent === nodeA) return parent; - parentsB.push(parent); - } - parentsA.reverse(); - parentsB.reverse(); - while ((i++, parentsA[i] === parentsB[i])) {} - return i == 0 ? null : parentsA[i - 1]; - }, - /** - * 清除node节点左右连续为空的兄弟inline节点 - * @method clearEmptySibling - * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, - * 则这些兄弟节点将被删除 - * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext) //ignoreNext指定是否忽略右边空节点 - * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext,ignorePre) //ignorePre指定是否忽略左边空节点 - * @example - * ```html - * - *
    - * - * - * - * xxx - * - * - * - * ``` - */ - - /** - * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true, - * 则忽略对右边兄弟节点的操作。 - * @method clearEmptySibling - * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, - * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作 - * 则这些兄弟节点将被删除 - * @see UE.dom.domUtils.clearEmptySibling(Node) - */ - - /** - * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true, - * 则忽略对右边兄弟节点的操作, 如果ignorePre的值为true,则忽略对左边兄弟节点的操作。 - * @method clearEmptySibling - * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, - * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作 - * @param { Boolean } ignorePre 是否忽略忽略对左边的兄弟节点的操作 - * 则这些兄弟节点将被删除 - * @see UE.dom.domUtils.clearEmptySibling(Node) - */ - clearEmptySibling: function(node, ignoreNext, ignorePre) { - function clear(next, dir) { - var tmpNode; - while ( - next && - !domUtils.isBookmarkNode(next) && - (domUtils.isEmptyInlineElement(next) || - //这里不能把空格算进来会吧空格干掉,出现文字间的空格丢掉了 - !new RegExp("[^\t\n\r" + domUtils.fillChar + "]").test( - next.nodeValue - )) - ) { - tmpNode = next[dir]; - domUtils.remove(next); - next = tmpNode; - } - } - !ignoreNext && clear(node.nextSibling, "nextSibling"); - !ignorePre && clear(node.previousSibling, "previousSibling"); - }, - /** - * 将一个文本节点textNode拆分成两个文本节点,offset指定拆分位置 - * @method split - * @param { Node } textNode 需要拆分的文本节点对象 - * @param { int } offset 需要拆分的位置, 位置计算从0开始 - * @return { Node } 拆分后形成的新节点 - * @example - * ```html - *
    abcdef
    - * - * ``` - */ - split: function(node, offset) { - var doc = node.ownerDocument; - if (browser.ie && offset == node.nodeValue.length) { - var next = doc.createTextNode(""); - return domUtils.insertAfter(node, next); - } - var retval = node.splitText(offset); - //ie8下splitText不会跟新childNodes,我们手动触发他的更新 - if (browser.ie8) { - var tmpNode = doc.createTextNode(""); - domUtils.insertAfter(retval, tmpNode); - domUtils.remove(tmpNode); - } - return retval; - }, - - /** - * 检测文本节点textNode是否为空节点(包括空格、换行、占位符等字符) - * @method isWhitespace - * @param { Node } node 需要检测的节点对象 - * @return { Boolean } 检测的节点是否为空 - * @example - * ```html - *
    - * - *
    - * - * ``` - */ - isWhitespace: function(node) { - return !new RegExp("[^ \t\n\r" + domUtils.fillChar + "]").test( - node.nodeValue - ); - }, - /** - * 获取元素element相对于viewport的位置坐标 - * @method getXY - * @param { Node } element 需要计算位置的节点对象 - * @return { Object } 返回形如{x:left,y:top}的一个key-value映射对象, 其中键x代表水平偏移距离, - * y代表垂直偏移距离。 - * - * @example - * ```javascript - * var location = UE.dom.domUtils.getXY( document.getElementById("test") ); - * //output: test的坐标为: 12, 24 - * console.log( 'test的坐标为: ', location.x, ',', location.y ); - * ``` - */ - getXY: function(element) { - var x = 0, - y = 0; - while (element.offsetParent) { - y += element.offsetTop; - x += element.offsetLeft; - element = element.offsetParent; - } - return { x: x, y: y }; - }, - /** - * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数 - * @method on - * @param { Node } element 需要绑定事件的节点对象 - * @param { String } type 绑定的事件类型 - * @param { Function } handler 事件处理器 - * @example - * ```javascript - * UE.dom.domUtils.on(document.body,"click",function(e){ - * //e为事件对象,this为被点击元素对戏那个 - * }); - * ``` - */ - - /** - * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数 - * @method on - * @param { Node } element 需要绑定事件的节点对象 - * @param { Array } type 绑定的事件类型数组 - * @param { Function } handler 事件处理器 - * @example - * ```javascript - * UE.dom.domUtils.on(document.body,["click","mousedown"],function(evt){ - * //evt为事件对象,this为被点击元素对象 - * }); - * ``` - */ - on: function(element, type, handler) { - var types = utils.isArray(type) ? type : utils.trim(type).split(/\s+/), - k = types.length; - if (k) - while (k--) { - type = types[k]; - if (element.addEventListener) { - element.addEventListener(type, handler, false); - } else { - if (!handler._d) { - handler._d = { - els: [] - }; - } - var key = type + handler.toString(), - index = utils.indexOf(handler._d.els, element); - if (!handler._d[key] || index == -1) { - if (index == -1) { - handler._d.els.push(element); - } - if (!handler._d[key]) { - handler._d[key] = function(evt) { - return handler.call(evt.srcElement, evt || window.event); - }; - } - - element.attachEvent("on" + type, handler._d[key]); - } - } - } - element = null; - }, - /** - * 解除DOM事件绑定 - * @method un - * @param { Node } element 需要解除事件绑定的节点对象 - * @param { String } type 需要接触绑定的事件类型 - * @param { Function } handler 对应的事件处理器 - * @example - * ```javascript - * UE.dom.domUtils.un(document.body,"click",function(evt){ - * //evt为事件对象,this为被点击元素对象 - * }); - * ``` - */ - - /** - * 解除DOM事件绑定 - * @method un - * @param { Node } element 需要解除事件绑定的节点对象 - * @param { Array } type 需要接触绑定的事件类型数组 - * @param { Function } handler 对应的事件处理器 - * @example - * ```javascript - * UE.dom.domUtils.un(document.body, ["click","mousedown"],function(evt){ - * //evt为事件对象,this为被点击元素对象 - * }); - * ``` - */ - un: function(element, type, handler) { - var types = utils.isArray(type) ? type : utils.trim(type).split(/\s+/), - k = types.length; - if (k) - while (k--) { - type = types[k]; - if (element.removeEventListener) { - element.removeEventListener(type, handler, false); - } else { - var key = type + handler.toString(); - try { - element.detachEvent( - "on" + type, - handler._d ? handler._d[key] : handler - ); - } catch (e) {} - if (handler._d && handler._d[key]) { - var index = utils.indexOf(handler._d.els, element); - if (index != -1) { - handler._d.els.splice(index, 1); - } - handler._d.els.length == 0 && delete handler._d[key]; - } - } - } - }, - - /** - * 比较节点nodeA与节点nodeB是否具有相同的标签名、属性名以及属性值 - * @method isSameElement - * @param { Node } nodeA 需要比较的节点 - * @param { Node } nodeB 需要比较的节点 - * @return { Boolean } 两个节点是否具有相同的标签名、属性名以及属性值 - * @example - * ```html - * ssss - * bbbbb - * ssss - * bbbbb - * - * - * ``` - */ - isSameElement: function(nodeA, nodeB) { - if (nodeA.tagName != nodeB.tagName) { - return false; - } - var thisAttrs = nodeA.attributes, - otherAttrs = nodeB.attributes; - if (!ie && thisAttrs.length != otherAttrs.length) { - return false; - } - var attrA, - attrB, - al = 0, - bl = 0; - for (var i = 0; (attrA = thisAttrs[i++]); ) { - if (attrA.nodeName == "style") { - if (attrA.specified) { - al++; - } - if (domUtils.isSameStyle(nodeA, nodeB)) { - continue; - } else { - return false; - } - } - if (ie) { - if (attrA.specified) { - al++; - attrB = otherAttrs.getNamedItem(attrA.nodeName); - } else { - continue; - } - } else { - attrB = nodeB.attributes[attrA.nodeName]; - } - if (!attrB.specified || attrA.nodeValue != attrB.nodeValue) { - return false; - } - } - // 有可能attrB的属性包含了attrA的属性之外还有自己的属性 - if (ie) { - for (i = 0; (attrB = otherAttrs[i++]); ) { - if (attrB.specified) { - bl++; - } - } - if (al != bl) { - return false; - } - } - return true; - }, - - /** - * 判断节点nodeA与节点nodeB的元素的style属性是否一致 - * @method isSameStyle - * @param { Node } nodeA 需要比较的节点 - * @param { Node } nodeB 需要比较的节点 - * @return { Boolean } 两个节点是否具有相同的style属性值 - * @example - * ```html - * ssss - * bbbbb - * ssss - * bbbbb - * - * - * ``` - */ - isSameStyle: function(nodeA, nodeB) { - var styleA = nodeA.style.cssText - .replace(/( ?; ?)/g, ";") - .replace(/( ?: ?)/g, ":"), - styleB = nodeB.style.cssText - .replace(/( ?; ?)/g, ";") - .replace(/( ?: ?)/g, ":"); - if (browser.opera) { - styleA = nodeA.style; - styleB = nodeB.style; - if (styleA.length != styleB.length) return false; - for (var p in styleA) { - if (/^(\d+|csstext)$/i.test(p)) { - continue; - } - if (styleA[p] != styleB[p]) { - return false; - } - } - return true; - } - if (!styleA || !styleB) { - return styleA == styleB; - } - styleA = styleA.split(";"); - styleB = styleB.split(";"); - if (styleA.length != styleB.length) { - return false; - } - for (var i = 0, ci; (ci = styleA[i++]); ) { - if (utils.indexOf(styleB, ci) == -1) { - return false; - } - } - return true; - }, - /** - * 检查节点node是否为block元素 - * @method isBlockElm - * @param { Node } node 需要检测的节点对象 - * @return { Boolean } 是否是block元素节点 - * @warning 该方法的判断规则如下: 如果该元素原本是block元素, 则不论该元素当前的css样式是什么都会返回true; - * 否则,检测该元素的css样式, 如果该元素当前是block元素, 则返回true。 其余情况下都返回false。 - * @example - * ```html - * - * - *
    - * - * - * ``` - */ - isBlockElm: function(node) { - return ( - node.nodeType == 1 && - (dtd.$block[node.tagName] || - styleBlock[domUtils.getComputedStyle(node, "display")]) && - !dtd.$nonChild[node.tagName] - ); - }, - /** - * 检测node节点是否为body节点 - * @method isBody - * @param { Element } node 需要检测的dom元素 - * @return { Boolean } 给定的元素是否是body元素 - * @example - * ```javascript - * //output: true - * console.log( UE.dom.domUtils.isBody( document.body ) ); - * ``` - */ - isBody: function(node) { - return node && node.nodeType == 1 && node.tagName.toLowerCase() == "body"; - }, - /** - * 以node节点为分界,将该节点的指定祖先节点parent拆分成两个独立的节点, - * 拆分形成的两个节点之间是node节点 - * @method breakParent - * @param { Node } node 作为分界的节点对象 - * @param { Node } parent 该节点必须是node节点的祖先节点, 且是block节点。 - * @return { Node } 给定的node分界节点 - * @example - * ```javascript - * - * var node = document.createElement("span"), - * wrapNode = document.createElement( "div" ), - * parent = document.createElement("p"); - * - * parent.appendChild( node ); - * wrapNode.appendChild( parent ); - * - * //拆分前 - * //output:

    - * console.log( wrapNode.innerHTML ); - * - * - * UE.dom.domUtils.breakParent( node, parent ); - * //拆分后 - * //output:

    - * console.log( wrapNode.innerHTML ); - * - * ``` - */ - breakParent: function(node, parent) { - var tmpNode, - parentClone = node, - clone = node, - leftNodes, - rightNodes; - do { - parentClone = parentClone.parentNode; - if (leftNodes) { - tmpNode = parentClone.cloneNode(false); - tmpNode.appendChild(leftNodes); - leftNodes = tmpNode; - tmpNode = parentClone.cloneNode(false); - tmpNode.appendChild(rightNodes); - rightNodes = tmpNode; - } else { - leftNodes = parentClone.cloneNode(false); - rightNodes = leftNodes.cloneNode(false); - } - while ((tmpNode = clone.previousSibling)) { - leftNodes.insertBefore(tmpNode, leftNodes.firstChild); - } - while ((tmpNode = clone.nextSibling)) { - rightNodes.appendChild(tmpNode); - } - clone = parentClone; - } while (parent !== parentClone); - tmpNode = parent.parentNode; - tmpNode.insertBefore(leftNodes, parent); - tmpNode.insertBefore(rightNodes, parent); - tmpNode.insertBefore(node, rightNodes); - domUtils.remove(parent); - return node; - }, - /** - * 检查节点node是否是空inline节点 - * @method isEmptyInlineElement - * @param { Node } node 需要检测的节点对象 - * @return { Number } 如果给定的节点是空的inline节点, 则返回1, 否则返回0。 - * @example - * ```html - * => 1 - * => 1 - * => 1 - * xx => 0 - * ``` - */ - isEmptyInlineElement: function(node) { - if (node.nodeType != 1 || !dtd.$removeEmpty[node.tagName]) { - return 0; - } - node = node.firstChild; - while (node) { - //如果是创建的bookmark就跳过 - if (domUtils.isBookmarkNode(node)) { - return 0; - } - if ( - (node.nodeType == 1 && !domUtils.isEmptyInlineElement(node)) || - (node.nodeType == 3 && !domUtils.isWhitespace(node)) - ) { - return 0; - } - node = node.nextSibling; - } - return 1; - }, - - /** - * 删除node节点下首尾两端的空白文本子节点 - * @method trimWhiteTextNode - * @param { Element } node 需要执行删除操作的元素对象 - * @example - * ```javascript - * var node = document.createElement("div"); - * - * node.appendChild( document.createTextNode( "" ) ); - * - * node.appendChild( document.createElement("div") ); - * - * node.appendChild( document.createTextNode( "" ) ); - * - * //3 - * console.log( node.childNodes.length ); - * - * UE.dom.domUtils.trimWhiteTextNode( node ); - * - * //1 - * console.log( node.childNodes.length ); - * ``` - */ - trimWhiteTextNode: function(node) { - function remove(dir) { - var child; - while ( - (child = node[dir]) && - child.nodeType == 3 && - domUtils.isWhitespace(child) - ) { - node.removeChild(child); - } - } - remove("firstChild"); - remove("lastChild"); - }, - - /** - * 合并node节点下相同的子节点 - * @name mergeChild - * @desc - * UE.dom.domUtils.mergeChild(node,tagName) //tagName要合并的子节点的标签 - * @example - *

    xxaaxx

    - * ==> UE.dom.domUtils.mergeChild(node,'span') - *

    xxaaxx

    - */ - mergeChild: function(node, tagName, attrs) { - var list = domUtils.getElementsByTagName(node, node.tagName.toLowerCase()); - for (var i = 0, ci; (ci = list[i++]); ) { - if (!ci.parentNode || domUtils.isBookmarkNode(ci)) { - continue; - } - //span单独处理 - if (ci.tagName.toLowerCase() == "span") { - if (node === ci.parentNode) { - domUtils.trimWhiteTextNode(node); - if (node.childNodes.length == 1) { - node.style.cssText = ci.style.cssText + ";" + node.style.cssText; - domUtils.remove(ci, true); - continue; - } - } - ci.style.cssText = node.style.cssText + ";" + ci.style.cssText; - if (attrs) { - var style = attrs.style; - if (style) { - style = style.split(";"); - for (var j = 0, s; (s = style[j++]); ) { - ci.style[utils.cssStyleToDomStyle(s.split(":")[0])] = s.split( - ":" - )[1]; - } - } - } - if (domUtils.isSameStyle(ci, node)) { - domUtils.remove(ci, true); - } - continue; - } - if (domUtils.isSameElement(node, ci)) { - domUtils.remove(ci, true); - } - } - }, - - /** - * 原生方法getElementsByTagName的封装 - * @method getElementsByTagName - * @param { Node } node 目标节点对象 - * @param { String } tagName 需要查找的节点的tagName, 多个tagName以空格分割 - * @return { Array } 符合条件的节点集合 - */ - getElementsByTagName: function(node, name, filter) { - if (filter && utils.isString(filter)) { - var className = filter; - filter = function(node) { - return domUtils.hasClass(node, className); - }; - } - name = utils.trim(name).replace(/[ ]{2,}/g, " ").split(" "); - var arr = []; - for (var n = 0, ni; (ni = name[n++]); ) { - var list = node.getElementsByTagName(ni); - for (var i = 0, ci; (ci = list[i++]); ) { - if (!filter || filter(ci)) arr.push(ci); - } - } - - return arr; - }, - /** - * 将节点node提取到父节点上 - * @method mergeToParent - * @param { Element } node 需要提取的元素对象 - * @example - * ```html - *
    - *
    - * - *
    - *
    - * - * - * ``` - */ - mergeToParent: function(node) { - var parent = node.parentNode; - while (parent && dtd.$removeEmpty[parent.tagName]) { - if (parent.tagName == node.tagName || parent.tagName == "A") { - //针对a标签单独处理 - domUtils.trimWhiteTextNode(parent); - //span需要特殊处理 不处理这样的情况 xxxxxxxxx - if ( - (parent.tagName == "SPAN" && !domUtils.isSameStyle(parent, node)) || - (parent.tagName == "A" && node.tagName == "SPAN") - ) { - if (parent.childNodes.length > 1 || parent !== node.parentNode) { - node.style.cssText = - parent.style.cssText + ";" + node.style.cssText; - parent = parent.parentNode; - continue; - } else { - parent.style.cssText += ";" + node.style.cssText; - //trace:952 a标签要保持下划线 - if (parent.tagName == "A") { - parent.style.textDecoration = "underline"; - } - } - } - if (parent.tagName != "A") { - parent === node.parentNode && domUtils.remove(node, true); - break; - } - } - parent = parent.parentNode; - } - }, - /** - * 合并节点node的左右兄弟节点 - * @method mergeSibling - * @param { Element } node 需要合并的目标节点 - * @example - * ```html - * xxxxoooxxxx - * - * - * ``` - */ - - /** - * 合并节点node的左右兄弟节点, 可以根据给定的条件选择是否忽略合并左节点。 - * @method mergeSibling - * @param { Element } node 需要合并的目标节点 - * @param { Boolean } ignorePre 是否忽略合并左节点 - * @example - * ```html - * xxxxoooxxxx - * - * - * ``` - */ - - /** - * 合并节点node的左右兄弟节点,可以根据给定的条件选择是否忽略合并左右节点。 - * @method mergeSibling - * @param { Element } node 需要合并的目标节点 - * @param { Boolean } ignorePre 是否忽略合并左节点 - * @param { Boolean } ignoreNext 是否忽略合并右节点 - * @remind 如果同时忽略左右节点, 则该操作什么也不会做 - * @example - * ```html - * xxxxoooxxxx - * - * - * ``` - */ - mergeSibling: function(node, ignorePre, ignoreNext) { - function merge(rtl, start, node) { - var next; - if ( - (next = node[rtl]) && - !domUtils.isBookmarkNode(next) && - next.nodeType == 1 && - domUtils.isSameElement(node, next) - ) { - while (next.firstChild) { - if (start == "firstChild") { - node.insertBefore(next.lastChild, node.firstChild); - } else { - node.appendChild(next.firstChild); - } - } - domUtils.remove(next); - } - } - !ignorePre && merge("previousSibling", "firstChild", node); - !ignoreNext && merge("nextSibling", "lastChild", node); - }, - - /** - * 设置节点node及其子节点不会被选中 - * @method unSelectable - * @param { Element } node 需要执行操作的dom元素 - * @remind 执行该操作后的节点, 将不能被鼠标选中 - * @example - * ```javascript - * UE.dom.domUtils.unSelectable( document.body ); - * ``` - */ - unSelectable: (ie && browser.ie9below) || browser.opera - ? function(node) { - //for ie9 - node.onselectstart = function() { - return false; - }; - node.onclick = node.onkeyup = node.onkeydown = function() { - return false; - }; - node.unselectable = "on"; - node.setAttribute("unselectable", "on"); - for (var i = 0, ci; (ci = node.all[i++]); ) { - switch (ci.tagName.toLowerCase()) { - case "iframe": - case "textarea": - case "input": - case "select": - break; - default: - ci.unselectable = "on"; - node.setAttribute("unselectable", "on"); - } - } - } - : function(node) { - node.style.MozUserSelect = node.style.webkitUserSelect = node.style.msUserSelect = node.style.KhtmlUserSelect = - "none"; - }, - /** - * 删除节点node上的指定属性名称的属性 - * @method removeAttributes - * @param { Node } node 需要删除属性的节点对象 - * @param { String } attrNames 可以是空格隔开的多个属性名称,该操作将会依次删除相应的属性 - * @example - * ```html - *
    - * xxxxx - *
    - * - * - * ``` - */ - - /** - * 删除节点node上的指定属性名称的属性 - * @method removeAttributes - * @param { Node } node 需要删除属性的节点对象 - * @param { Array } attrNames 需要删除的属性名数组 - * @example - * ```html - *
    - * xxxxx - *
    - * - * - * ``` - */ - removeAttributes: function(node, attrNames) { - attrNames = utils.isArray(attrNames) - ? attrNames - : utils.trim(attrNames).replace(/[ ]{2,}/g, " ").split(" "); - for (var i = 0, ci; (ci = attrNames[i++]); ) { - ci = attrFix[ci] || ci; - switch (ci) { - case "className": - node[ci] = ""; - break; - case "style": - node.style.cssText = ""; - var val = node.getAttributeNode("style"); - !browser.ie && val && node.removeAttributeNode(val); - } - node.removeAttribute(ci); - } - }, - /** - * 在doc下创建一个标签名为tag,属性为attrs的元素 - * @method createElement - * @param { DomDocument } doc 新创建的元素属于该document节点创建 - * @param { String } tagName 需要创建的元素的标签名 - * @param { Object } attrs 新创建的元素的属性key-value集合 - * @return { Element } 新创建的元素对象 - * @example - * ```javascript - * var ele = UE.dom.domUtils.createElement( document, 'div', { - * id: 'test' - * } ); - * - * //output: DIV - * console.log( ele.tagName ); - * - * //output: test - * console.log( ele.id ); - * - * ``` - */ - createElement: function(doc, tag, attrs) { - return domUtils.setAttributes(doc.createElement(tag), attrs); - }, - /** - * 为节点node添加属性attrs,attrs为属性键值对 - * @method setAttributes - * @param { Element } node 需要设置属性的元素对象 - * @param { Object } attrs 需要设置的属性名-值对 - * @return { Element } 设置属性的元素对象 - * @example - * ```html - * - * - * - * - */ - setAttributes: function(node, attrs) { - for (var attr in attrs) { - if (attrs.hasOwnProperty(attr)) { - var value = attrs[attr]; - switch (attr) { - case "class": - //ie下要这样赋值,setAttribute不起作用 - node.className = value; - break; - case "style": - node.style.cssText = node.style.cssText + ";" + value; - break; - case "innerHTML": - node[attr] = value; - break; - case "value": - node.value = value; - break; - default: - node.setAttribute(attrFix[attr] || attr, value); - } - } - } - return node; - }, - - /** - * 获取元素element经过计算后的样式值 - * @method getComputedStyle - * @param { Element } element 需要获取样式的元素对象 - * @param { String } styleName 需要获取的样式名 - * @return { String } 获取到的样式值 - * @example - * ```html - * - * - * - * - * - * ``` - */ - getComputedStyle: function(element, styleName) { - //一下的属性单独处理 - var pros = "width height top left"; - - if (pros.indexOf(styleName) > -1) { - return ( - element[ - "offset" + - styleName.replace(/^\w/, function(s) { - return s.toUpperCase(); - }) - ] + "px" - ); - } - //忽略文本节点 - if (element.nodeType == 3) { - element = element.parentNode; - } - //ie下font-size若body下定义了font-size,则从currentStyle里会取到这个font-size. 取不到实际值,故此修改. - if ( - browser.ie && - browser.version < 9 && - styleName == "font-size" && - !element.style.fontSize && - !dtd.$empty[element.tagName] && - !dtd.$nonChild[element.tagName] - ) { - var span = element.ownerDocument.createElement("span"); - span.style.cssText = "padding:0;border:0;font-family:simsun;"; - span.innerHTML = "."; - element.appendChild(span); - var result = span.offsetHeight; - element.removeChild(span); - span = null; - return result + "px"; - } - try { - var value = - domUtils.getStyle(element, styleName) || - (window.getComputedStyle - ? domUtils - .getWindow(element) - .getComputedStyle(element, "") - .getPropertyValue(styleName) - : (element.currentStyle || element.style)[ - utils.cssStyleToDomStyle(styleName) - ]); - } catch (e) { - return ""; - } - return utils.transUnitToPx(utils.fixColor(styleName, value)); - }, - /** - * 删除元素element指定的className - * @method removeClasses - * @param { Element } ele 需要删除class的元素节点 - * @param { String } classNames 需要删除的className, 多个className之间以空格分开 - * @example - * ```html - * xxx - * - * - * ``` - */ - - /** - * 删除元素element指定的className - * @method removeClasses - * @param { Element } ele 需要删除class的元素节点 - * @param { Array } classNames 需要删除的className数组 - * @example - * ```html - * xxx - * - * - * ``` - */ - removeClasses: function(elm, classNames) { - classNames = utils.isArray(classNames) - ? classNames - : utils.trim(classNames).replace(/[ ]{2,}/g, " ").split(" "); - for (var i = 0, ci, cls = elm.className; (ci = classNames[i++]); ) { - cls = cls.replace(new RegExp("\\b" + ci + "\\b"), ""); - } - cls = utils.trim(cls).replace(/[ ]{2,}/g, " "); - if (cls) { - elm.className = cls; - } else { - domUtils.removeAttributes(elm, ["class"]); - } - }, - /** - * 给元素element添加className - * @method addClass - * @param { Node } ele 需要增加className的元素 - * @param { String } classNames 需要添加的className, 多个className之间以空格分割 - * @remind 相同的类名不会被重复添加 - * @example - * ```html - * - * - * - * ``` - */ - - /** - * 判断元素element是否包含给定的样式类名className - * @method hasClass - * @param { Node } ele 需要检测的元素 - * @param { Array } classNames 需要检测的className数组 - * @return { Boolean } 元素是否包含所有给定的className - * @example - * ```html - * - * - * - * ``` - */ - hasClass: function(element, className) { - if (utils.isRegExp(className)) { - return className.test(element.className); - } - className = utils.trim(className).replace(/[ ]{2,}/g, " ").split(" "); - for (var i = 0, ci, cls = element.className; (ci = className[i++]); ) { - if (!new RegExp("\\b" + ci + "\\b", "i").test(cls)) { - return false; - } - } - return i - 1 == className.length; - }, - - /** - * 阻止事件默认行为 - * @method preventDefault - * @param { Event } evt 需要阻止默认行为的事件对象 - * @example - * ```javascript - * UE.dom.domUtils.preventDefault( evt ); - * ``` - */ - preventDefault: function(evt) { - evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); - }, - /** - * 删除元素element指定的样式 - * @method removeStyle - * @param { Element } element 需要删除样式的元素 - * @param { String } styleName 需要删除的样式名 - * @example - * ```html - * - * - * - * ``` - */ - removeStyle: function(element, name) { - if (browser.ie) { - //针对color先单独处理一下 - if (name == "color") { - name = "(^|;)" + name; - } - element.style.cssText = element.style.cssText.replace( - new RegExp(name + "[^:]*:[^;]+;?", "ig"), - "" - ); - } else { - if (element.style.removeProperty) { - element.style.removeProperty(name); - } else { - element.style.removeAttribute(utils.cssStyleToDomStyle(name)); - } - } - - if (!element.style.cssText) { - domUtils.removeAttributes(element, ["style"]); - } - }, - /** - * 获取元素element的style属性的指定值 - * @method getStyle - * @param { Element } element 需要获取属性值的元素 - * @param { String } styleName 需要获取的style的名称 - * @warning 该方法仅获取元素style属性中所标明的值 - * @return { String } 该元素包含指定的style属性值 - * @example - * ```html - *
    - * - * - * ``` - */ - getStyle: function(element, name) { - var value = element.style[utils.cssStyleToDomStyle(name)]; - return utils.fixColor(name, value); - }, - /** - * 为元素element设置样式属性值 - * @method setStyle - * @param { Element } element 需要设置样式的元素 - * @param { String } styleName 样式名 - * @param { String } styleValue 样式值 - * @example - * ```html - *
    - * - * - * ``` - */ - setStyle: function(element, name, value) { - element.style[utils.cssStyleToDomStyle(name)] = value; - if (!utils.trim(element.style.cssText)) { - this.removeAttributes(element, "style"); - } - }, - /** - * 为元素element设置多个样式属性值 - * @method setStyles - * @param { Element } element 需要设置样式的元素 - * @param { Object } styles 样式名值对 - * @example - * ```html - *
    - * - * - * ``` - */ - setStyles: function(element, styles) { - for (var name in styles) { - if (styles.hasOwnProperty(name)) { - domUtils.setStyle(element, name, styles[name]); - } - } - }, - /** - * 删除_moz_dirty属性 - * @private - * @method removeDirtyAttr - */ - removeDirtyAttr: function(node) { - for ( - var i = 0, ci, nodes = node.getElementsByTagName("*"); - (ci = nodes[i++]); - - ) { - ci.removeAttribute("_moz_dirty"); - } - node.removeAttribute("_moz_dirty"); - }, - /** - * 获取子节点的数量 - * @method getChildCount - * @param { Element } node 需要检测的元素 - * @return { Number } 给定的node元素的子节点数量 - * @example - * ```html - *
    - * - *
    - * - * - * ``` - */ - - /** - * 根据给定的过滤规则, 获取符合条件的子节点的数量 - * @method getChildCount - * @param { Element } node 需要检测的元素 - * @param { Function } fn 过滤器, 要求对符合条件的子节点返回true, 反之则要求返回false - * @return { Number } 符合过滤条件的node元素的子节点数量 - * @example - * ```html - *
    - * - *
    - * - * - * ``` - */ - getChildCount: function(node, fn) { - var count = 0, - first = node.firstChild; - fn = - fn || - function() { - return 1; - }; - while (first) { - if (fn(first)) { - count++; - } - first = first.nextSibling; - } - return count; - }, - - /** - * 判断给定节点是否为空节点 - * @method isEmptyNode - * @param { Node } node 需要检测的节点对象 - * @return { Boolean } 节点是否为空 - * @example - * ```javascript - * UE.dom.domUtils.isEmptyNode( document.body ); - * ``` - */ - isEmptyNode: function(node) { - return ( - !node.firstChild || - domUtils.getChildCount(node, function(node) { - return ( - !domUtils.isBr(node) && - !domUtils.isBookmarkNode(node) && - !domUtils.isWhitespace(node) - ); - }) == 0 - ); - }, - clearSelectedArr: function(nodes) { - var node; - while ((node = nodes.pop())) { - domUtils.removeAttributes(node, ["class"]); - } - }, - /** - * 将显示区域滚动到指定节点的位置 - * @method scrollToView - * @param {Node} node 节点 - * @param {window} win window对象 - * @param {Number} offsetTop 距离上方的偏移量 - */ - scrollToView: function(node, win, offsetTop) { - var getViewPaneSize = function() { - var doc = win.document, - mode = doc.compatMode == "CSS1Compat"; - return { - width: - (mode ? doc.documentElement.clientWidth : doc.body.clientWidth) || 0, - height: - (mode ? doc.documentElement.clientHeight : doc.body.clientHeight) || 0 - }; - }, - getScrollPosition = function(win) { - if ("pageXOffset" in win) { - return { - x: win.pageXOffset || 0, - y: win.pageYOffset || 0 - }; - } else { - var doc = win.document; - return { - x: doc.documentElement.scrollLeft || doc.body.scrollLeft || 0, - y: doc.documentElement.scrollTop || doc.body.scrollTop || 0 - }; - } - }; - var winHeight = getViewPaneSize().height, - offset = winHeight * -1 + offsetTop; - offset += node.offsetHeight || 0; - var elementPosition = domUtils.getXY(node); - offset += elementPosition.y; - var currentScroll = getScrollPosition(win).y; - // offset += 50; - if (offset > currentScroll || offset < currentScroll - winHeight) { - win.scrollTo(0, offset + (offset < 0 ? -20 : 20)); - } - }, - /** - * 判断给定节点是否为br - * @method isBr - * @param { Node } node 需要判断的节点对象 - * @return { Boolean } 给定的节点是否是br节点 - */ - isBr: function(node) { - return node.nodeType == 1 && node.tagName == "BR"; - }, - /** - * 判断给定的节点是否是一个“填充”节点 - * @private - * @method isFillChar - * @param { Node } node 需要判断的节点 - * @param { Boolean } isInStart 是否从节点内容的开始位置匹配 - * @returns { Boolean } 节点是否是填充节点 - */ - isFillChar: function(node, isInStart) { - if (node.nodeType != 3) return false; - var text = node.nodeValue; - if (isInStart) { - return new RegExp("^" + domUtils.fillChar).test(text); - } - return !text.replace(new RegExp(domUtils.fillChar, "g"), "").length; - }, - isStartInblock: function(range) { - var tmpRange = range.cloneRange(), - flag = 0, - start = tmpRange.startContainer, - tmp; - if (start.nodeType == 1 && start.childNodes[tmpRange.startOffset]) { - start = start.childNodes[tmpRange.startOffset]; - var pre = start.previousSibling; - while (pre && domUtils.isFillChar(pre)) { - start = pre; - pre = pre.previousSibling; - } - } - if (this.isFillChar(start, true) && tmpRange.startOffset == 1) { - tmpRange.setStartBefore(start); - start = tmpRange.startContainer; - } - - while (start && domUtils.isFillChar(start)) { - tmp = start; - start = start.previousSibling; - } - if (tmp) { - tmpRange.setStartBefore(tmp); - start = tmpRange.startContainer; - } - if ( - start.nodeType == 1 && - domUtils.isEmptyNode(start) && - tmpRange.startOffset == 1 - ) { - tmpRange.setStart(start, 0).collapse(true); - } - while (!tmpRange.startOffset) { - start = tmpRange.startContainer; - if (domUtils.isBlockElm(start) || domUtils.isBody(start)) { - flag = 1; - break; - } - var pre = tmpRange.startContainer.previousSibling, - tmpNode; - if (!pre) { - tmpRange.setStartBefore(tmpRange.startContainer); - } else { - while (pre && domUtils.isFillChar(pre)) { - tmpNode = pre; - pre = pre.previousSibling; - } - if (tmpNode) { - tmpRange.setStartBefore(tmpNode); - } else { - tmpRange.setStartBefore(tmpRange.startContainer); - } - } - } - return flag && !domUtils.isBody(tmpRange.startContainer) ? 1 : 0; - }, - - /** - * 判断给定的元素是否是一个空元素 - * @method isEmptyBlock - * @param { Element } node 需要判断的元素 - * @return { Boolean } 是否是空元素 - * @example - * ```html - *
    - * - * - * ``` - */ - - /** - * 根据指定的判断规则判断给定的元素是否是一个空元素 - * @method isEmptyBlock - * @param { Element } node 需要判断的元素 - * @param { RegExp } reg 对内容执行判断的正则表达式对象 - * @return { Boolean } 是否是空元素 - */ - isEmptyBlock: function(node, reg) { - if (node.nodeType != 1) return 0; - reg = reg || new RegExp("[ \xa0\t\r\n" + domUtils.fillChar + "]", "g"); - - if ( - node[browser.ie ? "innerText" : "textContent"].replace(reg, "").length > 0 - ) { - return 0; - } - for (var n in dtd.$isNotEmpty) { - if (node.getElementsByTagName(n).length) { - return 0; - } - } - return 1; - }, - - /** - * 移动元素使得该元素的位置移动指定的偏移量的距离 - * @method setViewportOffset - * @param { Element } element 需要设置偏移量的元素 - * @param { Object } offset 偏移量, 形如{ left: 100, top: 50 }的一个键值对, 表示该元素将在 - * 现有的位置上向水平方向偏移offset.left的距离, 在竖直方向上偏移 - * offset.top的距离 - * @example - * ```html - *
    - * - * - * ``` - */ - setViewportOffset: function(element, offset) { - var left = parseInt(element.style.left) | 0; - var top = parseInt(element.style.top) | 0; - var rect = element.getBoundingClientRect(); - var offsetLeft = offset.left - rect.left; - var offsetTop = offset.top - rect.top; - if (offsetLeft) { - element.style.left = left + offsetLeft + "px"; - } - if (offsetTop) { - element.style.top = top + offsetTop + "px"; - } - }, - - /** - * 用“填充字符”填充节点 - * @method fillNode - * @private - * @param { DomDocument } doc 填充的节点所在的docment对象 - * @param { Node } node 需要填充的节点对象 - * @example - * ```html - *
    - * - * - * ``` - */ - fillNode: function(doc, node) { - var tmpNode = browser.ie - ? doc.createTextNode(domUtils.fillChar) - : doc.createElement("br"); - node.innerHTML = ""; - node.appendChild(tmpNode); - }, - - /** - * 把节点src的所有子节点追加到另一个节点tag上去 - * @method moveChild - * @param { Node } src 源节点, 该节点下的所有子节点将被移除 - * @param { Node } tag 目标节点, 从源节点移除的子节点将被追加到该节点下 - * @example - * ```html - *
    - * - *
    - *
    - *
    - *
    - * - * - * ``` - */ - - /** - * 把节点src的所有子节点移动到另一个节点tag上去, 可以通过dir参数控制附加的行为是“追加”还是“插入顶部” - * @method moveChild - * @param { Node } src 源节点, 该节点下的所有子节点将被移除 - * @param { Node } tag 目标节点, 从源节点移除的子节点将被附加到该节点下 - * @param { Boolean } dir 附加方式, 如果为true, 则附加进去的节点将被放到目标节点的顶部, 反之,则放到末尾 - * @example - * ```html - *
    - * - *
    - *
    - *
    - *
    - * - * - * ``` - */ - moveChild: function(src, tag, dir) { - while (src.firstChild) { - if (dir && tag.firstChild) { - tag.insertBefore(src.lastChild, tag.firstChild); - } else { - tag.appendChild(src.firstChild); - } - } - }, - - /** - * 判断节点的标签上是否不存在任何属性 - * @method hasNoAttributes - * @private - * @param { Node } node 需要检测的节点对象 - * @return { Boolean } 节点是否不包含任何属性 - * @example - * ```html - *
    xxxx
    - * - * - * ``` - */ - hasNoAttributes: function(node) { - return browser.ie - ? /^<\w+\s*?>/.test(node.outerHTML) - : node.attributes.length == 0; - }, - - /** - * 检测节点是否是UEditor所使用的辅助节点 - * @method isCustomeNode - * @private - * @param { Node } node 需要检测的节点 - * @remind 辅助节点是指编辑器要完成工作临时添加的节点, 在输出的时候将会从编辑器内移除, 不会影响最终的结果。 - * @return { Boolean } 给定的节点是否是一个辅助节点 - */ - isCustomeNode: function(node) { - return node.nodeType == 1 && node.getAttribute("_ue_custom_node_"); - }, - - /** - * 检测节点的标签是否是给定的标签 - * @method isTagNode - * @param { Node } node 需要检测的节点对象 - * @param { String } tagName 标签 - * @return { Boolean } 节点的标签是否是给定的标签 - * @example - * ```html - *
    - * - * - * ``` - */ - isTagNode: function(node, tagNames) { - return ( - node.nodeType == 1 && - new RegExp("\\b" + node.tagName + "\\b", "i").test(tagNames) - ); - }, - - /** - * 给定一个节点数组,在通过指定的过滤器过滤后, 获取其中满足过滤条件的第一个节点 - * @method filterNodeList - * @param { Array } nodeList 需要过滤的节点数组 - * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false - * @return { Node | NULL } 如果找到符合过滤条件的节点, 则返回该节点, 否则返回NULL - * @example - * ```javascript - * var divNodes = document.getElementsByTagName("div"); - * divNodes = [].slice.call( divNodes, 0 ); - * - * //output: null - * console.log( UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { - * return node.tagName.toLowerCase() !== 'div'; - * } ) ); - * ``` - */ - - /** - * 给定一个节点数组nodeList和一组标签名tagNames, 获取其中能够匹配标签名的节点集合中的第一个节点 - * @method filterNodeList - * @param { Array } nodeList 需要过滤的节点数组 - * @param { String } tagNames 需要匹配的标签名, 多个标签名之间用空格分割 - * @return { Node | NULL } 如果找到标签名匹配的节点, 则返回该节点, 否则返回NULL - * @example - * ```javascript - * var divNodes = document.getElementsByTagName("div"); - * divNodes = [].slice.call( divNodes, 0 ); - * - * //output: null - * console.log( UE.dom.domUtils.filterNodeList( divNodes, 'a span' ) ); - * ``` - */ - - /** - * 给定一个节点数组,在通过指定的过滤器过滤后, 如果参数forAll为true, 则会返回所有满足过滤 - * 条件的节点集合, 否则, 返回满足条件的节点集合中的第一个节点 - * @method filterNodeList - * @param { Array } nodeList 需要过滤的节点数组 - * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false - * @param { Boolean } forAll 是否返回整个节点数组, 如果该参数为false, 则返回节点集合中的第一个节点 - * @return { Array | Node | NULL } 如果找到符合过滤条件的节点, 则根据参数forAll的值决定返回满足 - * 过滤条件的节点数组或第一个节点, 否则返回NULL - * @example - * ```javascript - * var divNodes = document.getElementsByTagName("div"); - * divNodes = [].slice.call( divNodes, 0 ); - * - * //output: 3(假定有3个div) - * console.log( divNodes.length ); - * - * var nodes = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { - * return node.tagName.toLowerCase() === 'div'; - * }, true ); - * - * //output: 3 - * console.log( nodes.length ); - * - * var node = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { - * return node.tagName.toLowerCase() === 'div'; - * }, false ); - * - * //output: div - * console.log( node.nodeName ); - * ``` - */ - filterNodeList: function(nodelist, filter, forAll) { - var results = []; - if (!utils.isFunction(filter)) { - var str = filter; - filter = function(n) { - return ( - utils.indexOf( - utils.isArray(str) ? str : str.split(" "), - n.tagName.toLowerCase() - ) != -1 - ); - }; - } - utils.each(nodelist, function(n) { - filter(n) && results.push(n); - }); - return results.length == 0 - ? null - : results.length == 1 || !forAll ? results[0] : results; - }, - - /** - * 查询给定的range选区是否在给定的node节点内,且在该节点的最末尾 - * @method isInNodeEndBoundary - * @param { UE.dom.Range } rng 需要判断的range对象, 该对象的startContainer不能为NULL - * @param node 需要检测的节点对象 - * @return { Number } 如果给定的选取range对象是在node内部的最末端, 则返回1, 否则返回0 - */ - isInNodeEndBoundary: function(rng, node) { - var start = rng.startContainer; - if (start.nodeType == 3 && rng.startOffset != start.nodeValue.length) { - return 0; - } - if (start.nodeType == 1 && rng.startOffset != start.childNodes.length) { - return 0; - } - while (start !== node) { - if (start.nextSibling) { - return 0; - } - start = start.parentNode; - } - return 1; - }, - isBoundaryNode: function(node, dir) { - var tmp; - while (!domUtils.isBody(node)) { - tmp = node; - node = node.parentNode; - if (tmp !== node[dir]) { - return false; - } - } - return true; - }, - fillHtml: browser.ie11below ? " " : "
    " -}); -var fillCharReg = new RegExp(domUtils.fillChar, "g"); - - -// core/Range.js -/** - * Range封装 - * @file - * @module UE.dom - * @class Range - * @since 1.2.6.1 - */ - -/** - * dom操作封装 - * @unfile - * @module UE.dom - */ - -/** - * Range实现类,本类是UEditor底层核心类,封装不同浏览器之间的Range操作。 - * @unfile - * @module UE.dom - * @class Range - */ - -(function() { - var guid = 0, - fillChar = domUtils.fillChar, - fillData; - - /** - * 更新range的collapse状态 - * @param {Range} range range对象 - */ - function updateCollapse(range) { - range.collapsed = - range.startContainer && - range.endContainer && - range.startContainer === range.endContainer && - range.startOffset == range.endOffset; - } - - function selectOneNode(rng) { - return ( - !rng.collapsed && - rng.startContainer.nodeType == 1 && - rng.startContainer === rng.endContainer && - rng.endOffset - rng.startOffset == 1 - ); - } - function setEndPoint(toStart, node, offset, range) { - //如果node是自闭合标签要处理 - if ( - node.nodeType == 1 && - (dtd.$empty[node.tagName] || dtd.$nonChild[node.tagName]) - ) { - offset = domUtils.getNodeIndex(node) + (toStart ? 0 : 1); - node = node.parentNode; - } - if (toStart) { - range.startContainer = node; - range.startOffset = offset; - if (!range.endContainer) { - range.collapse(true); - } - } else { - range.endContainer = node; - range.endOffset = offset; - if (!range.startContainer) { - range.collapse(false); - } - } - updateCollapse(range); - return range; - } - - function execContentsAction(range, action) { - //调整边界 - //range.includeBookmark(); - var start = range.startContainer, - end = range.endContainer, - startOffset = range.startOffset, - endOffset = range.endOffset, - doc = range.document, - frag = doc.createDocumentFragment(), - tmpStart, - tmpEnd; - if (start.nodeType == 1) { - start = - start.childNodes[startOffset] || - (tmpStart = start.appendChild(doc.createTextNode(""))); - } - if (end.nodeType == 1) { - end = - end.childNodes[endOffset] || - (tmpEnd = end.appendChild(doc.createTextNode(""))); - } - if (start === end && start.nodeType == 3) { - frag.appendChild( - doc.createTextNode( - start.substringData(startOffset, endOffset - startOffset) - ) - ); - //is not clone - if (action) { - start.deleteData(startOffset, endOffset - startOffset); - range.collapse(true); - } - return frag; - } - var current, - currentLevel, - clone = frag, - startParents = domUtils.findParents(start, true), - endParents = domUtils.findParents(end, true); - for (var i = 0; startParents[i] == endParents[i]; ) { - i++; - } - for (var j = i, si; (si = startParents[j]); j++) { - current = si.nextSibling; - if (si == start) { - if (!tmpStart) { - if (range.startContainer.nodeType == 3) { - clone.appendChild( - doc.createTextNode(start.nodeValue.slice(startOffset)) - ); - //is not clone - if (action) { - start.deleteData( - startOffset, - start.nodeValue.length - startOffset - ); - } - } else { - clone.appendChild(!action ? start.cloneNode(true) : start); - } - } - } else { - currentLevel = si.cloneNode(false); - clone.appendChild(currentLevel); - } - while (current) { - if (current === end || current === endParents[j]) { - break; - } - si = current.nextSibling; - clone.appendChild(!action ? current.cloneNode(true) : current); - current = si; - } - clone = currentLevel; - } - clone = frag; - if (!startParents[i]) { - clone.appendChild(startParents[i - 1].cloneNode(false)); - clone = clone.firstChild; - } - for (var j = i, ei; (ei = endParents[j]); j++) { - current = ei.previousSibling; - if (ei == end) { - if (!tmpEnd && range.endContainer.nodeType == 3) { - clone.appendChild( - doc.createTextNode(end.substringData(0, endOffset)) - ); - //is not clone - if (action) { - end.deleteData(0, endOffset); - } - } - } else { - currentLevel = ei.cloneNode(false); - clone.appendChild(currentLevel); - } - //如果两端同级,右边第一次已经被开始做了 - if (j != i || !startParents[i]) { - while (current) { - if (current === start) { - break; - } - ei = current.previousSibling; - clone.insertBefore( - !action ? current.cloneNode(true) : current, - clone.firstChild - ); - current = ei; - } - } - clone = currentLevel; - } - if (action) { - range - .setStartBefore( - !endParents[i] - ? endParents[i - 1] - : !startParents[i] ? startParents[i - 1] : endParents[i] - ) - .collapse(true); - } - tmpStart && domUtils.remove(tmpStart); - tmpEnd && domUtils.remove(tmpEnd); - return frag; - } - - /** - * 创建一个跟document绑定的空的Range实例 - * @constructor - * @param { Document } document 新建的选区所属的文档对象 - */ - - /** - * @property { Node } startContainer 当前Range的开始边界的容器节点, 可以是一个元素节点或者是文本节点 - */ - - /** - * @property { Node } startOffset 当前Range的开始边界容器节点的偏移量, 如果是元素节点, - * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符 - */ - - /** - * @property { Node } endContainer 当前Range的结束边界的容器节点, 可以是一个元素节点或者是文本节点 - */ - - /** - * @property { Node } endOffset 当前Range的结束边界容器节点的偏移量, 如果是元素节点, - * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符 - */ - - /** - * @property { Boolean } collapsed 当前Range是否闭合 - * @default true - * @remind Range是闭合的时候, startContainer === endContainer && startOffset === endOffset - */ - - /** - * @property { Document } document 当前Range所属的Document对象 - * @remind 不同range的的document属性可以是不同的 - */ - var Range = (dom.Range = function(document) { - var me = this; - me.startContainer = me.startOffset = me.endContainer = me.endOffset = null; - me.document = document; - me.collapsed = true; - }); - - /** - * 删除fillData - * @param doc - * @param excludeNode - */ - function removeFillData(doc, excludeNode) { - try { - if (fillData && domUtils.inDoc(fillData, doc)) { - if (!fillData.nodeValue.replace(fillCharReg, "").length) { - var tmpNode = fillData.parentNode; - domUtils.remove(fillData); - while ( - tmpNode && - domUtils.isEmptyInlineElement(tmpNode) && - //safari的contains有bug - (browser.safari - ? !( - domUtils.getPosition(tmpNode, excludeNode) & - domUtils.POSITION_CONTAINS - ) - : !tmpNode.contains(excludeNode)) - ) { - fillData = tmpNode.parentNode; - domUtils.remove(tmpNode); - tmpNode = fillData; - } - } else { - fillData.nodeValue = fillData.nodeValue.replace(fillCharReg, ""); - } - } - } catch (e) {} - } - - /** - * @param node - * @param dir - */ - function mergeSibling(node, dir) { - var tmpNode; - node = node[dir]; - while (node && domUtils.isFillChar(node)) { - tmpNode = node[dir]; - domUtils.remove(node); - node = tmpNode; - } - } - - Range.prototype = { - /** - * 克隆选区的内容到一个DocumentFragment里 - * @method cloneContents - * @return { DocumentFragment | NULL } 如果选区是闭合的将返回null, 否则, 返回包含所clone内容的DocumentFragment元素 - * @example - * ```html - * - * - * xx[xxx]x - * - * - * - * ``` - */ - cloneContents: function() { - return this.collapsed ? null : execContentsAction(this, 0); - }, - - /** - * 删除当前选区范围中的所有内容 - * @method deleteContents - * @remind 执行完该操作后, 当前Range对象变成了闭合状态 - * @return { UE.dom.Range } 当前操作的Range对象 - * @example - * ```html - * - * - * xx[xxx]x - * - * - * - * ``` - */ - deleteContents: function() { - var txt; - if (!this.collapsed) { - execContentsAction(this, 1); - } - if (browser.webkit) { - txt = this.startContainer; - if (txt.nodeType == 3 && !txt.nodeValue.length) { - this.setStartBefore(txt).collapse(true); - domUtils.remove(txt); - } - } - return this; - }, - - /** - * 将当前选区的内容提取到一个DocumentFragment里 - * @method extractContents - * @remind 执行该操作后, 选区将变成闭合状态 - * @warning 执行该操作后, 原来选区所选中的内容将从dom树上剥离出来 - * @return { DocumentFragment } 返回包含所提取内容的DocumentFragment对象 - * @example - * ```html - * - * - * xx[xxx]x - * - * - * - */ - extractContents: function() { - return this.collapsed ? null : execContentsAction(this, 2); - }, - - /** - * 设置Range的开始容器节点和偏移量 - * @method setStart - * @remind 如果给定的节点是元素节点,那么offset指的是其子元素中索引为offset的元素, - * 如果是文本节点,那么offset指的是其文本内容的第offset个字符 - * @remind 如果提供的容器节点是一个不能包含子元素的节点, 则该选区的开始容器将被设置 - * 为该节点的父节点, 此时, 其距离开始容器的偏移量也变成了该节点在其父节点 - * 中的索引 - * @param { Node } node 将被设为当前选区开始边界容器的节点对象 - * @param { int } offset 选区的开始位置偏移量 - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * xxxxxxxxxxxxx[xxx] - * - * - * ``` - * @example - * ```html - * - * xxx[xx]x - * - * - * ``` - */ - setStart: function(node, offset) { - return setEndPoint(true, node, offset, this); - }, - - /** - * 设置Range的结束容器和偏移量 - * @method setEnd - * @param { Node } node 作为当前选区结束边界容器的节点对象 - * @param { int } offset 结束边界的偏移量 - * @see UE.dom.Range:setStart(Node,int) - * @return { UE.dom.Range } 当前range对象 - */ - setEnd: function(node, offset) { - return setEndPoint(false, node, offset, this); - }, - - /** - * 将Range开始位置设置到node节点之后 - * @method setStartAfter - * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引+1 - * @param { Node } node 选区的开始边界将紧接着该节点之后 - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * xxxxxxx[xxxx] - * - * - * ``` - */ - setStartAfter: function(node) { - return this.setStart(node.parentNode, domUtils.getNodeIndex(node) + 1); - }, - - /** - * 将Range开始位置设置到node节点之前 - * @method setStartBefore - * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引 - * @param { Node } node 新的选区开始位置在该节点之前 - * @see UE.dom.Range:setStartAfter(Node) - * @return { UE.dom.Range } 当前range对象 - */ - setStartBefore: function(node) { - return this.setStart(node.parentNode, domUtils.getNodeIndex(node)); - }, - - /** - * 将Range结束位置设置到node节点之后 - * @method setEndAfter - * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引+1 - * @param { Node } node 目标节点 - * @see UE.dom.Range:setStartAfter(Node) - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * [xxxxxxx]xxxx - * - * - * ``` - */ - setEndAfter: function(node) { - return this.setEnd(node.parentNode, domUtils.getNodeIndex(node) + 1); - }, - - /** - * 将Range结束位置设置到node节点之前 - * @method setEndBefore - * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引 - * @param { Node } node 目标节点 - * @see UE.dom.Range:setEndAfter(Node) - * @return { UE.dom.Range } 当前range对象 - */ - setEndBefore: function(node) { - return this.setEnd(node.parentNode, domUtils.getNodeIndex(node)); - }, - - /** - * 设置Range的开始位置到node节点内的第一个子节点之前 - * @method setStartAtFirst - * @remind 选区的开始容器将变成给定的节点, 且偏移量为0 - * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。 - * @param { Node } node 目标节点 - * @see UE.dom.Range:setStartBefore(Node) - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * xxxxx[xx]xxxx - * - * - * ``` - */ - setStartAtFirst: function(node) { - return this.setStart(node, 0); - }, - - /** - * 设置Range的开始位置到node节点内的最后一个节点之后 - * @method setStartAtLast - * @remind 选区的开始容器将变成给定的节点, 且偏移量为该节点的子节点数 - * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。 - * @param { Node } node 目标节点 - * @see UE.dom.Range:setStartAtFirst(Node) - * @return { UE.dom.Range } 当前range对象 - */ - setStartAtLast: function(node) { - return this.setStart( - node, - node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length - ); - }, - - /** - * 设置Range的结束位置到node节点内的第一个节点之前 - * @method setEndAtFirst - * @param { Node } node 目标节点 - * @remind 选区的结束容器将变成给定的节点, 且偏移量为0 - * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。 - * @see UE.dom.Range:setStartAtFirst(Node) - * @return { UE.dom.Range } 当前range对象 - */ - setEndAtFirst: function(node) { - return this.setEnd(node, 0); - }, - - /** - * 设置Range的结束位置到node节点内的最后一个节点之后 - * @method setEndAtLast - * @param { Node } node 目标节点 - * @remind 选区的结束容器将变成给定的节点, 且偏移量为该节点的子节点数量 - * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。 - * @see UE.dom.Range:setStartAtFirst(Node) - * @return { UE.dom.Range } 当前range对象 - */ - setEndAtLast: function(node) { - return this.setEnd( - node, - node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length - ); - }, - - /** - * 选中给定节点 - * @method selectNode - * @remind 此时, 选区的开始容器和结束容器都是该节点的父节点, 其startOffset是该节点在父节点中的位置索引, - * 而endOffset为startOffset+1 - * @param { Node } node 需要选中的节点 - * @return { UE.dom.Range } 当前range对象,此时的range仅包含当前给定的节点对象 - * @example - * ```html - * - * xxxxx[xx]xxxx - * - * - * ``` - */ - selectNode: function(node) { - return this.setStartBefore(node).setEndAfter(node); - }, - - /** - * 选中给定节点内部的所有节点 - * @method selectNodeContents - * @remind 此时, 选区的开始容器和结束容器都是该节点, 其startOffset为0, - * 而endOffset是该节点的子节点数。 - * @param { Node } node 目标节点, 当前range将包含该节点内的所有节点 - * @return { UE.dom.Range } 当前range对象, 此时range仅包含给定节点的所有子节点 - * @example - * ```html - * - * xxxxx[xx]xxxx - * - * - * ``` - */ - selectNodeContents: function(node) { - return this.setStart(node, 0).setEndAtLast(node); - }, - - /** - * clone当前Range对象 - * @method cloneRange - * @remind 返回的range是一个全新的range对象, 其内部所有属性与当前被clone的range相同。 - * @return { UE.dom.Range } 当前range对象的一个副本 - */ - cloneRange: function() { - var me = this; - return new Range(me.document) - .setStart(me.startContainer, me.startOffset) - .setEnd(me.endContainer, me.endOffset); - }, - - /** - * 向当前选区的结束处闭合选区 - * @method collapse - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * xxxxx[xx]xxxx - * - * - * ``` - */ - - /** - * 闭合当前选区,根据给定的toStart参数项决定是向当前选区开始处闭合还是向结束处闭合, - * 如果toStart的值为true,则向开始位置闭合, 反之,向结束位置闭合。 - * @method collapse - * @param { Boolean } toStart 是否向选区开始处闭合 - * @return { UE.dom.Range } 当前range对象,此时range对象处于闭合状态 - * @see UE.dom.Range:collapse() - * @example - * ```html - * - * xxxxx[xx]xxxx - * - * - * ``` - */ - collapse: function(toStart) { - var me = this; - if (toStart) { - me.endContainer = me.startContainer; - me.endOffset = me.startOffset; - } else { - me.startContainer = me.endContainer; - me.startOffset = me.endOffset; - } - me.collapsed = true; - return me; - }, - - /** - * 调整range的开始位置和结束位置,使其"收缩"到最小的位置 - * @method shrinkBoundary - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * xxxx[xxxxx] => xxxx[xxxxx] - * ``` - * - * @example - * ```html - * - * x[xx]xxx - * - * - * ``` - * - * @example - * ```html - * [xxxxxxxxxxx] => [xxxxxxxxxxx] - * ``` - */ - - /** - * 调整range的开始位置和结束位置,使其"收缩"到最小的位置, - * 如果ignoreEnd的值为true,则忽略对结束位置的调整 - * @method shrinkBoundary - * @param { Boolean } ignoreEnd 是否忽略对结束位置的调整 - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.domUtils.Range:shrinkBoundary() - */ - shrinkBoundary: function(ignoreEnd) { - var me = this, - child, - collapsed = me.collapsed; - function check(node) { - return ( - node.nodeType == 1 && - !domUtils.isBookmarkNode(node) && - !dtd.$empty[node.tagName] && - !dtd.$nonChild[node.tagName] - ); - } - while ( - me.startContainer.nodeType == 1 && //是element - (child = me.startContainer.childNodes[me.startOffset]) && //子节点也是element - check(child) - ) { - me.setStart(child, 0); - } - if (collapsed) { - return me.collapse(true); - } - if (!ignoreEnd) { - while ( - me.endContainer.nodeType == 1 && //是element - me.endOffset > 0 && //如果是空元素就退出 endOffset=0那么endOffst-1为负值,childNodes[endOffset]报错 - (child = me.endContainer.childNodes[me.endOffset - 1]) && //子节点也是element - check(child) - ) { - me.setEnd(child, child.childNodes.length); - } - } - return me; - }, - - /** - * 获取离当前选区内包含的所有节点最近的公共祖先节点, - * @method getCommonAncestor - * @remind 返回的公共祖先节点一定不是range自身的容器节点, 但有可能是一个文本节点 - * @return { Node } 当前range对象内所有节点的公共祖先节点 - * @example - * ```html - * //选区示例 - * xxxx[xxx]xxxxxx - * - * ``` - */ - - /** - * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到 - * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf - * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点 - * @method getCommonAncestor - * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点 - * @return { Node } 当前range对象内所有节点的公共祖先节点 - * @see UE.dom.Range:getCommonAncestor() - * @example - * ```html - * - * - * - * xxxxxxxxx[xxx]xxxxxxxx - * - * - * - * - * ``` - */ - - /** - * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到 - * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf - * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点; 同时可以根据 - * ignoreTextNode 参数的取值决定是否忽略类型为文本节点的祖先节点。 - * @method getCommonAncestor - * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点 - * @param { Boolean } ignoreTextNode 获取祖先节点的过程中是否忽略类型为文本节点的祖先节点 - * @return { Node } 当前range对象内所有节点的公共祖先节点 - * @see UE.dom.Range:getCommonAncestor() - * @see UE.dom.Range:getCommonAncestor(Boolean) - * @example - * ```html - * - * - * - * xxxxxxxx[x]xxxxxxxxxxx - * - * - * - * - * ``` - */ - getCommonAncestor: function(includeSelf, ignoreTextNode) { - var me = this, - start = me.startContainer, - end = me.endContainer; - if (start === end) { - if (includeSelf && selectOneNode(this)) { - start = start.childNodes[me.startOffset]; - if (start.nodeType == 1) return start; - } - //只有在上来就相等的情况下才会出现是文本的情况 - return ignoreTextNode && start.nodeType == 3 ? start.parentNode : start; - } - return domUtils.getCommonAncestor(start, end); - }, - - /** - * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上 - * @method trimBoundary - * @remind 该操作有可能会引起文本节点被切开 - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * //选区示例 - * xxx[xxxxx]xxx - * - * - * ``` - */ - - /** - * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上, - * 可以根据 ignoreEnd 参数的值决定是否调整对结束边界的调整 - * @method trimBoundary - * @param { Boolean } ignoreEnd 是否忽略对结束边界的调整 - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * //选区示例 - * xxx[xxxxx]xxx - * - * - * ``` - */ - trimBoundary: function(ignoreEnd) { - this.txtToElmBoundary(); - var start = this.startContainer, - offset = this.startOffset, - collapsed = this.collapsed, - end = this.endContainer; - if (start.nodeType == 3) { - if (offset == 0) { - this.setStartBefore(start); - } else { - if (offset >= start.nodeValue.length) { - this.setStartAfter(start); - } else { - var textNode = domUtils.split(start, offset); - //跟新结束边界 - if (start === end) { - this.setEnd(textNode, this.endOffset - offset); - } else if (start.parentNode === end) { - this.endOffset += 1; - } - this.setStartBefore(textNode); - } - } - if (collapsed) { - return this.collapse(true); - } - } - if (!ignoreEnd) { - offset = this.endOffset; - end = this.endContainer; - if (end.nodeType == 3) { - if (offset == 0) { - this.setEndBefore(end); - } else { - offset < end.nodeValue.length && domUtils.split(end, offset); - this.setEndAfter(end); - } - } - } - return this; - }, - - /** - * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则什么也不做 - * @method txtToElmBoundary - * @remind 该操作不会修改dom节点 - * @return { UE.dom.Range } 当前range对象 - */ - - /** - * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则根据参数项 - * ignoreCollapsed 的值决定是否执行该调整 - * @method txtToElmBoundary - * @param { Boolean } ignoreCollapsed 是否忽略选区的闭合状态, 如果该参数取值为true, 则 - * 不论选区是否闭合, 都会执行该操作, 反之, 则不会对闭合的选区执行该操作 - * @return { UE.dom.Range } 当前range对象 - */ - txtToElmBoundary: function(ignoreCollapsed) { - function adjust(r, c) { - var container = r[c + "Container"], - offset = r[c + "Offset"]; - if (container.nodeType == 3) { - if (!offset) { - r[ - "set" + - c.replace(/(\w)/, function(a) { - return a.toUpperCase(); - }) + - "Before" - ](container); - } else if (offset >= container.nodeValue.length) { - r[ - "set" + - c.replace(/(\w)/, function(a) { - return a.toUpperCase(); - }) + - "After" - ](container); - } - } - } - - if (ignoreCollapsed || !this.collapsed) { - adjust(this, "start"); - adjust(this, "end"); - } - return this; - }, - - /** - * 在当前选区的开始位置前插入节点,新插入的节点会被该range包含 - * @method insertNode - * @param { Node } node 需要插入的节点 - * @remind 插入的节点可以是一个DocumentFragment依次插入多个节点 - * @return { UE.dom.Range } 当前range对象 - */ - insertNode: function(node) { - var first = node, - length = 1; - if (node.nodeType == 11) { - first = node.firstChild; - length = node.childNodes.length; - } - this.trimBoundary(true); - var start = this.startContainer, - offset = this.startOffset; - var nextNode = start.childNodes[offset]; - if (nextNode) { - start.insertBefore(node, nextNode); - } else { - start.appendChild(node); - } - if (first.parentNode === this.endContainer) { - this.endOffset = this.endOffset + length; - } - return this.setStartBefore(first); - }, - - /** - * 闭合选区到当前选区的开始位置, 并且定位光标到闭合后的位置 - * @method setCursor - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.Range:collapse() - */ - - /** - * 闭合选区,可以根据参数toEnd的值控制选区是向前闭合还是向后闭合, 并且定位光标到闭合后的位置。 - * @method setCursor - * @param { Boolean } toEnd 是否向后闭合, 如果为true, 则闭合选区时, 将向结束容器方向闭合, - * 反之,则向开始容器方向闭合 - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.Range:collapse(Boolean) - */ - setCursor: function(toEnd, noFillData) { - return this.collapse(!toEnd).select(noFillData); - }, - - /** - * 创建当前range的一个书签,记录下当前range的位置,方便当dom树改变时,还能找回原来的选区位置 - * @method createBookmark - * @param { Boolean } serialize 控制返回的标记位置是对当前位置的引用还是ID,如果该值为true,则 - * 返回标记位置的ID, 反之则返回标记位置节点的引用 - * @return { Object } 返回一个书签记录键值对, 其包含的key有: start => 开始标记的ID或者引用, - * end => 结束标记的ID或引用, id => 当前标记的类型, 如果为true,则表示 - * 返回的记录的类型为ID, 反之则为引用 - */ - createBookmark: function(serialize, same) { - var endNode, - startNode = this.document.createElement("span"); - startNode.style.cssText = "display:none;line-height:0px;"; - startNode.appendChild(this.document.createTextNode("\u200D")); - startNode.id = "_baidu_bookmark_start_" + (same ? "" : guid++); - - if (!this.collapsed) { - endNode = startNode.cloneNode(true); - endNode.id = "_baidu_bookmark_end_" + (same ? "" : guid++); - } - this.insertNode(startNode); - if (endNode) { - this.collapse().insertNode(endNode).setEndBefore(endNode); - } - this.setStartAfter(startNode); - return { - start: serialize ? startNode.id : startNode, - end: endNode ? (serialize ? endNode.id : endNode) : null, - id: serialize - }; - }, - - /** - * 调整当前range的边界到书签位置,并删除该书签对象所标记的位置内的节点 - * @method moveToBookmark - * @param { BookMark } bookmark createBookmark所创建的标签对象 - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.Range:createBookmark(Boolean) - */ - moveToBookmark: function(bookmark) { - var start = bookmark.id - ? this.document.getElementById(bookmark.start) - : bookmark.start, - end = bookmark.end && bookmark.id - ? this.document.getElementById(bookmark.end) - : bookmark.end; - this.setStartBefore(start); - domUtils.remove(start); - if (end) { - this.setEndBefore(end); - domUtils.remove(end); - } else { - this.collapse(true); - } - return this; - }, - - /** - * 调整range的边界,使其"放大"到最近的父节点 - * @method enlarge - * @remind 会引起选区的变化 - * @return { UE.dom.Range } 当前range对象 - */ - - /** - * 调整range的边界,使其"放大"到最近的父节点,根据参数 toBlock 的取值, 可以 - * 要求扩大之后的父节点是block节点 - * @method enlarge - * @param { Boolean } toBlock 是否要求扩大之后的父节点必须是block节点 - * @return { UE.dom.Range } 当前range对象 - */ - enlarge: function(toBlock, stopFn) { - var isBody = domUtils.isBody, - pre, - node, - tmp = this.document.createTextNode(""); - if (toBlock) { - node = this.startContainer; - if (node.nodeType == 1) { - if (node.childNodes[this.startOffset]) { - pre = node = node.childNodes[this.startOffset]; - } else { - node.appendChild(tmp); - pre = node = tmp; - } - } else { - pre = node; - } - while (1) { - if (domUtils.isBlockElm(node)) { - node = pre; - while ((pre = node.previousSibling) && !domUtils.isBlockElm(pre)) { - node = pre; - } - this.setStartBefore(node); - break; - } - pre = node; - node = node.parentNode; - } - node = this.endContainer; - if (node.nodeType == 1) { - if ((pre = node.childNodes[this.endOffset])) { - node.insertBefore(tmp, pre); - } else { - node.appendChild(tmp); - } - pre = node = tmp; - } else { - pre = node; - } - while (1) { - if (domUtils.isBlockElm(node)) { - node = pre; - while ((pre = node.nextSibling) && !domUtils.isBlockElm(pre)) { - node = pre; - } - this.setEndAfter(node); - break; - } - pre = node; - node = node.parentNode; - } - if (tmp.parentNode === this.endContainer) { - this.endOffset--; - } - domUtils.remove(tmp); - } - - // 扩展边界到最大 - if (!this.collapsed) { - while (this.startOffset == 0) { - if (stopFn && stopFn(this.startContainer)) { - break; - } - if (isBody(this.startContainer)) { - break; - } - this.setStartBefore(this.startContainer); - } - while ( - this.endOffset == - (this.endContainer.nodeType == 1 - ? this.endContainer.childNodes.length - : this.endContainer.nodeValue.length) - ) { - if (stopFn && stopFn(this.endContainer)) { - break; - } - if (isBody(this.endContainer)) { - break; - } - this.setEndAfter(this.endContainer); - } - } - return this; - }, - enlargeToBlockElm: function(ignoreEnd) { - while (!domUtils.isBlockElm(this.startContainer)) { - this.setStartBefore(this.startContainer); - } - if (!ignoreEnd) { - while (!domUtils.isBlockElm(this.endContainer)) { - this.setEndAfter(this.endContainer); - } - } - return this; - }, - /** - * 调整Range的边界,使其"缩小"到最合适的位置 - * @method adjustmentBoundary - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.Range:shrinkBoundary() - */ - adjustmentBoundary: function() { - if (!this.collapsed) { - while ( - !domUtils.isBody(this.startContainer) && - this.startOffset == - this.startContainer[ - this.startContainer.nodeType == 3 ? "nodeValue" : "childNodes" - ].length && - this.startContainer[ - this.startContainer.nodeType == 3 ? "nodeValue" : "childNodes" - ].length - ) { - this.setStartAfter(this.startContainer); - } - while ( - !domUtils.isBody(this.endContainer) && - !this.endOffset && - this.endContainer[ - this.endContainer.nodeType == 3 ? "nodeValue" : "childNodes" - ].length - ) { - this.setEndBefore(this.endContainer); - } - } - return this; - }, - - /** - * 给range选区中的内容添加给定的inline标签 - * @method applyInlineStyle - * @param { String } tagName 需要添加的标签名 - * @example - * ```html - *

    xxxx[xxxx]x

    ==> range.applyInlineStyle("strong") ==>

    xxxx[xxxx]x

    - * ``` - */ - - /** - * 给range选区中的内容添加给定的inline标签, 并且为标签附加上一些初始化属性。 - * @method applyInlineStyle - * @param { String } tagName 需要添加的标签名 - * @param { Object } attrs 跟随新添加的标签的属性 - * @return { UE.dom.Range } 当前选区 - * @example - * ```html - *

    xxxx[xxxx]x

    - * - * ==> - * - * - * range.applyInlineStyle("strong",{"style":"font-size:12px"}) - * - * ==> - * - *

    xxxx[xxxx]x

    - * ``` - */ - applyInlineStyle: function(tagName, attrs, list) { - if (this.collapsed) return this; - this.trimBoundary() - .enlarge(false, function(node) { - return node.nodeType == 1 && domUtils.isBlockElm(node); - }) - .adjustmentBoundary(); - var bookmark = this.createBookmark(), - end = bookmark.end, - filterFn = function(node) { - return node.nodeType == 1 - ? node.tagName.toLowerCase() != "br" - : !domUtils.isWhitespace(node); - }, - current = domUtils.getNextDomNode(bookmark.start, false, filterFn), - node, - pre, - range = this.cloneRange(); - while ( - current && - domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING - ) { - if (current.nodeType == 3 || dtd[tagName][current.tagName]) { - range.setStartBefore(current); - node = current; - while ( - node && - (node.nodeType == 3 || dtd[tagName][node.tagName]) && - node !== end - ) { - pre = node; - node = domUtils.getNextDomNode( - node, - node.nodeType == 1, - null, - function(parent) { - return dtd[tagName][parent.tagName]; - } - ); - } - var frag = range.setEndAfter(pre).extractContents(), - elm; - if (list && list.length > 0) { - var level, top; - top = level = list[0].cloneNode(false); - for (var i = 1, ci; (ci = list[i++]); ) { - level.appendChild(ci.cloneNode(false)); - level = level.firstChild; - } - elm = level; - } else { - elm = range.document.createElement(tagName); - } - if (attrs) { - domUtils.setAttributes(elm, attrs); - } - elm.appendChild(frag); - //针对嵌套span的全局样式指定,做容错处理 - if (elm.tagName == "SPAN" && attrs && attrs.style) { - utils.each(elm.getElementsByTagName("span"), function(s) { - s.style.cssText = s.style.cssText + ";" + attrs.style; - }); - } - range.insertNode(list ? top : elm); - //处理下滑线在a上的情况 - var aNode; - if ( - tagName == "span" && - attrs.style && - /text\-decoration/.test(attrs.style) && - (aNode = domUtils.findParentByTagName(elm, "a", true)) - ) { - domUtils.setAttributes(aNode, attrs); - domUtils.remove(elm, true); - elm = aNode; - } else { - domUtils.mergeSibling(elm); - domUtils.clearEmptySibling(elm); - } - //去除子节点相同的 - domUtils.mergeChild(elm, attrs); - current = domUtils.getNextDomNode(elm, false, filterFn); - domUtils.mergeToParent(elm); - if (node === end) { - break; - } - } else { - current = domUtils.getNextDomNode(current, true, filterFn); - } - } - return this.moveToBookmark(bookmark); - }, - - /** - * 移除当前选区内指定的inline标签,但保留其中的内容 - * @method removeInlineStyle - * @param { String } tagName 需要移除的标签名 - * @return { UE.dom.Range } 当前的range对象 - * @example - * ```html - * xx[xxxxyyyzz]z => range.removeInlineStyle(["em"]) => xx[xxxxyyyzz]z - * ``` - */ - - /** - * 移除当前选区内指定的一组inline标签,但保留其中的内容 - * @method removeInlineStyle - * @param { Array } tagNameArr 需要移除的标签名的数组 - * @return { UE.dom.Range } 当前的range对象 - * @see UE.dom.Range:removeInlineStyle(String) - */ - removeInlineStyle: function(tagNames) { - if (this.collapsed) return this; - tagNames = utils.isArray(tagNames) ? tagNames : [tagNames]; - this.shrinkBoundary().adjustmentBoundary(); - var start = this.startContainer, - end = this.endContainer; - while (1) { - if (start.nodeType == 1) { - if (utils.indexOf(tagNames, start.tagName.toLowerCase()) > -1) { - break; - } - if (start.tagName.toLowerCase() == "body") { - start = null; - break; - } - } - start = start.parentNode; - } - while (1) { - if (end.nodeType == 1) { - if (utils.indexOf(tagNames, end.tagName.toLowerCase()) > -1) { - break; - } - if (end.tagName.toLowerCase() == "body") { - end = null; - break; - } - } - end = end.parentNode; - } - var bookmark = this.createBookmark(), - frag, - tmpRange; - if (start) { - tmpRange = this.cloneRange() - .setEndBefore(bookmark.start) - .setStartBefore(start); - frag = tmpRange.extractContents(); - tmpRange.insertNode(frag); - domUtils.clearEmptySibling(start, true); - start.parentNode.insertBefore(bookmark.start, start); - } - if (end) { - tmpRange = this.cloneRange() - .setStartAfter(bookmark.end) - .setEndAfter(end); - frag = tmpRange.extractContents(); - tmpRange.insertNode(frag); - domUtils.clearEmptySibling(end, false, true); - end.parentNode.insertBefore(bookmark.end, end.nextSibling); - } - var current = domUtils.getNextDomNode(bookmark.start, false, function( - node - ) { - return node.nodeType == 1; - }), - next; - while (current && current !== bookmark.end) { - next = domUtils.getNextDomNode(current, true, function(node) { - return node.nodeType == 1; - }); - if (utils.indexOf(tagNames, current.tagName.toLowerCase()) > -1) { - domUtils.remove(current, true); - } - current = next; - } - return this.moveToBookmark(bookmark); - }, - - /** - * 获取当前选中的自闭合的节点 - * @method getClosedNode - * @return { Node | NULL } 如果当前选中的是自闭合节点, 则返回该节点, 否则返回NULL - */ - getClosedNode: function() { - var node; - if (!this.collapsed) { - var range = this.cloneRange().adjustmentBoundary().shrinkBoundary(); - if (selectOneNode(range)) { - var child = range.startContainer.childNodes[range.startOffset]; - if ( - child && - child.nodeType == 1 && - (dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName]) - ) { - node = child; - } - } - } - return node; - }, - - /** - * 在页面上高亮range所表示的选区 - * @method select - * @return { UE.dom.Range } 返回当前Range对象 - */ - //这里不区分ie9以上,trace:3824 - select: browser.ie - ? function(noFillData, textRange) { - var nativeRange; - if (!this.collapsed) this.shrinkBoundary(); - var node = this.getClosedNode(); - if (node && !textRange) { - try { - nativeRange = this.document.body.createControlRange(); - nativeRange.addElement(node); - nativeRange.select(); - } catch (e) {} - return this; - } - var bookmark = this.createBookmark(), - start = bookmark.start, - end; - nativeRange = this.document.body.createTextRange(); - nativeRange.moveToElementText(start); - nativeRange.moveStart("character", 1); - if (!this.collapsed) { - var nativeRangeEnd = this.document.body.createTextRange(); - end = bookmark.end; - nativeRangeEnd.moveToElementText(end); - nativeRange.setEndPoint("EndToEnd", nativeRangeEnd); - } else { - if (!noFillData && this.startContainer.nodeType != 3) { - //使用|x固定住光标 - var tmpText = this.document.createTextNode(fillChar), - tmp = this.document.createElement("span"); - tmp.appendChild(this.document.createTextNode(fillChar)); - start.parentNode.insertBefore(tmp, start); - start.parentNode.insertBefore(tmpText, start); - //当点b,i,u时,不能清除i上边的b - removeFillData(this.document, tmpText); - fillData = tmpText; - mergeSibling(tmp, "previousSibling"); - mergeSibling(start, "nextSibling"); - nativeRange.moveStart("character", -1); - nativeRange.collapse(true); - } - } - this.moveToBookmark(bookmark); - tmp && domUtils.remove(tmp); - //IE在隐藏状态下不支持range操作,catch一下 - try { - nativeRange.select(); - } catch (e) {} - return this; - } - : function(notInsertFillData) { - function checkOffset(rng) { - function check(node, offset, dir) { - if (node.nodeType == 3 && node.nodeValue.length < offset) { - rng[dir + "Offset"] = node.nodeValue.length; - } - } - check(rng.startContainer, rng.startOffset, "start"); - check(rng.endContainer, rng.endOffset, "end"); - } - var win = domUtils.getWindow(this.document), - sel = win.getSelection(), - txtNode; - //FF下关闭自动长高时滚动条在关闭dialog时会跳 - //ff下如果不body.focus将不能定位闭合光标到编辑器内 - browser.gecko ? this.document.body.focus() : win.focus(); - if (sel) { - sel.removeAllRanges(); - // trace:870 chrome/safari后边是br对于闭合得range不能定位 所以去掉了判断 - // this.startContainer.nodeType != 3 &&! ((child = this.startContainer.childNodes[this.startOffset]) && child.nodeType == 1 && child.tagName == 'BR' - if (this.collapsed && !notInsertFillData) { - // //opear如果没有节点接着,原生的不能够定位,不能在body的第一级插入空白节点 - // if (notInsertFillData && browser.opera && !domUtils.isBody(this.startContainer) && this.startContainer.nodeType == 1) { - // var tmp = this.document.createTextNode(''); - // this.insertNode(tmp).setStart(tmp, 0).collapse(true); - // } - // - //处理光标落在文本节点的情况 - //处理以下的情况 - //|xxxx - //xxxx|xxxx - //xxxx| - var start = this.startContainer, - child = start; - if (start.nodeType == 1) { - child = start.childNodes[this.startOffset]; - } - if ( - !(start.nodeType == 3 && this.startOffset) && - (child - ? !child.previousSibling || - child.previousSibling.nodeType != 3 - : !start.lastChild || start.lastChild.nodeType != 3) - ) { - txtNode = this.document.createTextNode(fillChar); - //跟着前边走 - this.insertNode(txtNode); - removeFillData(this.document, txtNode); - mergeSibling(txtNode, "previousSibling"); - mergeSibling(txtNode, "nextSibling"); - fillData = txtNode; - this.setStart(txtNode, browser.webkit ? 1 : 0).collapse(true); - } - } - var nativeRange = this.document.createRange(); - if ( - this.collapsed && - browser.opera && - this.startContainer.nodeType == 1 - ) { - var child = this.startContainer.childNodes[this.startOffset]; - if (!child) { - //往前靠拢 - child = this.startContainer.lastChild; - if (child && domUtils.isBr(child)) { - this.setStartBefore(child).collapse(true); - } - } else { - //向后靠拢 - while (child && domUtils.isBlockElm(child)) { - if (child.nodeType == 1 && child.childNodes[0]) { - child = child.childNodes[0]; - } else { - break; - } - } - child && this.setStartBefore(child).collapse(true); - } - } - //是createAddress最后一位算的不准,现在这里进行微调 - checkOffset(this); - nativeRange.setStart(this.startContainer, this.startOffset); - nativeRange.setEnd(this.endContainer, this.endOffset); - sel.addRange(nativeRange); - } - return this; - }, - - /** - * 滚动到当前range开始的位置 - * @method scrollToView - * @param { Window } win 当前range对象所属的window对象 - * @return { UE.dom.Range } 当前Range对象 - */ - - /** - * 滚动到距离当前range开始位置 offset 的位置处 - * @method scrollToView - * @param { Window } win 当前range对象所属的window对象 - * @param { Number } offset 距离range开始位置处的偏移量, 如果为正数, 则向下偏移, 反之, 则向上偏移 - * @return { UE.dom.Range } 当前Range对象 - */ - scrollToView: function(win, offset) { - win = win ? window : domUtils.getWindow(this.document); - var me = this, - span = me.document.createElement("span"); - //trace:717 - span.innerHTML = " "; - me.cloneRange().insertNode(span); - domUtils.scrollToView(span, win, offset); - domUtils.remove(span); - return me; - }, - - /** - * 判断当前选区内容是否占位符 - * @private - * @method inFillChar - * @return { Boolean } 如果是占位符返回true,否则返回false - */ - inFillChar: function() { - var start = this.startContainer; - if ( - this.collapsed && - start.nodeType == 3 && - start.nodeValue.replace(new RegExp("^" + domUtils.fillChar), "") - .length + - 1 == - start.nodeValue.length - ) { - return true; - } - return false; - }, - - /** - * 保存 - * @method createAddress - * @private - * @return { Boolean } 返回开始和结束的位置 - * @example - * ```html - * - *

    - * aaaa - * - * - * bbbb - * - * - *

    - * - * - * - * ``` - */ - createAddress: function(ignoreEnd, ignoreTxt) { - var addr = {}, - me = this; - - function getAddress(isStart) { - var node = isStart ? me.startContainer : me.endContainer; - var parents = domUtils.findParents(node, true, function(node) { - return !domUtils.isBody(node); - }), - addrs = []; - for (var i = 0, ci; (ci = parents[i++]); ) { - addrs.push(domUtils.getNodeIndex(ci, ignoreTxt)); - } - var firstIndex = 0; - - if (ignoreTxt) { - if (node.nodeType == 3) { - var tmpNode = node.previousSibling; - while (tmpNode && tmpNode.nodeType == 3) { - firstIndex += tmpNode.nodeValue.replace(fillCharReg, "").length; - tmpNode = tmpNode.previousSibling; - } - firstIndex += isStart ? me.startOffset : me.endOffset; // - (fillCharReg.test(node.nodeValue) ? 1 : 0 ) - } else { - node = node.childNodes[isStart ? me.startOffset : me.endOffset]; - if (node) { - firstIndex = domUtils.getNodeIndex(node, ignoreTxt); - } else { - node = isStart ? me.startContainer : me.endContainer; - var first = node.firstChild; - while (first) { - if (domUtils.isFillChar(first)) { - first = first.nextSibling; - continue; - } - firstIndex++; - if (first.nodeType == 3) { - while (first && first.nodeType == 3) { - first = first.nextSibling; - } - } else { - first = first.nextSibling; - } - } - } - } - } else { - firstIndex = isStart - ? domUtils.isFillChar(node) ? 0 : me.startOffset - : me.endOffset; - } - if (firstIndex < 0) { - firstIndex = 0; - } - addrs.push(firstIndex); - return addrs; - } - addr.startAddress = getAddress(true); - if (!ignoreEnd) { - addr.endAddress = me.collapsed - ? [].concat(addr.startAddress) - : getAddress(); - } - return addr; - }, - - /** - * 保存 - * @method createAddress - * @private - * @return { Boolean } 返回开始和结束的位置 - * @example - * ```html - * - *

    - * aaaa - * - * - * bbbb - * - * - *

    - * - * - * - * ``` - */ - moveToAddress: function(addr, ignoreEnd) { - var me = this; - function getNode(address, isStart) { - var tmpNode = me.document.body, - parentNode, - offset; - for (var i = 0, ci, l = address.length; i < l; i++) { - ci = address[i]; - parentNode = tmpNode; - tmpNode = tmpNode.childNodes[ci]; - if (!tmpNode) { - offset = ci; - break; - } - } - if (isStart) { - if (tmpNode) { - me.setStartBefore(tmpNode); - } else { - me.setStart(parentNode, offset); - } - } else { - if (tmpNode) { - me.setEndBefore(tmpNode); - } else { - me.setEnd(parentNode, offset); - } - } - } - getNode(addr.startAddress, true); - !ignoreEnd && addr.endAddress && getNode(addr.endAddress); - return me; - }, - - /** - * 判断给定的Range对象是否和当前Range对象表示的是同一个选区 - * @method equals - * @param { UE.dom.Range } 需要判断的Range对象 - * @return { Boolean } 如果给定的Range对象与当前Range对象表示的是同一个选区, 则返回true, 否则返回false - */ - equals: function(rng) { - for (var p in this) { - if (this.hasOwnProperty(p)) { - if (this[p] !== rng[p]) return false; - } - } - return true; - }, - - /** - * 遍历range内的节点。每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点 - * 作为其参数。 - * @method traversal - * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数 - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * - * - * - * - * - * - * - * - * - * ``` - */ - - /** - * 遍历range内的节点。 - * 每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点 - * 作为其参数。 - * 可以通过参数项 filterFn 来指定一个过滤器, 只有符合该过滤器过滤规则的节点才会触 - * 发doFn函数的执行 - * @method traversal - * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数 - * @param { Function } filterFn 过滤器, 该函数接受当前遍历的节点作为参数, 如果该节点满足过滤 - * 规则, 请返回true, 该节点会触发doFn, 否则, 请返回false, 则该节点不 - * 会触发doFn。 - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.Range:traversal(Function) - * @example - * ```html - * - * - * - * - * - * - * - * - * - * - * ``` - */ - traversal: function(doFn, filterFn) { - if (this.collapsed) return this; - var bookmark = this.createBookmark(), - end = bookmark.end, - current = domUtils.getNextDomNode(bookmark.start, false, filterFn); - while ( - current && - current !== end && - domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING - ) { - var tmpNode = domUtils.getNextDomNode(current, false, filterFn); - doFn(current); - current = tmpNode; - } - return this.moveToBookmark(bookmark); - } - }; -})(); - - -// core/Selection.js -/** - * 选集 - * @file - * @module UE.dom - * @class Selection - * @since 1.2.6.1 - */ - -/** - * 选区集合 - * @unfile - * @module UE.dom - * @class Selection - */ -(function() { - function getBoundaryInformation(range, start) { - var getIndex = domUtils.getNodeIndex; - range = range.duplicate(); - range.collapse(start); - var parent = range.parentElement(); - //如果节点里没有子节点,直接退出 - if (!parent.hasChildNodes()) { - return { container: parent, offset: 0 }; - } - var siblings = parent.children, - child, - testRange = range.duplicate(), - startIndex = 0, - endIndex = siblings.length - 1, - index = -1, - distance; - while (startIndex <= endIndex) { - index = Math.floor((startIndex + endIndex) / 2); - child = siblings[index]; - testRange.moveToElementText(child); - var position = testRange.compareEndPoints("StartToStart", range); - if (position > 0) { - endIndex = index - 1; - } else if (position < 0) { - startIndex = index + 1; - } else { - //trace:1043 - return { container: parent, offset: getIndex(child) }; - } - } - if (index == -1) { - testRange.moveToElementText(parent); - testRange.setEndPoint("StartToStart", range); - distance = testRange.text.replace(/(\r\n|\r)/g, "\n").length; - siblings = parent.childNodes; - if (!distance) { - child = siblings[siblings.length - 1]; - return { container: child, offset: child.nodeValue.length }; - } - - var i = siblings.length; - while (distance > 0) { - distance -= siblings[--i].nodeValue.length; - } - return { container: siblings[i], offset: -distance }; - } - testRange.collapse(position > 0); - testRange.setEndPoint(position > 0 ? "StartToStart" : "EndToStart", range); - distance = testRange.text.replace(/(\r\n|\r)/g, "\n").length; - if (!distance) { - return dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName] - ? { - container: parent, - offset: getIndex(child) + (position > 0 ? 0 : 1) - } - : { - container: child, - offset: position > 0 ? 0 : child.childNodes.length - }; - } - while (distance > 0) { - try { - var pre = child; - child = child[position > 0 ? "previousSibling" : "nextSibling"]; - distance -= child.nodeValue.length; - } catch (e) { - return { container: parent, offset: getIndex(pre) }; - } - } - return { - container: child, - offset: position > 0 ? -distance : child.nodeValue.length + distance - }; - } - - /** - * 将ieRange转换为Range对象 - * @param {Range} ieRange ieRange对象 - * @param {Range} range Range对象 - * @return {Range} range 返回转换后的Range对象 - */ - function transformIERangeToRange(ieRange, range) { - if (ieRange.item) { - range.selectNode(ieRange.item(0)); - } else { - var bi = getBoundaryInformation(ieRange, true); - range.setStart(bi.container, bi.offset); - if (ieRange.compareEndPoints("StartToEnd", ieRange) != 0) { - bi = getBoundaryInformation(ieRange, false); - range.setEnd(bi.container, bi.offset); - } - } - return range; - } - - /** - * 获得ieRange - * @param {Selection} sel Selection对象 - * @return {ieRange} 得到ieRange - */ - function _getIERange(sel) { - var ieRange; - //ie下有可能报错 - try { - ieRange = sel.getNative().createRange(); - } catch (e) { - return null; - } - var el = ieRange.item ? ieRange.item(0) : ieRange.parentElement(); - if ((el.ownerDocument || el) === sel.document) { - return ieRange; - } - return null; - } - - var Selection = (dom.Selection = function(doc) { - var me = this, - iframe; - me.document = doc; - if (browser.ie9below) { - iframe = domUtils.getWindow(doc).frameElement; - domUtils.on(iframe, "beforedeactivate", function() { - me._bakIERange = me.getIERange(); - }); - domUtils.on(iframe, "activate", function() { - try { - if (!_getIERange(me) && me._bakIERange) { - me._bakIERange.select(); - } - } catch (ex) {} - me._bakIERange = null; - }); - } - iframe = doc = null; - }); - - Selection.prototype = { - rangeInBody: function(rng, txtRange) { - var node = browser.ie9below || txtRange - ? rng.item ? rng.item() : rng.parentElement() - : rng.startContainer; - - return node === this.document.body || domUtils.inDoc(node, this.document); - }, - - /** - * 获取原生seleciton对象 - * @method getNative - * @return { Object } 获得selection对象 - * @example - * ```javascript - * editor.selection.getNative(); - * ``` - */ - getNative: function() { - var doc = this.document; - try { - return !doc - ? null - : browser.ie9below - ? doc.selection - : domUtils.getWindow(doc).getSelection(); - } catch (e) { - return null; - } - }, - - /** - * 获得ieRange - * @method getIERange - * @return { Object } 返回ie原生的Range - * @example - * ```javascript - * editor.selection.getIERange(); - * ``` - */ - getIERange: function() { - var ieRange = _getIERange(this); - if (!ieRange) { - if (this._bakIERange) { - return this._bakIERange; - } - } - return ieRange; - }, - - /** - * 缓存当前选区的range和选区的开始节点 - * @method cache - */ - cache: function() { - this.clear(); - this._cachedRange = this.getRange(); - this._cachedStartElement = this.getStart(); - this._cachedStartElementPath = this.getStartElementPath(); - }, - - /** - * 获取选区开始位置的父节点到body - * @method getStartElementPath - * @return { Array } 返回父节点集合 - * @example - * ```javascript - * editor.selection.getStartElementPath(); - * ``` - */ - getStartElementPath: function() { - if (this._cachedStartElementPath) { - return this._cachedStartElementPath; - } - var start = this.getStart(); - if (start) { - return domUtils.findParents(start, true, null, true); - } - return []; - }, - - /** - * 清空缓存 - * @method clear - */ - clear: function() { - this._cachedStartElementPath = this._cachedRange = this._cachedStartElement = null; - }, - - /** - * 编辑器是否得到了选区 - * @method isFocus - */ - isFocus: function() { - try { - if (browser.ie9below) { - var nativeRange = _getIERange(this); - return !!(nativeRange && this.rangeInBody(nativeRange)); - } else { - return !!this.getNative().rangeCount; - } - } catch (e) { - return false; - } - }, - - /** - * 获取选区对应的Range - * @method getRange - * @return { Object } 得到Range对象 - * @example - * ```javascript - * editor.selection.getRange(); - * ``` - */ - getRange: function() { - var me = this; - function optimze(range) { - var child = me.document.body.firstChild, - collapsed = range.collapsed; - while (child && child.firstChild) { - range.setStart(child, 0); - child = child.firstChild; - } - if (!range.startContainer) { - range.setStart(me.document.body, 0); - } - if (collapsed) { - range.collapse(true); - } - } - - if (me._cachedRange != null) { - return this._cachedRange; - } - var range = new baidu.editor.dom.Range(me.document); - - if (browser.ie9below) { - var nativeRange = me.getIERange(); - if (nativeRange) { - //备份的_bakIERange可能已经实效了,dom树发生了变化比如从源码模式切回来,所以try一下,实效就放到body开始位置 - try { - transformIERangeToRange(nativeRange, range); - } catch (e) { - optimze(range); - } - } else { - optimze(range); - } - } else { - var sel = me.getNative(); - if (sel && sel.rangeCount) { - var firstRange = sel.getRangeAt(0); - var lastRange = sel.getRangeAt(sel.rangeCount - 1); - range - .setStart(firstRange.startContainer, firstRange.startOffset) - .setEnd(lastRange.endContainer, lastRange.endOffset); - if ( - range.collapsed && - domUtils.isBody(range.startContainer) && - !range.startOffset - ) { - optimze(range); - } - } else { - //trace:1734 有可能已经不在dom树上了,标识的节点 - if ( - this._bakRange && - domUtils.inDoc(this._bakRange.startContainer, this.document) - ) { - return this._bakRange; - } - optimze(range); - } - } - return (this._bakRange = range); - }, - - /** - * 获取开始元素,用于状态反射 - * @method getStart - * @return { Element } 获得开始元素 - * @example - * ```javascript - * editor.selection.getStart(); - * ``` - */ - getStart: function() { - if (this._cachedStartElement) { - return this._cachedStartElement; - } - var range = browser.ie9below ? this.getIERange() : this.getRange(), - tmpRange, - start, - tmp, - parent; - if (browser.ie9below) { - if (!range) { - //todo 给第一个值可能会有问题 - return this.document.body.firstChild; - } - //control元素 - if (range.item) { - return range.item(0); - } - tmpRange = range.duplicate(); - //修正ie下x[xx] 闭合后 x|xx - tmpRange.text.length > 0 && tmpRange.moveStart("character", 1); - tmpRange.collapse(1); - start = tmpRange.parentElement(); - parent = tmp = range.parentElement(); - while ((tmp = tmp.parentNode)) { - if (tmp == start) { - start = parent; - break; - } - } - } else { - range.shrinkBoundary(); - start = range.startContainer; - if (start.nodeType == 1 && start.hasChildNodes()) { - start = - start.childNodes[ - Math.min(start.childNodes.length - 1, range.startOffset) - ]; - } - if (start.nodeType == 3) { - return start.parentNode; - } - } - return start; - }, - - /** - * 得到选区中的文本 - * @method getText - * @return { String } 选区中包含的文本 - * @example - * ```javascript - * editor.selection.getText(); - * ``` - */ - getText: function() { - var nativeSel, nativeRange; - if (this.isFocus() && (nativeSel = this.getNative())) { - nativeRange = browser.ie9below - ? nativeSel.createRange() - : nativeSel.getRangeAt(0); - return browser.ie9below ? nativeRange.text : nativeRange.toString(); - } - return ""; - }, - - /** - * 清除选区 - * @method clearRange - * @example - * ```javascript - * editor.selection.clearRange(); - * ``` - */ - clearRange: function() { - this.getNative()[browser.ie9below ? "empty" : "removeAllRanges"](); - } - }; -})(); - - -// core/Editor.js -/** - * 编辑器主类,包含编辑器提供的大部分公用接口 - * @file - * @module UE - * @class Editor - * @since 1.2.6.1 - */ - -/** - * UEditor公用空间,UEditor所有的功能都挂载在该空间下 - * @unfile - * @module UE - */ - -/** - * UEditor的核心类,为用户提供与编辑器交互的接口。 - * @unfile - * @module UE - * @class Editor - */ - -(function() { - var uid = 0, - _selectionChangeTimer; - - /** - * 获取编辑器的html内容,赋值到编辑器所在表单的textarea文本域里面 - * @private - * @method setValue - * @param { UE.Editor } editor 编辑器事例 - */ - function setValue(form, editor) { - var textarea; - if (editor.options.textarea) { - if (utils.isString(editor.options.textarea)) { - for ( - var i = 0, ti, tis = domUtils.getElementsByTagName(form, "textarea"); - (ti = tis[i++]); - - ) { - if (ti.id == "ueditor_textarea_" + editor.options.textarea) { - textarea = ti; - break; - } - } - } else { - textarea = editor.textarea; - } - } - if (!textarea) { - form.appendChild( - (textarea = domUtils.createElement(document, "textarea", { - name: editor.options.textarea, - id: "ueditor_textarea_" + editor.options.textarea, - style: "display:none" - })) - ); - //不要产生多个textarea - editor.textarea = textarea; - } - !textarea.getAttribute("name") && - textarea.setAttribute("name", editor.options.textarea); - textarea.value = editor.hasContents() - ? editor.options.allHtmlEnabled - ? editor.getAllHtml() - : editor.getContent(null, null, true) - : ""; - } - function loadPlugins(me) { - //初始化插件 - for (var pi in UE.plugins) { - UE.plugins[pi].call(me); - } - } - function checkCurLang(I18N) { - for (var lang in I18N) { - return lang; - } - } - - function langReadied(me) { - me.langIsReady = true; - - me.fireEvent("langReady"); - } - - /** - * 编辑器准备就绪后会触发该事件 - * @module UE - * @class Editor - * @event ready - * @remind render方法执行完成之后,会触发该事件 - * @remind - * @example - * ```javascript - * editor.addListener( 'ready', function( editor ) { - * editor.execCommand( 'focus' ); //编辑器家在完成后,让编辑器拿到焦点 - * } ); - * ``` - */ - /** - * 执行destroy方法,会触发该事件 - * @module UE - * @class Editor - * @event destroy - * @see UE.Editor:destroy() - */ - /** - * 执行reset方法,会触发该事件 - * @module UE - * @class Editor - * @event reset - * @see UE.Editor:reset() - */ - /** - * 执行focus方法,会触发该事件 - * @module UE - * @class Editor - * @event focus - * @see UE.Editor:focus(Boolean) - */ - /** - * 语言加载完成会触发该事件 - * @module UE - * @class Editor - * @event langReady - */ - /** - * 运行命令之后会触发该命令 - * @module UE - * @class Editor - * @event beforeExecCommand - */ - /** - * 运行命令之后会触发该命令 - * @module UE - * @class Editor - * @event afterExecCommand - */ - /** - * 运行命令之前会触发该命令 - * @module UE - * @class Editor - * @event firstBeforeExecCommand - */ - /** - * 在getContent方法执行之前会触发该事件 - * @module UE - * @class Editor - * @event beforeGetContent - * @see UE.Editor:getContent() - */ - /** - * 在getContent方法执行之后会触发该事件 - * @module UE - * @class Editor - * @event afterGetContent - * @see UE.Editor:getContent() - */ - /** - * 在getAllHtml方法执行时会触发该事件 - * @module UE - * @class Editor - * @event getAllHtml - * @see UE.Editor:getAllHtml() - */ - /** - * 在setContent方法执行之前会触发该事件 - * @module UE - * @class Editor - * @event beforeSetContent - * @see UE.Editor:setContent(String) - */ - /** - * 在setContent方法执行之后会触发该事件 - * @module UE - * @class Editor - * @event afterSetContent - * @see UE.Editor:setContent(String) - */ - /** - * 每当编辑器内部选区发生改变时,将触发该事件 - * @event selectionchange - * @warning 该事件的触发非常频繁,不建议在该事件的处理过程中做重量级的处理 - * @example - * ```javascript - * editor.addListener( 'selectionchange', function( editor ) { - * console.log('选区发生改变'); - * } - */ - /** - * 在所有selectionchange的监听函数执行之前,会触发该事件 - * @module UE - * @class Editor - * @event beforeSelectionChange - * @see UE.Editor:selectionchange - */ - /** - * 在所有selectionchange的监听函数执行完之后,会触发该事件 - * @module UE - * @class Editor - * @event afterSelectionChange - * @see UE.Editor:selectionchange - */ - /** - * 编辑器内容发生改变时会触发该事件 - * @module UE - * @class Editor - * @event contentChange - */ - - /** - * 以默认参数构建一个编辑器实例 - * @constructor - * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面 - * @example - * ```javascript - * var editor = new UE.Editor(); - * editor.execCommand('blod'); - * ``` - * @see UE.Config - */ - - /** - * 以给定的参数集合创建一个编辑器实例,对于未指定的参数,将应用默认参数。 - * @constructor - * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面 - * @param { Object } setting 创建编辑器的参数 - * @example - * ```javascript - * var editor = new UE.Editor(); - * editor.execCommand('blod'); - * ``` - * @see UE.Config - */ - var Editor = (UE.Editor = function(options) { - var me = this; - me.uid = uid++; - EventBase.call(me); - me.commands = {}; - me.options = utils.extend(utils.clone(options || {}), UEDITOR_CONFIG, true); - me.shortcutkeys = {}; - me.inputRules = []; - me.outputRules = []; - //设置默认的常用属性 - me.setOpt(Editor.defaultOptions(me)); - - /* 尝试异步加载后台配置 */ - me.loadServerConfig(); - - if (!utils.isEmptyObject(UE.I18N)) { - //修改默认的语言类型 - me.options.lang = checkCurLang(UE.I18N); - UE.plugin.load(me); - langReadied(me); - } else { - utils.loadFile( - document, - { - src: - me.options.langPath + - me.options.lang + - "/" + - me.options.lang + - ".js", - tag: "script", - type: "text/javascript", - defer: "defer" - }, - function() { - UE.plugin.load(me); - langReadied(me); - } - ); - } - - UE.instants["ueditorInstant" + me.uid] = me; - }); - Editor.prototype = { - registerCommand: function(name, obj) { - this.commands[name] = obj; - }, - /** - * 编辑器对外提供的监听ready事件的接口, 通过调用该方法,达到的效果与监听ready事件是一致的 - * @method ready - * @param { Function } fn 编辑器ready之后所执行的回调, 如果在注册事件之前编辑器已经ready,将会 - * 立即触发该回调。 - * @remind 需要等待编辑器加载完成后才能执行的代码,可以使用该方法传入 - * @example - * ```javascript - * editor.ready( function( editor ) { - * editor.setContent('初始化完毕'); - * } ); - * ``` - * @see UE.Editor.event:ready - */ - ready: function(fn) { - var me = this; - if (fn) { - me.isReady ? fn.apply(me) : me.addListener("ready", fn); - } - }, - - /** - * 该方法是提供给插件里面使用,设置配置项默认值 - * @method setOpt - * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置 - * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。 - * @param { String } key 编辑器的可接受的选项名称 - * @param { * } val 该选项可接受的值 - * @example - * ```javascript - * editor.setOpt( 'initContent', '欢迎使用编辑器' ); - * ``` - */ - - /** - * 该方法是提供给插件里面使用,以{key:value}集合的方式设置插件内用到的配置项默认值 - * @method setOpt - * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置 - * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。 - * @param { Object } options 将要设置的选项的键值对对象 - * @example - * ```javascript - * editor.setOpt( { - * 'initContent': '欢迎使用编辑器' - * } ); - * ``` - */ - setOpt: function(key, val) { - var obj = {}; - if (utils.isString(key)) { - obj[key] = val; - } else { - obj = key; - } - utils.extend(this.options, obj, true); - }, - getOpt: function(key) { - return this.options[key]; - }, - /** - * 销毁编辑器实例,使用textarea代替 - * @method destroy - * @example - * ```javascript - * editor.destroy(); - * ``` - */ - destroy: function() { - var me = this; - me.fireEvent("destroy"); - var container = me.container.parentNode; - var textarea = me.textarea; - if (!textarea) { - textarea = document.createElement("textarea"); - container.parentNode.insertBefore(textarea, container); - } else { - textarea.style.display = ""; - } - - textarea.style.width = me.iframe.offsetWidth + "px"; - textarea.style.height = me.iframe.offsetHeight + "px"; - textarea.value = me.getContent(); - textarea.id = me.key; - container.innerHTML = ""; - domUtils.remove(container); - var key = me.key; - //trace:2004 - for (var p in me) { - if (me.hasOwnProperty(p)) { - delete this[p]; - } - } - UE.delEditor(key); - }, - - /** - * 渲染编辑器的DOM到指定容器 - * @method render - * @param { String } containerId 指定一个容器ID - * @remind 执行该方法,会触发ready事件 - * @warning 必须且只能调用一次 - */ - - /** - * 渲染编辑器的DOM到指定容器 - * @method render - * @param { Element } containerDom 直接指定容器对象 - * @remind 执行该方法,会触发ready事件 - * @warning 必须且只能调用一次 - */ - render: function(container) { - var me = this, - options = me.options, - getStyleValue = function(attr) { - return parseInt(domUtils.getComputedStyle(container, attr)); - }; - if (utils.isString(container)) { - container = document.getElementById(container); - } - if (container) { - if (options.initialFrameWidth) { - options.minFrameWidth = options.initialFrameWidth; - } else { - options.minFrameWidth = options.initialFrameWidth = - container.offsetWidth; - } - if (options.initialFrameHeight) { - options.minFrameHeight = options.initialFrameHeight; - } else { - options.initialFrameHeight = options.minFrameHeight = - container.offsetHeight; - } - - container.style.width = /%$/.test(options.initialFrameWidth) - ? "100%" - : options.initialFrameWidth - - getStyleValue("padding-left") - - getStyleValue("padding-right") + - "px"; - container.style.height = /%$/.test(options.initialFrameHeight) - ? "100%" - : options.initialFrameHeight - - getStyleValue("padding-top") - - getStyleValue("padding-bottom") + - "px"; - - container.style.zIndex = options.zIndex; - - var html = - (ie && browser.version < 9 ? "" : "") + - "" + - "" + - "" + - (options.iframeCssUrl - ? "" - : "") + - (options.initialStyle - ? "" - : "") + - "" + - "" + - "" + - (options.iframeJsUrl - ? "" - : "") + - ""; - - container.appendChild( - domUtils.createElement(document, "iframe", { - id: "ueditor_" + me.uid, - width: "100%", - height: "100%", - frameborder: "0", - //先注释掉了,加的原因忘记了,但开启会直接导致全屏模式下内容多时不会出现滚动条 - // scrolling :'no', - src: - "javascript:void(function(){document.open();" + - (options.customDomain && document.domain != location.hostname - ? 'document.domain="' + document.domain + '";' - : "") + - 'document.write("' + - html + - '");document.close();}())' - }) - ); - container.style.overflow = "hidden"; - //解决如果是给定的百分比,会导致高度算不对的问题 - setTimeout(function() { - if (/%$/.test(options.initialFrameWidth)) { - options.minFrameWidth = options.initialFrameWidth = - container.offsetWidth; - //如果这里给定宽度,会导致ie在拖动窗口大小时,编辑区域不随着变化 - // container.style.width = options.initialFrameWidth + 'px'; - } - if (/%$/.test(options.initialFrameHeight)) { - options.minFrameHeight = options.initialFrameHeight = - container.offsetHeight; - container.style.height = options.initialFrameHeight + "px"; - } - }); - } - }, - - /** - * 编辑器初始化 - * @method _setup - * @private - * @param { Element } doc 编辑器Iframe中的文档对象 - */ - _setup: function(doc) { - var me = this, - options = me.options; - if (ie) { - doc.body.disabled = true; - doc.body.contentEditable = true; - doc.body.disabled = false; - } else { - doc.body.contentEditable = true; - } - doc.body.spellcheck = false; - me.document = doc; - me.window = doc.defaultView || doc.parentWindow; - me.iframe = me.window.frameElement; - me.body = doc.body; - me.selection = new dom.Selection(doc); - //gecko初始化就能得到range,无法判断isFocus了 - var geckoSel; - if (browser.gecko && (geckoSel = this.selection.getNative())) { - geckoSel.removeAllRanges(); - } - this._initEvents(); - //为form提交提供一个隐藏的textarea - for ( - var form = this.iframe.parentNode; - !domUtils.isBody(form); - form = form.parentNode - ) { - if (form.tagName == "FORM") { - me.form = form; - if (me.options.autoSyncData) { - domUtils.on(me.window, "blur", function() { - setValue(form, me); - }); - } else { - domUtils.on(form, "submit", function() { - setValue(this, me); - }); - } - break; - } - } - if (options.initialContent) { - if (options.autoClearinitialContent) { - var oldExecCommand = me.execCommand; - me.execCommand = function() { - me.fireEvent("firstBeforeExecCommand"); - return oldExecCommand.apply(me, arguments); - }; - this._setDefaultContent(options.initialContent); - } else this.setContent(options.initialContent, false, true); - } - - //编辑器不能为空内容 - - if (domUtils.isEmptyNode(me.body)) { - me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; - } - //如果要求focus, 就把光标定位到内容开始 - if (options.focus) { - setTimeout(function() { - me.focus(me.options.focusInEnd); - //如果自动清除开着,就不需要做selectionchange; - !me.options.autoClearinitialContent && me._selectionChange(); - }, 0); - } - if (!me.container) { - me.container = this.iframe.parentNode; - } - if (options.fullscreen && me.ui) { - me.ui.setFullScreen(true); - } - - try { - me.document.execCommand("2D-position", false, false); - } catch (e) {} - try { - me.document.execCommand("enableInlineTableEditing", false, false); - } catch (e) {} - try { - me.document.execCommand("enableObjectResizing", false, false); - } catch (e) {} - - //挂接快捷键 - me._bindshortcutKeys(); - me.isReady = 1; - me.fireEvent("ready"); - options.onready && options.onready.call(me); - if (!browser.ie9below) { - domUtils.on(me.window, ["blur", "focus"], function(e) { - //chrome下会出现alt+tab切换时,导致选区位置不对 - if (e.type == "blur") { - me._bakRange = me.selection.getRange(); - try { - me._bakNativeRange = me.selection.getNative().getRangeAt(0); - me.selection.getNative().removeAllRanges(); - } catch (e) { - me._bakNativeRange = null; - } - } else { - try { - me._bakRange && me._bakRange.select(); - } catch (e) {} - } - }); - } - //trace:1518 ff3.6body不够寛,会导致点击空白处无法获得焦点 - if (browser.gecko && browser.version <= 10902) { - //修复ff3.6初始化进来,不能点击获得焦点 - me.body.contentEditable = false; - setTimeout(function() { - me.body.contentEditable = true; - }, 100); - setInterval(function() { - me.body.style.height = me.iframe.offsetHeight - 20 + "px"; - }, 100); - } - - !options.isShow && me.setHide(); - options.readonly && me.setDisabled(); - }, - - /** - * 同步数据到编辑器所在的form - * 从编辑器的容器节点向上查找form元素,若找到,就同步编辑内容到找到的form里,为提交数据做准备,主要用于是手动提交的情况 - * 后台取得数据的键值,使用你容器上的name属性,如果没有就使用参数里的textarea项 - * @method sync - * @example - * ```javascript - * editor.sync(); - * form.sumbit(); //form变量已经指向了form元素 - * ``` - */ - - /** - * 根据传入的formId,在页面上查找要同步数据的表单,若找到,就同步编辑内容到找到的form里,为提交数据做准备 - * 后台取得数据的键值,该键值默认使用给定的编辑器容器的name属性,如果没有name属性则使用参数项里给定的“textarea”项 - * @method sync - * @param { String } formID 指定一个要同步数据的form的id,编辑器的数据会同步到你指定form下 - */ - sync: function(formId) { - var me = this, - form = formId - ? document.getElementById(formId) - : domUtils.findParent( - me.iframe.parentNode, - function(node) { - return node.tagName == "FORM"; - }, - true - ); - form && setValue(form, me); - }, - - /** - * 设置编辑器高度 - * @method setHeight - * @remind 当配置项autoHeightEnabled为真时,该方法无效 - * @param { Number } number 设置的高度值,纯数值,不带单位 - * @example - * ```javascript - * editor.setHeight(number); - * ``` - */ - setHeight: function(height, notSetHeight) { - if (height !== parseInt(this.iframe.parentNode.style.height)) { - this.iframe.parentNode.style.height = height + "px"; - } - !notSetHeight && - (this.options.minFrameHeight = this.options.initialFrameHeight = height); - this.body.style.height = height + "px"; - !notSetHeight && this.trigger("setHeight"); - }, - - /** - * 为编辑器的编辑命令提供快捷键 - * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口 - * @method addshortcutkey - * @param { Object } keyset 命令名和快捷键键值对对象,多个按钮的快捷键用“+”分隔 - * @example - * ```javascript - * editor.addshortcutkey({ - * "Bold" : "ctrl+66",//^B - * "Italic" : "ctrl+73", //^I - * }); - * ``` - */ - /** - * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口 - * @method addshortcutkey - * @param { String } cmd 触发快捷键时,响应的命令 - * @param { String } keys 快捷键的字符串,多个按钮用“+”分隔 - * @example - * ```javascript - * editor.addshortcutkey("Underline", "ctrl+85"); //^U - * ``` - */ - addshortcutkey: function(cmd, keys) { - var obj = {}; - if (keys) { - obj[cmd] = keys; - } else { - obj = cmd; - } - utils.extend(this.shortcutkeys, obj); - }, - - /** - * 对编辑器设置keydown事件监听,绑定快捷键和命令,当快捷键组合触发成功,会响应对应的命令 - * @method _bindshortcutKeys - * @private - */ - _bindshortcutKeys: function() { - var me = this, - shortcutkeys = this.shortcutkeys; - me.addListener("keydown", function(type, e) { - var keyCode = e.keyCode || e.which; - for (var i in shortcutkeys) { - var tmp = shortcutkeys[i].split(","); - for (var t = 0, ti; (ti = tmp[t++]); ) { - ti = ti.split(":"); - var key = ti[0], - param = ti[1]; - if ( - /^(ctrl)(\+shift)?\+(\d+)$/.test(key.toLowerCase()) || - /^(\d+)$/.test(key) - ) { - if ( - ((RegExp.$1 == "ctrl" ? e.ctrlKey || e.metaKey : 0) && - (RegExp.$2 != "" ? e[RegExp.$2.slice(1) + "Key"] : 1) && - keyCode == RegExp.$3) || - keyCode == RegExp.$1 - ) { - if (me.queryCommandState(i, param) != -1) - me.execCommand(i, param); - domUtils.preventDefault(e); - } - } - } - } - }); - }, - - /** - * 获取编辑器的内容 - * @method getContent - * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容 - * @return { String } 编辑器的内容字符串, 如果编辑器的内容为空,或者是空的标签内容(如:”<p><br/></p>“), 则返回空字符串 - * @example - * ```javascript - * //编辑器html内容:

    123456

    - * var content = editor.getContent(); //返回值:

    123456

    - * ``` - */ - - /** - * 获取编辑器的内容。 可以通过参数定义编辑器内置的判空规则 - * @method getContent - * @param { Function } fn 自定的判空规则, 要求该方法返回一个boolean类型的值, - * 代表当前编辑器的内容是否空, - * 如果返回true, 则该方法将直接返回空字符串;如果返回false,则编辑器将返回 - * 经过内置过滤规则处理后的内容。 - * @remind 该方法在处理包含有初始化内容的时候能起到很好的作用。 - * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容 - * @return { String } 编辑器的内容字符串 - * @example - * ```javascript - * // editor 是一个编辑器的实例 - * var content = editor.getContent( function ( editor ) { - * return editor.body.innerHTML === '欢迎使用UEditor'; //返回空字符串 - * } ); - * ``` - */ - getContent: function(cmd, fn, notSetCursor, ignoreBlank, formatter) { - var me = this; - if (cmd && utils.isFunction(cmd)) { - fn = cmd; - cmd = ""; - } - if (fn ? !fn() : !this.hasContents()) { - return ""; - } - me.fireEvent("beforegetcontent"); - var root = UE.htmlparser(me.body.innerHTML, ignoreBlank); - me.filterOutputRule(root); - me.fireEvent("aftergetcontent", cmd, root); - return root.toHtml(formatter); - }, - - /** - * 取得完整的html代码,可以直接显示成完整的html文档 - * @method getAllHtml - * @return { String } 编辑器的内容html文档字符串 - * @eaxmple - * ```javascript - * editor.getAllHtml(); //返回格式大致是: ...... - * ``` - */ - getAllHtml: function() { - var me = this, - headHtml = [], - html = ""; - me.fireEvent("getAllHtml", headHtml); - if (browser.ie && browser.version > 8) { - var headHtmlForIE9 = ""; - utils.each(me.document.styleSheets, function(si) { - headHtmlForIE9 += si.href - ? '' - : ""; - }); - utils.each(me.document.getElementsByTagName("script"), function(si) { - headHtmlForIE9 += si.outerHTML; - }); - } - return ( - "" + - (me.options.charset - ? '' - : "") + - (headHtmlForIE9 || - me.document.getElementsByTagName("head")[0].innerHTML) + - headHtml.join("\n") + - "" + - "" + - me.getContent(null, null, true) + - "" - ); - }, - - /** - * 得到编辑器的纯文本内容,但会保留段落格式 - * @method getPlainTxt - * @return { String } 编辑器带段落格式的纯文本内容字符串 - * @example - * ```javascript - * //编辑器html内容:

    1

    2

    - * console.log(editor.getPlainTxt()); //输出:"1\n2\n - * ``` - */ - getPlainTxt: function() { - var reg = new RegExp(domUtils.fillChar, "g"), - html = this.body.innerHTML.replace(/[\n\r]/g, ""); //ie要先去了\n在处理 - html = html - .replace(/<(p|div)[^>]*>(| )<\/\1>/gi, "\n") - .replace(//gi, "\n") - .replace(/<[^>/]+>/g, "") - .replace(/(\n)?<\/([^>]+)>/g, function(a, b, c) { - return dtd.$block[c] ? "\n" : b ? b : ""; - }); - //取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0 - return html - .replace(reg, "") - .replace(/\u00a0/g, " ") - .replace(/ /g, " "); - }, - - /** - * 获取编辑器中的纯文本内容,没有段落格式 - * @method getContentTxt - * @return { String } 编辑器不带段落格式的纯文本内容字符串 - * @example - * ```javascript - * //编辑器html内容:

    1

    2

    - * console.log(editor.getPlainTxt()); //输出:"12 - * ``` - */ - getContentTxt: function() { - var reg = new RegExp(domUtils.fillChar, "g"); - //取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0 - return this.body[browser.ie ? "innerText" : "textContent"] - .replace(reg, "") - .replace(/\u00a0/g, " "); - }, - - /** - * 设置编辑器的内容,可修改编辑器当前的html内容 - * @method setContent - * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容 - * @warning 该方法会触发selectionchange事件 - * @param { String } html 要插入的html内容 - * @example - * ```javascript - * editor.getContent('

    test

    '); - * ``` - */ - - /** - * 设置编辑器的内容,可修改编辑器当前的html内容 - * @method setContent - * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容 - * @warning 该方法会触发selectionchange事件 - * @param { String } html 要插入的html内容 - * @param { Boolean } isAppendTo 若传入true,不清空原来的内容,在最后插入内容,否则,清空内容再插入 - * @example - * ```javascript - * //假设设置前的编辑器内容是

    old text

    - * editor.setContent('

    new text

    ', true); //插入的结果是

    old text

    new text

    - * ``` - */ - setContent: function(html, isAppendTo, notFireSelectionchange) { - var me = this; - - me.fireEvent("beforesetcontent", html); - var root = UE.htmlparser(html); - me.filterInputRule(root); - html = root.toHtml(); - - me.body.innerHTML = (isAppendTo ? me.body.innerHTML : "") + html; - - function isCdataDiv(node) { - return node.tagName == "DIV" && node.getAttribute("cdata_tag"); - } - //给文本或者inline节点套p标签 - if (me.options.enterTag == "p") { - var child = this.body.firstChild, - tmpNode; - if ( - !child || - (child.nodeType == 1 && - (dtd.$cdata[child.tagName] || - isCdataDiv(child) || - domUtils.isCustomeNode(child)) && - child === this.body.lastChild) - ) { - this.body.innerHTML = - "

    " + - (browser.ie ? " " : "
    ") + - "

    " + - this.body.innerHTML; - } else { - var p = me.document.createElement("p"); - while (child) { - while ( - child && - (child.nodeType == 3 || - (child.nodeType == 1 && - dtd.p[child.tagName] && - !dtd.$cdata[child.tagName])) - ) { - tmpNode = child.nextSibling; - p.appendChild(child); - child = tmpNode; - } - if (p.firstChild) { - if (!child) { - me.body.appendChild(p); - break; - } else { - child.parentNode.insertBefore(p, child); - p = me.document.createElement("p"); - } - } - child = child.nextSibling; - } - } - } - me.fireEvent("aftersetcontent"); - me.fireEvent("contentchange"); - - !notFireSelectionchange && me._selectionChange(); - //清除保存的选区 - me._bakRange = me._bakIERange = me._bakNativeRange = null; - //trace:1742 setContent后gecko能得到焦点问题 - var geckoSel; - if (browser.gecko && (geckoSel = this.selection.getNative())) { - geckoSel.removeAllRanges(); - } - if (me.options.autoSyncData) { - me.form && setValue(me.form, me); - } - }, - - /** - * 让编辑器获得焦点,默认focus到编辑器头部 - * @method focus - * @example - * ```javascript - * editor.focus() - * ``` - */ - - /** - * 让编辑器获得焦点,toEnd确定focus位置 - * @method focus - * @param { Boolean } toEnd 默认focus到编辑器头部,toEnd为true时focus到内容尾部 - * @example - * ```javascript - * editor.focus(true) - * ``` - */ - focus: function(toEnd) { - try { - var me = this, - rng = me.selection.getRange(); - if (toEnd) { - var node = me.body.lastChild; - if (node && node.nodeType == 1 && !dtd.$empty[node.tagName]) { - if (domUtils.isEmptyBlock(node)) { - rng.setStartAtFirst(node); - } else { - rng.setStartAtLast(node); - } - rng.collapse(true); - } - rng.setCursor(true); - } else { - if ( - !rng.collapsed && - domUtils.isBody(rng.startContainer) && - rng.startOffset == 0 - ) { - var node = me.body.firstChild; - if (node && node.nodeType == 1 && !dtd.$empty[node.tagName]) { - rng.setStartAtFirst(node).collapse(true); - } - } - - rng.select(true); - } - this.fireEvent("focus selectionchange"); - } catch (e) {} - }, - isFocus: function() { - return this.selection.isFocus(); - }, - blur: function() { - var sel = this.selection.getNative(); - if (sel.empty && browser.ie) { - var nativeRng = document.body.createTextRange(); - nativeRng.moveToElementText(document.body); - nativeRng.collapse(true); - nativeRng.select(); - sel.empty(); - } else { - sel.removeAllRanges(); - } - - //this.fireEvent('blur selectionchange'); - }, - /** - * 初始化UE事件及部分事件代理 - * @method _initEvents - * @private - */ - _initEvents: function() { - var me = this, - doc = me.document, - win = me.window; - me._proxyDomEvent = utils.bind(me._proxyDomEvent, me); - domUtils.on( - doc, - [ - "click", - "contextmenu", - "mousedown", - "keydown", - "keyup", - "keypress", - "mouseup", - "mouseover", - "mouseout", - "selectstart" - ], - me._proxyDomEvent - ); - domUtils.on(win, ["focus", "blur"], me._proxyDomEvent); - domUtils.on(me.body, "drop", function(e) { - //阻止ff下默认的弹出新页面打开图片 - if (browser.gecko && e.stopPropagation) { - e.stopPropagation(); - } - me.fireEvent("contentchange"); - }); - domUtils.on(doc, ["mouseup", "keydown"], function(evt) { - //特殊键不触发selectionchange - if ( - evt.type == "keydown" && - (evt.ctrlKey || evt.metaKey || evt.shiftKey || evt.altKey) - ) { - return; - } - if (evt.button == 2) return; - me._selectionChange(250, evt); - }); - }, - /** - * 触发事件代理 - * @method _proxyDomEvent - * @private - * @return { * } fireEvent的返回值 - * @see UE.EventBase:fireEvent(String) - */ - _proxyDomEvent: function(evt) { - if ( - this.fireEvent("before" + evt.type.replace(/^on/, "").toLowerCase()) === - false - ) { - return false; - } - if (this.fireEvent(evt.type.replace(/^on/, ""), evt) === false) { - return false; - } - return this.fireEvent( - "after" + evt.type.replace(/^on/, "").toLowerCase() - ); - }, - /** - * 变化选区 - * @method _selectionChange - * @private - */ - _selectionChange: function(delay, evt) { - var me = this; - //有光标才做selectionchange 为了解决未focus时点击source不能触发更改工具栏状态的问题(source命令notNeedUndo=1) - // if ( !me.selection.isFocus() ){ - // return; - // } - - var hackForMouseUp = false; - var mouseX, mouseY; - if (browser.ie && browser.version < 9 && evt && evt.type == "mouseup") { - var range = this.selection.getRange(); - if (!range.collapsed) { - hackForMouseUp = true; - mouseX = evt.clientX; - mouseY = evt.clientY; - } - } - clearTimeout(_selectionChangeTimer); - _selectionChangeTimer = setTimeout(function() { - if (!me.selection || !me.selection.getNative()) { - return; - } - //修复一个IE下的bug: 鼠标点击一段已选择的文本中间时,可能在mouseup后的一段时间内取到的range是在selection的type为None下的错误值. - //IE下如果用户是拖拽一段已选择文本,则不会触发mouseup事件,所以这里的特殊处理不会对其有影响 - var ieRange; - if (hackForMouseUp && me.selection.getNative().type == "None") { - ieRange = me.document.body.createTextRange(); - try { - ieRange.moveToPoint(mouseX, mouseY); - } catch (ex) { - ieRange = null; - } - } - var bakGetIERange; - if (ieRange) { - bakGetIERange = me.selection.getIERange; - me.selection.getIERange = function() { - return ieRange; - }; - } - me.selection.cache(); - if (bakGetIERange) { - me.selection.getIERange = bakGetIERange; - } - if (me.selection._cachedRange && me.selection._cachedStartElement) { - me.fireEvent("beforeselectionchange"); - // 第二个参数causeByUi为true代表由用户交互造成的selectionchange. - me.fireEvent("selectionchange", !!evt); - me.fireEvent("afterselectionchange"); - me.selection.clear(); - } - }, delay || 50); - }, - - /** - * 执行编辑命令 - * @method _callCmdFn - * @private - * @param { String } fnName 函数名称 - * @param { * } args 传给命令函数的参数 - * @return { * } 返回命令函数运行的返回值 - */ - _callCmdFn: function(fnName, args) { - var cmdName = args[0].toLowerCase(), - cmd, - cmdFn; - cmd = this.commands[cmdName] || UE.commands[cmdName]; - cmdFn = cmd && cmd[fnName]; - //没有querycommandstate或者没有command的都默认返回0 - if ((!cmd || !cmdFn) && fnName == "queryCommandState") { - return 0; - } else if (cmdFn) { - return cmdFn.apply(this, args); - } - }, - - /** - * 执行编辑命令cmdName,完成富文本编辑效果 - * @method execCommand - * @param { String } cmdName 需要执行的命令 - * @remind 具体命令的使用请参考命令列表 - * @return { * } 返回命令函数运行的返回值 - * @example - * ```javascript - * editor.execCommand(cmdName); - * ``` - */ - execCommand: function(cmdName) { - cmdName = cmdName.toLowerCase(); - var me = this, - result, - cmd = me.commands[cmdName] || UE.commands[cmdName]; - if (!cmd || !cmd.execCommand) { - return null; - } - if (!cmd.notNeedUndo && !me.__hasEnterExecCommand) { - me.__hasEnterExecCommand = true; - if (me.queryCommandState.apply(me, arguments) != -1) { - me.fireEvent("saveScene"); - me.fireEvent.apply( - me, - ["beforeexeccommand", cmdName].concat(arguments) - ); - result = this._callCmdFn("execCommand", arguments); - //保存场景时,做了内容对比,再看是否进行contentchange触发,这里多触发了一次,去掉 - // (!cmd.ignoreContentChange && !me._ignoreContentChange) && me.fireEvent('contentchange'); - me.fireEvent.apply( - me, - ["afterexeccommand", cmdName].concat(arguments) - ); - me.fireEvent("saveScene"); - } - me.__hasEnterExecCommand = false; - } else { - result = this._callCmdFn("execCommand", arguments); - !me.__hasEnterExecCommand && - !cmd.ignoreContentChange && - !me._ignoreContentChange && - me.fireEvent("contentchange"); - } - !me.__hasEnterExecCommand && - !cmd.ignoreContentChange && - !me._ignoreContentChange && - me._selectionChange(); - return result; - }, - - /** - * 根据传入的command命令,查选编辑器当前的选区,返回命令的状态 - * @method queryCommandState - * @param { String } cmdName 需要查询的命令名称 - * @remind 具体命令的使用请参考命令列表 - * @return { Number } number 返回放前命令的状态,返回值三种情况:(-1|0|1) - * @example - * ```javascript - * editor.queryCommandState(cmdName) => (-1|0|1) - * ``` - * @see COMMAND.LIST - */ - queryCommandState: function(cmdName) { - return this._callCmdFn("queryCommandState", arguments); - }, - - /** - * 根据传入的command命令,查选编辑器当前的选区,根据命令返回相关的值 - * @method queryCommandValue - * @param { String } cmdName 需要查询的命令名称 - * @remind 具体命令的使用请参考命令列表 - * @remind 只有部分插件有此方法 - * @return { * } 返回每个命令特定的当前状态值 - * @grammar editor.queryCommandValue(cmdName) => {*} - * @see COMMAND.LIST - */ - queryCommandValue: function(cmdName) { - return this._callCmdFn("queryCommandValue", arguments); - }, - - /** - * 检查编辑区域中是否有内容 - * @method hasContents - * @remind 默认有文本内容,或者有以下节点都不认为是空 - * table,ul,ol,dl,iframe,area,base,col,hr,img,embed,input,link,meta,param - * @return { Boolean } 检查有内容返回true,否则返回false - * @example - * ```javascript - * editor.hasContents() - * ``` - */ - - /** - * 检查编辑区域中是否有内容,若包含参数tags中的节点类型,直接返回true - * @method hasContents - * @param { Array } tags 传入数组判断时用到的节点类型 - * @return { Boolean } 若文档中包含tags数组里对应的tag,返回true,否则返回false - * @example - * ```javascript - * editor.hasContents(['span']); - * ``` - */ - hasContents: function(tags) { - if (tags) { - for (var i = 0, ci; (ci = tags[i++]); ) { - if (this.document.getElementsByTagName(ci).length > 0) { - return true; - } - } - } - if (!domUtils.isEmptyBlock(this.body)) { - return true; - } - //随时添加,定义的特殊标签如果存在,不能认为是空 - tags = ["div"]; - for (i = 0; (ci = tags[i++]); ) { - var nodes = domUtils.getElementsByTagName(this.document, ci); - for (var n = 0, cn; (cn = nodes[n++]); ) { - if (domUtils.isCustomeNode(cn)) { - return true; - } - } - } - return false; - }, - - /** - * 重置编辑器,可用来做多个tab使用同一个编辑器实例 - * @method reset - * @remind 此方法会清空编辑器内容,清空回退列表,会触发reset事件 - * @example - * ```javascript - * editor.reset() - * ``` - */ - reset: function() { - this.fireEvent("reset"); - }, - - /** - * 设置当前编辑区域可以编辑 - * @method setEnabled - * @example - * ```javascript - * editor.setEnabled() - * ``` - */ - setEnabled: function() { - var me = this, - range; - if (me.body.contentEditable == "false") { - me.body.contentEditable = true; - range = me.selection.getRange(); - //有可能内容丢失了 - try { - range.moveToBookmark(me.lastBk); - delete me.lastBk; - } catch (e) { - range.setStartAtFirst(me.body).collapse(true); - } - range.select(true); - if (me.bkqueryCommandState) { - me.queryCommandState = me.bkqueryCommandState; - delete me.bkqueryCommandState; - } - if (me.bkqueryCommandValue) { - me.queryCommandValue = me.bkqueryCommandValue; - delete me.bkqueryCommandValue; - } - me.fireEvent("selectionchange"); - } - }, - enable: function() { - return this.setEnabled(); - }, - - /** 设置当前编辑区域不可编辑 - * @method setDisabled - */ - - /** 设置当前编辑区域不可编辑,except中的命令除外 - * @method setDisabled - * @param { String } except 例外命令的字符串 - * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 - * @example - * ```javascript - * editor.setDisabled('bold'); //禁用工具栏中除加粗之外的所有功能 - * ``` - */ - - /** 设置当前编辑区域不可编辑,except中的命令除外 - * @method setDisabled - * @param { Array } except 例外命令的字符串数组,数组中的命令仍然可以执行 - * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 - * @example - * ```javascript - * editor.setDisabled(['bold','insertimage']); //禁用工具栏中除加粗和插入图片之外的所有功能 - * ``` - */ - setDisabled: function(except) { - var me = this; - except = except ? (utils.isArray(except) ? except : [except]) : []; - if (me.body.contentEditable == "true") { - if (!me.lastBk) { - me.lastBk = me.selection.getRange().createBookmark(true); - } - me.body.contentEditable = false; - me.bkqueryCommandState = me.queryCommandState; - me.bkqueryCommandValue = me.queryCommandValue; - me.queryCommandState = function(type) { - if (utils.indexOf(except, type) != -1) { - return me.bkqueryCommandState.apply(me, arguments); - } - return -1; - }; - me.queryCommandValue = function(type) { - if (utils.indexOf(except, type) != -1) { - return me.bkqueryCommandValue.apply(me, arguments); - } - return null; - }; - me.fireEvent("selectionchange"); - } - }, - disable: function(except) { - return this.setDisabled(except); - }, - - /** - * 设置默认内容 - * @method _setDefaultContent - * @private - * @param { String } cont 要存入的内容 - */ - _setDefaultContent: (function() { - function clear() { - var me = this; - if (me.document.getElementById("initContent")) { - me.body.innerHTML = "

    " + (ie ? "" : "
    ") + "

    "; - me.removeListener("firstBeforeExecCommand focus", clear); - setTimeout(function() { - me.focus(); - me._selectionChange(); - }, 0); - } - } - - return function(cont) { - var me = this; - me.body.innerHTML = '

    ' + cont + "

    "; - - me.addListener("firstBeforeExecCommand focus", clear); - }; - })(), - - /** - * 显示编辑器 - * @method setShow - * @example - * ```javascript - * editor.setShow() - * ``` - */ - setShow: function() { - var me = this, - range = me.selection.getRange(); - if (me.container.style.display == "none") { - //有可能内容丢失了 - try { - range.moveToBookmark(me.lastBk); - delete me.lastBk; - } catch (e) { - range.setStartAtFirst(me.body).collapse(true); - } - //ie下focus实效,所以做了个延迟 - setTimeout(function() { - range.select(true); - }, 100); - me.container.style.display = ""; - } - }, - show: function() { - return this.setShow(); - }, - /** - * 隐藏编辑器 - * @method setHide - * @example - * ```javascript - * editor.setHide() - * ``` - */ - setHide: function() { - var me = this; - if (!me.lastBk) { - me.lastBk = me.selection.getRange().createBookmark(true); - } - me.container.style.display = "none"; - }, - hide: function() { - return this.setHide(); - }, - - /** - * 根据指定的路径,获取对应的语言资源 - * @method getLang - * @param { String } path 路径根据的是lang目录下的语言文件的路径结构 - * @return { Object | String } 根据路径返回语言资源的Json格式对象或者语言字符串 - * @example - * ```javascript - * editor.getLang('contextMenu.delete'); //如果当前是中文,那返回是的是'删除' - * ``` - */ - getLang: function(path) { - var lang = UE.I18N[this.options.lang]; - if (!lang) { - throw Error("not import language file"); - } - path = (path || "").split("."); - for (var i = 0, ci; (ci = path[i++]); ) { - lang = lang[ci]; - if (!lang) break; - } - return lang; - }, - - /** - * 计算编辑器html内容字符串的长度 - * @method getContentLength - * @return { Number } 返回计算的长度 - * @example - * ```javascript - * //编辑器html内容

    132

    - * editor.getContentLength() //返回27 - * ``` - */ - /** - * 计算编辑器当前纯文本内容的长度 - * @method getContentLength - * @param { Boolean } ingoneHtml 传入true时,只按照纯文本来计算 - * @return { Number } 返回计算的长度,内容中有hr/img/iframe标签,长度加1 - * @example - * ```javascript - * //编辑器html内容

    132

    - * editor.getContentLength() //返回3 - * ``` - */ - getContentLength: function(ingoneHtml, tagNames) { - var count = this.getContent(false, false, true).length; - if (ingoneHtml) { - tagNames = (tagNames || []).concat(["hr", "img", "iframe"]); - count = this.getContentTxt().replace(/[\t\r\n]+/g, "").length; - for (var i = 0, ci; (ci = tagNames[i++]); ) { - count += this.document.getElementsByTagName(ci).length; - } - } - return count; - }, - - /** - * 注册输入过滤规则 - * @method addInputRule - * @param { Function } rule 要添加的过滤规则 - * @example - * ```javascript - * editor.addInputRule(function(root){ - * $.each(root.getNodesByTagName('div'),function(i,node){ - * node.tagName="p"; - * }); - * }); - * ``` - */ - addInputRule: function(rule) { - this.inputRules.push(rule); - }, - - /** - * 执行注册的过滤规则 - * @method filterInputRule - * @param { UE.uNode } root 要过滤的uNode节点 - * @remind 执行editor.setContent方法和执行'inserthtml'命令后,会运行该过滤函数 - * @example - * ```javascript - * editor.filterInputRule(editor.body); - * ``` - * @see UE.Editor:addInputRule - */ - filterInputRule: function(root) { - for (var i = 0, ci; (ci = this.inputRules[i++]); ) { - ci.call(this, root); - } - }, - - /** - * 注册输出过滤规则 - * @method addOutputRule - * @param { Function } rule 要添加的过滤规则 - * @example - * ```javascript - * editor.addOutputRule(function(root){ - * $.each(root.getNodesByTagName('p'),function(i,node){ - * node.tagName="div"; - * }); - * }); - * ``` - */ - addOutputRule: function(rule) { - this.outputRules.push(rule); - }, - - /** - * 根据输出过滤规则,过滤编辑器内容 - * @method filterOutputRule - * @remind 执行editor.getContent方法的时候,会先运行该过滤函数 - * @param { UE.uNode } root 要过滤的uNode节点 - * @example - * ```javascript - * editor.filterOutputRule(editor.body); - * ``` - * @see UE.Editor:addOutputRule - */ - filterOutputRule: function(root) { - for (var i = 0, ci; (ci = this.outputRules[i++]); ) { - ci.call(this, root); - } - }, - - /** - * 根据action名称获取请求的路径 - * @method getActionUrl - * @remind 假如没有设置serverUrl,会根据imageUrl设置默认的controller路径 - * @param { String } action action名称 - * @example - * ```javascript - * editor.getActionUrl('config'); //返回 "/ueditor/php/controller.php?action=config" - * editor.getActionUrl('image'); //返回 "/ueditor/php/controller.php?action=uplaodimage" - * editor.getActionUrl('scrawl'); //返回 "/ueditor/php/controller.php?action=uplaodscrawl" - * editor.getActionUrl('imageManager'); //返回 "/ueditor/php/controller.php?action=listimage" - * ``` - */ - getActionUrl: function(action) { - var actionName = this.getOpt(action) || action, - imageUrl = this.getOpt("imageUrl"), - serverUrl = this.getOpt("serverUrl"); - - if (!serverUrl && imageUrl) { - serverUrl = imageUrl.replace(/^(.*[\/]).+([\.].+)$/, "$1controller$2"); - } - - if (serverUrl) { - serverUrl = - serverUrl + - (serverUrl.indexOf("?") == -1 ? "?" : "&") + - "action=" + - (actionName || ""); - return utils.formatUrl(serverUrl); - } else { - return ""; - } - } - }; - utils.inherits(Editor, EventBase); -})(); - - -// core/Editor.defaultoptions.js -//维护编辑器一下默认的不在插件中的配置项 -UE.Editor.defaultOptions = function(editor) { - var _url = editor.options.UEDITOR_HOME_URL; - return { - isShow: true, - initialContent: "", - initialStyle: "", - autoClearinitialContent: false, - iframeCssUrl: _url + "themes/iframe.css", - textarea: "editorValue", - focus: false, - focusInEnd: true, - autoClearEmptyNode: true, - fullscreen: false, - readonly: false, - zIndex: 999, - imagePopup: true, - enterTag: "p", - customDomain: false, - lang: "zh-cn", - langPath: _url + "lang/", - theme: "default", - themePath: _url + "themes/", - allHtmlEnabled: false, - scaleEnabled: false, - tableNativeEditInFF: false, - autoSyncData: true, - fileNameFormat: "{time}{rand:6}" - }; -}; - - -// core/loadconfig.js -(function() { - UE.Editor.prototype.loadServerConfig = function() { - var me = this; - setTimeout(function() { - try { - me.options.imageUrl && - me.setOpt( - "serverUrl", - me.options.imageUrl.replace( - /^(.*[\/]).+([\.].+)$/, - "$1controller$2" - ) - ); - - var configUrl = me.getActionUrl("config"), - isJsonp = utils.isCrossDomainUrl(configUrl); - - /* 发出ajax请求 */ - me._serverConfigLoaded = false; - - configUrl && - UE.ajax.request(configUrl, { - method: "GET", - dataType: isJsonp ? "jsonp" : "", - onsuccess: function(r) { - try { - var config = isJsonp ? r : eval("(" + r.responseText + ")"); - utils.extend(me.options, config); - me.fireEvent("serverConfigLoaded"); - me._serverConfigLoaded = true; - } catch (e) { - showErrorMsg(me.getLang("loadconfigFormatError")); - } - }, - onerror: function() { - showErrorMsg(me.getLang("loadconfigHttpError")); - } - }); - } catch (e) { - showErrorMsg(me.getLang("loadconfigError")); - } - }); - - function showErrorMsg(msg) { - console && console.error(msg); - //me.fireEvent('showMessage', { - // 'title': msg, - // 'type': 'error' - //}); - } - }; - - UE.Editor.prototype.isServerConfigLoaded = function() { - var me = this; - return me._serverConfigLoaded || false; - }; - - UE.Editor.prototype.afterConfigReady = function(handler) { - if (!handler || !utils.isFunction(handler)) return; - var me = this; - var readyHandler = function() { - handler.apply(me, arguments); - me.removeListener("serverConfigLoaded", readyHandler); - }; - - if (me.isServerConfigLoaded()) { - handler.call(me, "serverConfigLoaded"); - } else { - me.addListener("serverConfigLoaded", readyHandler); - } - }; -})(); - - -// core/ajax.js -/** - * @file - * @module UE.ajax - * @since 1.2.6.1 - */ - -/** - * 提供对ajax请求的支持 - * @module UE.ajax - */ -UE.ajax = (function() { - //创建一个ajaxRequest对象 - var fnStr = "XMLHttpRequest()"; - try { - new ActiveXObject("Msxml2.XMLHTTP"); - fnStr = "ActiveXObject('Msxml2.XMLHTTP')"; - } catch (e) { - try { - new ActiveXObject("Microsoft.XMLHTTP"); - fnStr = "ActiveXObject('Microsoft.XMLHTTP')"; - } catch (e) {} - } - var creatAjaxRequest = new Function("return new " + fnStr); - - /** - * 将json参数转化成适合ajax提交的参数列表 - * @param json - */ - function json2str(json) { - var strArr = []; - for (var i in json) { - //忽略默认的几个参数 - if ( - i == "method" || - i == "timeout" || - i == "async" || - i == "dataType" || - i == "callback" - ) - continue; - //忽略控制 - if (json[i] == undefined || json[i] == null) continue; - //传递过来的对象和函数不在提交之列 - if ( - !( - (typeof json[i]).toLowerCase() == "function" || - (typeof json[i]).toLowerCase() == "object" - ) - ) { - strArr.push(encodeURIComponent(i) + "=" + encodeURIComponent(json[i])); - } else if (utils.isArray(json[i])) { - //支持传数组内容 - for (var j = 0; j < json[i].length; j++) { - strArr.push( - encodeURIComponent(i) + "[]=" + encodeURIComponent(json[i][j]) - ); - } - } - } - return strArr.join("&"); - } - - function doAjax(url, ajaxOptions) { - var xhr = creatAjaxRequest(), - //是否超时 - timeIsOut = false, - //默认参数 - defaultAjaxOptions = { - method: "POST", - timeout: 5000, - async: true, - data: {}, //需要传递对象的话只能覆盖 - onsuccess: function() {}, - onerror: function() {} - }; - - if (typeof url === "object") { - ajaxOptions = url; - url = ajaxOptions.url; - } - if (!xhr || !url) return; - var ajaxOpts = ajaxOptions - ? utils.extend(defaultAjaxOptions, ajaxOptions) - : defaultAjaxOptions; - - var submitStr = json2str(ajaxOpts); // { name:"Jim",city:"Beijing" } --> "name=Jim&city=Beijing" - //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串 - if (!utils.isEmptyObject(ajaxOpts.data)) { - submitStr += (submitStr ? "&" : "") + json2str(ajaxOpts.data); - } - //超时检测 - var timerID = setTimeout(function() { - if (xhr.readyState != 4) { - timeIsOut = true; - xhr.abort(); - clearTimeout(timerID); - } - }, ajaxOpts.timeout); - - var method = ajaxOpts.method.toUpperCase(); - var str = - url + - (url.indexOf("?") == -1 ? "?" : "&") + - (method == "POST" ? "" : submitStr + "&noCache=" + +new Date()); - xhr.open(method, str, ajaxOpts.async); - xhr.onreadystatechange = function() { - if (xhr.readyState == 4) { - if (!timeIsOut && xhr.status == 200) { - ajaxOpts.onsuccess(xhr); - } else { - ajaxOpts.onerror(xhr); - } - } - }; - if (method == "POST") { - xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); - xhr.send(submitStr); - } else { - xhr.send(null); - } - } - - function doJsonp(url, opts) { - var successhandler = opts.onsuccess || function() {}, - scr = document.createElement("SCRIPT"), - options = opts || {}, - charset = options["charset"], - callbackField = options["jsonp"] || "callback", - callbackFnName, - timeOut = options["timeOut"] || 0, - timer, - reg = new RegExp("(\\?|&)" + callbackField + "=([^&]*)"), - matches; - - if (utils.isFunction(successhandler)) { - callbackFnName = - "bd__editor__" + Math.floor(Math.random() * 2147483648).toString(36); - window[callbackFnName] = getCallBack(0); - } else if (utils.isString(successhandler)) { - callbackFnName = successhandler; - } else { - if ((matches = reg.exec(url))) { - callbackFnName = matches[2]; - } - } - - url = url.replace(reg, "\x241" + callbackField + "=" + callbackFnName); - - if (url.search(reg) < 0) { - url += - (url.indexOf("?") < 0 ? "?" : "&") + - callbackField + - "=" + - callbackFnName; - } - - var queryStr = json2str(opts); // { name:"Jim",city:"Beijing" } --> "name=Jim&city=Beijing" - //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串 - if (!utils.isEmptyObject(opts.data)) { - queryStr += (queryStr ? "&" : "") + json2str(opts.data); - } - if (queryStr) { - url = url.replace(/\?/, "?" + queryStr + "&"); - } - - scr.onerror = getCallBack(1); - if (timeOut) { - timer = setTimeout(getCallBack(1), timeOut); - } - createScriptTag(scr, url, charset); - - function createScriptTag(scr, url, charset) { - scr.setAttribute("type", "text/javascript"); - scr.setAttribute("defer", "defer"); - charset && scr.setAttribute("charset", charset); - scr.setAttribute("src", url); - document.getElementsByTagName("head")[0].appendChild(scr); - } - - function getCallBack(onTimeOut) { - return function() { - try { - if (onTimeOut) { - options.onerror && options.onerror(); - } else { - try { - clearTimeout(timer); - successhandler.apply(window, arguments); - } catch (e) {} - } - } catch (exception) { - options.onerror && options.onerror.call(window, exception); - } finally { - options.oncomplete && options.oncomplete.apply(window, arguments); - scr.parentNode && scr.parentNode.removeChild(scr); - window[callbackFnName] = null; - try { - delete window[callbackFnName]; - } catch (e) {} - } - }; - } - } - - return { - /** - * 根据给定的参数项,向指定的url发起一个ajax请求。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求 - * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调 - * @method request - * @param { URLString } url ajax请求的url地址 - * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下: - * @example - * ```javascript - * //向sayhello.php发起一个异步的Ajax GET请求, 请求超时时间为10s, 请求完成后执行相应的回调。 - * UE.ajax.requeset( 'sayhello.php', { - * - * //请求方法。可选值: 'GET', 'POST',默认值是'POST' - * method: 'GET', - * - * //超时时间。 默认为5000, 单位是ms - * timeout: 10000, - * - * //是否是异步请求。 true为异步请求, false为同步请求 - * async: true, - * - * //请求携带的数据。如果请求为GET请求, data会经过stringify后附加到请求url之后。 - * data: { - * name: 'ueditor' - * }, - * - * //请求成功后的回调, 该回调接受当前的XMLHttpRequest对象作为参数。 - * onsuccess: function ( xhr ) { - * console.log( xhr.responseText ); - * }, - * - * //请求失败或者超时后的回调。 - * onerror: function ( xhr ) { - * alert( 'Ajax请求失败' ); - * } - * - * } ); - * ``` - */ - - /** - * 根据给定的参数项发起一个ajax请求, 参数项里必须包含一个url地址。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求 - * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调。 - * @method request - * @warning 如果在参数项里未提供一个key为“url”的地址值,则该请求将直接退出。 - * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下: - * @example - * ```javascript - * - * //向sayhello.php发起一个异步的Ajax POST请求, 请求超时时间为5s, 请求完成后不执行任何回调。 - * UE.ajax.requeset( 'sayhello.php', { - * - * //请求的地址, 该项是必须的。 - * url: 'sayhello.php' - * - * } ); - * ``` - */ - request: function(url, opts) { - if (opts && opts.dataType == "jsonp") { - doJsonp(url, opts); - } else { - doAjax(url, opts); - } - }, - getJSONP: function(url, data, fn) { - var opts = { - data: data, - oncomplete: fn - }; - doJsonp(url, opts); - } - }; -})(); - - -// core/filterword.js -/** - * UE过滤word的静态方法 - * @file - */ - -/** - * UEditor公用空间,UEditor所有的功能都挂载在该空间下 - * @module UE - */ - -/** - * 根据传入html字符串过滤word - * @module UE - * @since 1.2.6.1 - * @method filterWord - * @param { String } html html字符串 - * @return { String } 已过滤后的结果字符串 - * @example - * ```javascript - * UE.filterWord(html); - * ``` - */ -var filterWord = (UE.filterWord = (function() { - //是否是word过来的内容 - function isWordDocument(str) { - return /(class="?Mso|style="[^"]*\bmso\-|w:WordDocument|<(v|o):|lang=)/gi.test( - str - ); - } - //去掉小数 - function transUnit(v) { - v = v.replace(/[\d.]+\w+/g, function(m) { - return utils.transUnitToPx(m); - }); - return v; - } - - function filterPasteWord(str) { - return ( - str - .replace(/[\t\r\n]+/g, " ") - .replace(//gi, "") - //转换图片 - .replace(/]*>[\s\S]*?.<\/v:shape>/gi, function(str) { - //opera能自己解析出image所这里直接返回空 - if (browser.opera) { - return ""; - } - try { - //有可能是bitmap占为图,无用,直接过滤掉,主要体现在粘贴excel表格中 - if (/Bitmap/i.test(str)) { - return ""; - } - var width = str.match(/width:([ \d.]*p[tx])/i)[1], - height = str.match(/height:([ \d.]*p[tx])/i)[1], - src = str.match(/src=\s*"([^"]*)"/i)[1]; - return ( - '' - ); - } catch (e) { - return ""; - } - }) - //针对wps添加的多余标签处理 - .replace(/<\/?div[^>]*>/g, "") - //去掉多余的属性 - .replace(/v:\w+=(["']?)[^'"]+\1/g, "") - .replace( - /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi, - "" - ) - .replace( - /

    ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, - "

    $1

    " - ) - //去掉多余的属性 - .replace(/\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/gi, function( - str, - name, - marks, - val - ) { - //保留list的标示 - return name == "class" && val == "MsoListParagraph" ? str : ""; - }) - //清除多余的font/span不能匹配 有可能是空格 - .replace(/<(font|span)[^>]*>(\s*)<\/\1>/gi, function(a, b, c) { - return c.replace(/[\t\r\n ]+/g, " "); - }) - //处理style的问题 - .replace(/(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi, function( - str, - tag, - tmp, - style - ) { - var n = [], - s = style - .replace(/^\s+|\s+$/, "") - .replace(/'/g, "'") - .replace(/"/gi, "'") - .replace(/[\d.]+(cm|pt)/g, function(str) { - return utils.transUnitToPx(str); - }) - .split(/;\s*/g); - - for (var i = 0, v; (v = s[i]); i++) { - var name, - value, - parts = v.split(":"); - - if (parts.length == 2) { - name = parts[0].toLowerCase(); - value = parts[1].toLowerCase(); - if ( - (/^(background)\w*/.test(name) && - value.replace(/(initial|\s)/g, "").length == 0) || - (/^(margin)\w*/.test(name) && /^0\w+$/.test(value)) - ) { - continue; - } - - switch (name) { - case "mso-padding-alt": - case "mso-padding-top-alt": - case "mso-padding-right-alt": - case "mso-padding-bottom-alt": - case "mso-padding-left-alt": - case "mso-margin-alt": - case "mso-margin-top-alt": - case "mso-margin-right-alt": - case "mso-margin-bottom-alt": - case "mso-margin-left-alt": - //ie下会出现挤到一起的情况 - //case "mso-table-layout-alt": - case "mso-height": - case "mso-width": - case "mso-vertical-align-alt": - //trace:1819 ff下会解析出padding在table上 - if (!/]/.test(html)) { - return UE.htmlparser(html).children[0]; - } else { - return new uNode({ - type: "element", - children: [], - tagName: html - }); - } - }; - uNode.createText = function(data, noTrans) { - return new UE.uNode({ - type: "text", - data: noTrans ? data : utils.unhtml(data || "") - }); - }; - function nodeToHtml(node, arr, formatter, current) { - switch (node.type) { - case "root": - for (var i = 0, ci; (ci = node.children[i++]); ) { - //插入新行 - if ( - formatter && - ci.type == "element" && - !dtd.$inlineWithA[ci.tagName] && - i > 1 - ) { - insertLine(arr, current, true); - insertIndent(arr, current); - } - nodeToHtml(ci, arr, formatter, current); - } - break; - case "text": - isText(node, arr); - break; - case "element": - isElement(node, arr, formatter, current); - break; - case "comment": - isComment(node, arr, formatter); - } - return arr; - } - - function isText(node, arr) { - if (node.parentNode.tagName == "pre") { - //源码模式下输入html标签,不能做转换处理,直接输出 - arr.push(node.data); - } else { - arr.push( - notTransTagName[node.parentNode.tagName] - ? utils.html(node.data) - : node.data.replace(/[ ]{2}/g, "  ") - ); - } - } - - function isElement(node, arr, formatter, current) { - var attrhtml = ""; - if (node.attrs) { - attrhtml = []; - var attrs = node.attrs; - for (var a in attrs) { - //这里就针对 - //

    '

    - //这里边的\"做转换,要不用innerHTML直接被截断了,属性src - //有可能做的不够 - attrhtml.push( - a + - (attrs[a] !== undefined - ? '="' + - (notTransAttrs[a] - ? utils.html(attrs[a]).replace(/["]/g, function(a) { - return """; - }) - : utils.unhtml(attrs[a])) + - '"' - : "") - ); - } - attrhtml = attrhtml.join(" "); - } - arr.push( - "<" + - node.tagName + - (attrhtml ? " " + attrhtml : "") + - (dtd.$empty[node.tagName] ? "/" : "") + - ">" - ); - //插入新行 - if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != "pre") { - if (node.children && node.children.length) { - current = insertLine(arr, current, true); - insertIndent(arr, current); - } - } - if (node.children && node.children.length) { - for (var i = 0, ci; (ci = node.children[i++]); ) { - if ( - formatter && - ci.type == "element" && - !dtd.$inlineWithA[ci.tagName] && - i > 1 - ) { - insertLine(arr, current); - insertIndent(arr, current); - } - nodeToHtml(ci, arr, formatter, current); - } - } - if (!dtd.$empty[node.tagName]) { - if ( - formatter && - !dtd.$inlineWithA[node.tagName] && - node.tagName != "pre" - ) { - if (node.children && node.children.length) { - current = insertLine(arr, current); - insertIndent(arr, current); - } - } - arr.push(""); - } - } - - function isComment(node, arr) { - arr.push(""); - } - - function getNodeById(root, id) { - var node; - if (root.type == "element" && root.getAttr("id") == id) { - return root; - } - if (root.children && root.children.length) { - for (var i = 0, ci; (ci = root.children[i++]); ) { - if ((node = getNodeById(ci, id))) { - return node; - } - } - } - } - - function getNodesByTagName(node, tagName, arr) { - if (node.type == "element" && node.tagName == tagName) { - arr.push(node); - } - if (node.children && node.children.length) { - for (var i = 0, ci; (ci = node.children[i++]); ) { - getNodesByTagName(ci, tagName, arr); - } - } - } - function nodeTraversal(root, fn) { - if (root.children && root.children.length) { - for (var i = 0, ci; (ci = root.children[i]); ) { - nodeTraversal(ci, fn); - //ci被替换的情况,这里就不再走 fn了 - if (ci.parentNode) { - if (ci.children && ci.children.length) { - fn(ci); - } - if (ci.parentNode) i++; - } - } - } else { - fn(root); - } - } - uNode.prototype = { - /** - * 当前节点对象,转换成html文本 - * @method toHtml - * @return { String } 返回转换后的html字符串 - * @example - * ```javascript - * node.toHtml(); - * ``` - */ - - /** - * 当前节点对象,转换成html文本 - * @method toHtml - * @param { Boolean } formatter 是否格式化返回值 - * @return { String } 返回转换后的html字符串 - * @example - * ```javascript - * node.toHtml( true ); - * ``` - */ - toHtml: function(formatter) { - var arr = []; - nodeToHtml(this, arr, formatter, 0); - return arr.join(""); - }, - - /** - * 获取节点的html内容 - * @method innerHTML - * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 - * @return { String } 返回节点的html内容 - * @example - * ```javascript - * var htmlstr = node.innerHTML(); - * ``` - */ - - /** - * 设置节点的html内容 - * @method innerHTML - * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 - * @param { String } htmlstr 传入要设置的html内容 - * @return { UE.uNode } 返回节点本身 - * @example - * ```javascript - * node.innerHTML('text'); - * ``` - */ - innerHTML: function(htmlstr) { - if (this.type != "element" || dtd.$empty[this.tagName]) { - return this; - } - if (utils.isString(htmlstr)) { - if (this.children) { - for (var i = 0, ci; (ci = this.children[i++]); ) { - ci.parentNode = null; - } - } - this.children = []; - var tmpRoot = UE.htmlparser(htmlstr); - for (var i = 0, ci; (ci = tmpRoot.children[i++]); ) { - this.children.push(ci); - ci.parentNode = this; - } - return this; - } else { - var tmpRoot = new UE.uNode({ - type: "root", - children: this.children - }); - return tmpRoot.toHtml(); - } - }, - - /** - * 获取节点的纯文本内容 - * @method innerText - * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 - * @return { String } 返回节点的存文本内容 - * @example - * ```javascript - * var textStr = node.innerText(); - * ``` - */ - - /** - * 设置节点的纯文本内容 - * @method innerText - * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 - * @param { String } textStr 传入要设置的文本内容 - * @return { UE.uNode } 返回节点本身 - * @example - * ```javascript - * node.innerText('text'); - * ``` - */ - innerText: function(textStr, noTrans) { - if (this.type != "element" || dtd.$empty[this.tagName]) { - return this; - } - if (textStr) { - if (this.children) { - for (var i = 0, ci; (ci = this.children[i++]); ) { - ci.parentNode = null; - } - } - this.children = []; - this.appendChild(uNode.createText(textStr, noTrans)); - return this; - } else { - return this.toHtml().replace(/<[^>]+>/g, ""); - } - }, - - /** - * 获取当前对象的data属性 - * @method getData - * @return { Object } 若节点的type值是elemenet,返回空字符串,否则返回节点的data属性 - * @example - * ```javascript - * node.getData(); - * ``` - */ - getData: function() { - if (this.type == "element") return ""; - return this.data; - }, - - /** - * 获取当前节点下的第一个子节点 - * @method firstChild - * @return { UE.uNode } 返回第一个子节点 - * @example - * ```javascript - * node.firstChild(); //返回第一个子节点 - * ``` - */ - firstChild: function() { - // if (this.type != 'element' || dtd.$empty[this.tagName]) { - // return this; - // } - return this.children ? this.children[0] : null; - }, - - /** - * 获取当前节点下的最后一个子节点 - * @method lastChild - * @return { UE.uNode } 返回最后一个子节点 - * @example - * ```javascript - * node.lastChild(); //返回最后一个子节点 - * ``` - */ - lastChild: function() { - // if (this.type != 'element' || dtd.$empty[this.tagName] ) { - // return this; - // } - return this.children ? this.children[this.children.length - 1] : null; - }, - - /** - * 获取和当前节点有相同父亲节点的前一个节点 - * @method previousSibling - * @return { UE.uNode } 返回前一个节点 - * @example - * ```javascript - * node.children[2].previousSibling(); //返回子节点node.children[1] - * ``` - */ - previousSibling: function() { - var parent = this.parentNode; - for (var i = 0, ci; (ci = parent.children[i]); i++) { - if (ci === this) { - return i == 0 ? null : parent.children[i - 1]; - } - } - }, - - /** - * 获取和当前节点有相同父亲节点的后一个节点 - * @method nextSibling - * @return { UE.uNode } 返回后一个节点,找不到返回null - * @example - * ```javascript - * node.children[2].nextSibling(); //如果有,返回子节点node.children[3] - * ``` - */ - nextSibling: function() { - var parent = this.parentNode; - for (var i = 0, ci; (ci = parent.children[i++]); ) { - if (ci === this) { - return parent.children[i]; - } - } - }, - - /** - * 用新的节点替换当前节点 - * @method replaceChild - * @param { UE.uNode } target 要替换成该节点参数 - * @param { UE.uNode } source 要被替换掉的节点 - * @return { UE.uNode } 返回替换之后的节点对象 - * @example - * ```javascript - * node.replaceChild(newNode, childNode); //用newNode替换childNode,childNode是node的子节点 - * ``` - */ - replaceChild: function(target, source) { - if (this.children) { - if (target.parentNode) { - target.parentNode.removeChild(target); - } - for (var i = 0, ci; (ci = this.children[i]); i++) { - if (ci === source) { - this.children.splice(i, 1, target); - source.parentNode = null; - target.parentNode = this; - return target; - } - } - } - }, - - /** - * 在节点的子节点列表最后位置插入一个节点 - * @method appendChild - * @param { UE.uNode } node 要插入的节点 - * @return { UE.uNode } 返回刚插入的子节点 - * @example - * ```javascript - * node.appendChild( newNode ); //在node内插入子节点newNode - * ``` - */ - appendChild: function(node) { - if ( - this.type == "root" || - (this.type == "element" && !dtd.$empty[this.tagName]) - ) { - if (!this.children) { - this.children = []; - } - if (node.parentNode) { - node.parentNode.removeChild(node); - } - for (var i = 0, ci; (ci = this.children[i]); i++) { - if (ci === node) { - this.children.splice(i, 1); - break; - } - } - this.children.push(node); - node.parentNode = this; - return node; - } - }, - - /** - * 在传入节点的前面插入一个节点 - * @method insertBefore - * @param { UE.uNode } target 要插入的节点 - * @param { UE.uNode } source 在该参数节点前面插入 - * @return { UE.uNode } 返回刚插入的子节点 - * @example - * ```javascript - * node.parentNode.insertBefore(newNode, node); //在node节点后面插入newNode - * ``` - */ - insertBefore: function(target, source) { - if (this.children) { - if (target.parentNode) { - target.parentNode.removeChild(target); - } - for (var i = 0, ci; (ci = this.children[i]); i++) { - if (ci === source) { - this.children.splice(i, 0, target); - target.parentNode = this; - return target; - } - } - } - }, - - /** - * 在传入节点的后面插入一个节点 - * @method insertAfter - * @param { UE.uNode } target 要插入的节点 - * @param { UE.uNode } source 在该参数节点后面插入 - * @return { UE.uNode } 返回刚插入的子节点 - * @example - * ```javascript - * node.parentNode.insertAfter(newNode, node); //在node节点后面插入newNode - * ``` - */ - insertAfter: function(target, source) { - if (this.children) { - if (target.parentNode) { - target.parentNode.removeChild(target); - } - for (var i = 0, ci; (ci = this.children[i]); i++) { - if (ci === source) { - this.children.splice(i + 1, 0, target); - target.parentNode = this; - return target; - } - } - } - }, - - /** - * 从当前节点的子节点列表中,移除节点 - * @method removeChild - * @param { UE.uNode } node 要移除的节点引用 - * @param { Boolean } keepChildren 是否保留移除节点的子节点,若传入true,自动把移除节点的子节点插入到移除的位置 - * @return { * } 返回刚移除的子节点 - * @example - * ```javascript - * node.removeChild(childNode,true); //在node的子节点列表中移除child节点,并且吧child的子节点插入到移除的位置 - * ``` - */ - removeChild: function(node, keepChildren) { - if (this.children) { - for (var i = 0, ci; (ci = this.children[i]); i++) { - if (ci === node) { - this.children.splice(i, 1); - ci.parentNode = null; - if (keepChildren && ci.children && ci.children.length) { - for (var j = 0, cj; (cj = ci.children[j]); j++) { - this.children.splice(i + j, 0, cj); - cj.parentNode = this; - } - } - return ci; - } - } - } - }, - - /** - * 获取当前节点所代表的元素属性,即获取attrs对象下的属性值 - * @method getAttr - * @param { String } attrName 要获取的属性名称 - * @return { * } 返回attrs对象下的属性值 - * @example - * ```javascript - * node.getAttr('title'); - * ``` - */ - getAttr: function(attrName) { - return this.attrs && this.attrs[attrName.toLowerCase()]; - }, - - /** - * 设置当前节点所代表的元素属性,即设置attrs对象下的属性值 - * @method setAttr - * @param { String } attrName 要设置的属性名称 - * @param { * } attrVal 要设置的属性值,类型视设置的属性而定 - * @return { * } 返回attrs对象下的属性值 - * @example - * ```javascript - * node.setAttr('title','标题'); - * ``` - */ - setAttr: function(attrName, attrVal) { - if (!attrName) { - delete this.attrs; - return; - } - if (!this.attrs) { - this.attrs = {}; - } - if (utils.isObject(attrName)) { - for (var a in attrName) { - if (!attrName[a]) { - delete this.attrs[a]; - } else { - this.attrs[a.toLowerCase()] = attrName[a]; - } - } - } else { - if (!attrVal) { - delete this.attrs[attrName]; - } else { - this.attrs[attrName.toLowerCase()] = attrVal; - } - } - }, - - /** - * 获取当前节点在父节点下的位置索引 - * @method getIndex - * @return { Number } 返回索引数值,如果没有父节点,返回-1 - * @example - * ```javascript - * node.getIndex(); - * ``` - */ - getIndex: function() { - var parent = this.parentNode; - for (var i = 0, ci; (ci = parent.children[i]); i++) { - if (ci === this) { - return i; - } - } - return -1; - }, - - /** - * 在当前节点下,根据id查找节点 - * @method getNodeById - * @param { String } id 要查找的id - * @return { UE.uNode } 返回找到的节点 - * @example - * ```javascript - * node.getNodeById('textId'); - * ``` - */ - getNodeById: function(id) { - var node; - if (this.children && this.children.length) { - for (var i = 0, ci; (ci = this.children[i++]); ) { - if ((node = getNodeById(ci, id))) { - return node; - } - } - } - }, - - /** - * 在当前节点下,根据元素名称查找节点列表 - * @method getNodesByTagName - * @param { String } tagNames 要查找的元素名称 - * @return { Array } 返回找到的节点列表 - * @example - * ```javascript - * node.getNodesByTagName('span'); - * ``` - */ - getNodesByTagName: function(tagNames) { - tagNames = utils.trim(tagNames).replace(/[ ]{2,}/g, " ").split(" "); - var arr = [], - me = this; - utils.each(tagNames, function(tagName) { - if (me.children && me.children.length) { - for (var i = 0, ci; (ci = me.children[i++]); ) { - getNodesByTagName(ci, tagName, arr); - } - } - }); - return arr; - }, - - /** - * 根据样式名称,获取节点的样式值 - * @method getStyle - * @param { String } name 要获取的样式名称 - * @return { String } 返回样式值 - * @example - * ```javascript - * node.getStyle('font-size'); - * ``` - */ - getStyle: function(name) { - var cssStyle = this.getAttr("style"); - if (!cssStyle) { - return ""; - } - var reg = new RegExp("(^|;)\\s*" + name + ":([^;]+)", "i"); - var match = cssStyle.match(reg); - if (match && match[0]) { - return match[2]; - } - return ""; - }, - - /** - * 给节点设置样式 - * @method setStyle - * @param { String } name 要设置的的样式名称 - * @param { String } val 要设置的的样值 - * @example - * ```javascript - * node.setStyle('font-size', '12px'); - * ``` - */ - setStyle: function(name, val) { - function exec(name, val) { - var reg = new RegExp("(^|;)\\s*" + name + ":([^;]+;?)", "gi"); - cssStyle = cssStyle.replace(reg, "$1"); - if (val) { - cssStyle = name + ":" + utils.unhtml(val) + ";" + cssStyle; - } - } - - var cssStyle = this.getAttr("style"); - if (!cssStyle) { - cssStyle = ""; - } - if (utils.isObject(name)) { - for (var a in name) { - exec(a, name[a]); - } - } else { - exec(name, val); - } - this.setAttr("style", utils.trim(cssStyle)); - }, - - /** - * 传入一个函数,递归遍历当前节点下的所有节点 - * @method traversal - * @param { Function } fn 遍历到节点的时,传入节点作为参数,运行此函数 - * @example - * ```javascript - * traversal(node, function(){ - * console.log(node.type); - * }); - * ``` - */ - traversal: function(fn) { - if (this.children && this.children.length) { - nodeTraversal(this, fn); - } - return this; - } - }; -})(); - - -// core/htmlparser.js -/** - * html字符串转换成uNode节点 - * @file - * @module UE - * @since 1.2.6.1 - */ - -/** - * UEditor公用空间,UEditor所有的功能都挂载在该空间下 - * @unfile - * @module UE - */ - -/** - * html字符串转换成uNode节点的静态方法 - * @method htmlparser - * @param { String } htmlstr 要转换的html代码 - * @param { Boolean } ignoreBlank 若设置为true,转换的时候忽略\n\r\t等空白字符 - * @return { uNode } 给定的html片段转换形成的uNode对象 - * @example - * ```javascript - * var root = UE.htmlparser('

    htmlparser

    ', true); - * ``` - */ - -var htmlparser = (UE.htmlparser = function(htmlstr, ignoreBlank) { - //todo 原来的方式 [^"'<>\/] 有\/就不能配对上 " - ); - } - html.push(""); - } - //禁止指定table-width - return "
    这样的标签了 - //先去掉了,加上的原因忘了,这里先记录 - //var re_tag = /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/<>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g, - //以上的正则表达式无法匹配:

    - //修改为如下正则表达式: - var re_tag = /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g, - re_attr = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g; - - //ie下取得的html可能会有\n存在,要去掉,在处理replace(/[\t\r\n]*/g,'');代码高量的\n不能去除 - var allowEmptyTags = { - b: 1, - code: 1, - i: 1, - u: 1, - strike: 1, - s: 1, - tt: 1, - strong: 1, - q: 1, - samp: 1, - em: 1, - span: 1, - sub: 1, - img: 1, - sup: 1, - font: 1, - big: 1, - small: 1, - iframe: 1, - a: 1, - br: 1, - pre: 1 - }; - htmlstr = htmlstr.replace(new RegExp(domUtils.fillChar, "g"), ""); - if (!ignoreBlank) { - htmlstr = htmlstr.replace( - new RegExp( - "[\\r\\t\\n" + - (ignoreBlank ? "" : " ") + - "]*]*)>[\\r\\t\\n" + - (ignoreBlank ? "" : " ") + - "]*", - "g" - ), - function(a, b) { - //br暂时单独处理 - if (b && allowEmptyTags[b.toLowerCase()]) { - return a.replace(/(^[\n\r]+)|([\n\r]+$)/g, ""); - } - return a - .replace(new RegExp("^[\\r\\n" + (ignoreBlank ? "" : " ") + "]+"), "") - .replace( - new RegExp("[\\r\\n" + (ignoreBlank ? "" : " ") + "]+$"), - "" - ); - } - ); - } - - var notTransAttrs = { - href: 1, - src: 1 - }; - - var uNode = UE.uNode, - needParentNode = { - td: "tr", - tr: ["tbody", "thead", "tfoot"], - tbody: "table", - th: "tr", - thead: "table", - tfoot: "table", - caption: "table", - li: ["ul", "ol"], - dt: "dl", - dd: "dl", - option: "select" - }, - needChild = { - ol: "li", - ul: "li" - }; - - function text(parent, data) { - if (needChild[parent.tagName]) { - var tmpNode = uNode.createElement(needChild[parent.tagName]); - parent.appendChild(tmpNode); - tmpNode.appendChild(uNode.createText(data)); - parent = tmpNode; - } else { - parent.appendChild(uNode.createText(data)); - } - } - - function element(parent, tagName, htmlattr) { - var needParentTag; - if ((needParentTag = needParentNode[tagName])) { - var tmpParent = parent, - hasParent; - while (tmpParent.type != "root") { - if ( - utils.isArray(needParentTag) - ? utils.indexOf(needParentTag, tmpParent.tagName) != -1 - : needParentTag == tmpParent.tagName - ) { - parent = tmpParent; - hasParent = true; - break; - } - tmpParent = tmpParent.parentNode; - } - if (!hasParent) { - parent = element( - parent, - utils.isArray(needParentTag) ? needParentTag[0] : needParentTag - ); - } - } - //按dtd处理嵌套 - // if(parent.type != 'root' && !dtd[parent.tagName][tagName]) - // parent = parent.parentNode; - var elm = new uNode({ - parentNode: parent, - type: "element", - tagName: tagName.toLowerCase(), - //是自闭合的处理一下 - children: dtd.$empty[tagName] ? null : [] - }); - //如果属性存在,处理属性 - if (htmlattr) { - var attrs = {}, - match; - while ((match = re_attr.exec(htmlattr))) { - attrs[match[1].toLowerCase()] = notTransAttrs[match[1].toLowerCase()] - ? match[2] || match[3] || match[4] - : utils.unhtml(match[2] || match[3] || match[4]); - } - elm.attrs = attrs; - } - //trace:3970 - // //如果parent下不能放elm - // if(dtd.$inline[parent.tagName] && dtd.$block[elm.tagName] && !dtd[parent.tagName][elm.tagName]){ - // parent = parent.parentNode; - // elm.parentNode = parent; - // } - parent.children.push(elm); - //如果是自闭合节点返回父亲节点 - return dtd.$empty[tagName] ? parent : elm; - } - - function comment(parent, data) { - parent.children.push( - new uNode({ - type: "comment", - data: data, - parentNode: parent - }) - ); - } - - var match, - currentIndex = 0, - nextIndex = 0; - //设置根节点 - var root = new uNode({ - type: "root", - children: [] - }); - var currentParent = root; - - while ((match = re_tag.exec(htmlstr))) { - currentIndex = match.index; - try { - if (currentIndex > nextIndex) { - //text node - text(currentParent, htmlstr.slice(nextIndex, currentIndex)); - } - if (match[3]) { - if (dtd.$cdata[currentParent.tagName]) { - text(currentParent, match[0]); - } else { - //start tag - currentParent = element( - currentParent, - match[3].toLowerCase(), - match[4] - ); - } - } else if (match[1]) { - if (currentParent.type != "root") { - if (dtd.$cdata[currentParent.tagName] && !dtd.$cdata[match[1]]) { - text(currentParent, match[0]); - } else { - var tmpParent = currentParent; - while ( - currentParent.type == "element" && - currentParent.tagName != match[1].toLowerCase() - ) { - currentParent = currentParent.parentNode; - if (currentParent.type == "root") { - currentParent = tmpParent; - throw "break"; - } - } - //end tag - currentParent = currentParent.parentNode; - } - } - } else if (match[2]) { - //comment - comment(currentParent, match[2]); - } - } catch (e) {} - - nextIndex = re_tag.lastIndex; - } - //如果结束是文本,就有可能丢掉,所以这里手动判断一下 - //例如
  • sdfsdfsdf
  • sdfsdfsdfsdf - if (nextIndex < htmlstr.length) { - text(currentParent, htmlstr.slice(nextIndex)); - } - return root; -}); - - -// core/filternode.js -/** - * UE过滤节点的静态方法 - * @file - */ - -/** - * UEditor公用空间,UEditor所有的功能都挂载在该空间下 - * @module UE - */ - -/** - * 根据传入节点和过滤规则过滤相应节点 - * @module UE - * @since 1.2.6.1 - * @method filterNode - * @param { Object } root 指定root节点 - * @param { Object } rules 过滤规则json对象 - * @example - * ```javascript - * UE.filterNode(root,editor.options.filterRules); - * ``` - */ -var filterNode = (UE.filterNode = (function() { - function filterNode(node, rules) { - switch (node.type) { - case "text": - break; - case "element": - var val; - if ((val = rules[node.tagName])) { - if (val === "-") { - node.parentNode.removeChild(node); - } else if (utils.isFunction(val)) { - var parentNode = node.parentNode, - index = node.getIndex(); - val(node); - if (node.parentNode) { - if (node.children) { - for (var i = 0, ci; (ci = node.children[i]); ) { - filterNode(ci, rules); - if (ci.parentNode) { - i++; - } - } - } - } else { - for (var i = index, ci; (ci = parentNode.children[i]); ) { - filterNode(ci, rules); - if (ci.parentNode) { - i++; - } - } - } - } else { - var attrs = val["$"]; - if (attrs && node.attrs) { - var tmpAttrs = {}, - tmpVal; - for (var a in attrs) { - tmpVal = node.getAttr(a); - //todo 只先对style单独处理 - if (a == "style" && utils.isArray(attrs[a])) { - var tmpCssStyle = []; - utils.each(attrs[a], function(v) { - var tmp; - if ((tmp = node.getStyle(v))) { - tmpCssStyle.push(v + ":" + tmp); - } - }); - tmpVal = tmpCssStyle.join(";"); - } - if (tmpVal) { - tmpAttrs[a] = tmpVal; - } - } - node.attrs = tmpAttrs; - } - if (node.children) { - for (var i = 0, ci; (ci = node.children[i]); ) { - filterNode(ci, rules); - if (ci.parentNode) { - i++; - } - } - } - } - } else { - //如果不在名单里扣出子节点并删除该节点,cdata除外 - if (dtd.$cdata[node.tagName]) { - node.parentNode.removeChild(node); - } else { - var parentNode = node.parentNode, - index = node.getIndex(); - node.parentNode.removeChild(node, true); - for (var i = index, ci; (ci = parentNode.children[i]); ) { - filterNode(ci, rules); - if (ci.parentNode) { - i++; - } - } - } - } - break; - case "comment": - node.parentNode.removeChild(node); - } - } - return function(root, rules) { - if (utils.isEmptyObject(rules)) { - return root; - } - var val; - if ((val = rules["-"])) { - utils.each(val.split(" "), function(k) { - rules[k] = "-"; - }); - } - for (var i = 0, ci; (ci = root.children[i]); ) { - filterNode(ci, rules); - if (ci.parentNode) { - i++; - } - } - return root; - }; -})()); - - -// core/plugin.js -/** - * Created with JetBrains PhpStorm. - * User: campaign - * Date: 10/8/13 - * Time: 6:15 PM - * To change this template use File | Settings | File Templates. - */ -UE.plugin = (function() { - var _plugins = {}; - return { - register: function(pluginName, fn, oldOptionName, afterDisabled) { - if (oldOptionName && utils.isFunction(oldOptionName)) { - afterDisabled = oldOptionName; - oldOptionName = null; - } - _plugins[pluginName] = { - optionName: oldOptionName || pluginName, - execFn: fn, - //当插件被禁用时执行 - afterDisabled: afterDisabled - }; - }, - load: function(editor) { - utils.each(_plugins, function(plugin) { - var _export = plugin.execFn.call(editor); - if (editor.options[plugin.optionName] !== false) { - if (_export) { - //后边需要再做扩展 - utils.each(_export, function(v, k) { - switch (k.toLowerCase()) { - case "shortcutkey": - editor.addshortcutkey(v); - break; - case "bindevents": - utils.each(v, function(fn, eventName) { - editor.addListener(eventName, fn); - }); - break; - case "bindmultievents": - utils.each(utils.isArray(v) ? v : [v], function(event) { - var types = utils.trim(event.type).split(/\s+/); - utils.each(types, function(eventName) { - editor.addListener(eventName, event.handler); - }); - }); - break; - case "commands": - utils.each(v, function(execFn, execName) { - editor.commands[execName] = execFn; - }); - break; - case "outputrule": - editor.addOutputRule(v); - break; - case "inputrule": - editor.addInputRule(v); - break; - case "defaultoptions": - editor.setOpt(v); - } - }); - } - } else if (plugin.afterDisabled) { - plugin.afterDisabled.call(editor); - } - }); - //向下兼容 - utils.each(UE.plugins, function(plugin) { - plugin.call(editor); - }); - }, - run: function(pluginName, editor) { - var plugin = _plugins[pluginName]; - if (plugin) { - plugin.exeFn.call(editor); - } - } - }; -})(); - - -// core/keymap.js -var keymap = (UE.keymap = { - Backspace: 8, - Tab: 9, - Enter: 13, - - Shift: 16, - Control: 17, - Alt: 18, - CapsLock: 20, - - Esc: 27, - - Spacebar: 32, - - PageUp: 33, - PageDown: 34, - End: 35, - Home: 36, - - Left: 37, - Up: 38, - Right: 39, - Down: 40, - - Insert: 45, - - Del: 46, - - NumLock: 144, - - Cmd: 91, - - "=": 187, - "-": 189, - - b: 66, - i: 73, - //回退 - z: 90, - y: 89, - //粘贴 - v: 86, - x: 88, - - s: 83, - - n: 78 -}); - - -// core/localstorage.js -//存储媒介封装 -var LocalStorage = (UE.LocalStorage = (function() { - var storage = window.localStorage || getUserData() || null, - LOCAL_FILE = "localStorage"; - - return { - saveLocalData: function(key, data) { - if (storage && data) { - storage.setItem(key, data); - return true; - } - - return false; - }, - - getLocalData: function(key) { - if (storage) { - return storage.getItem(key); - } - - return null; - }, - - removeItem: function(key) { - storage && storage.removeItem(key); - } - }; - - function getUserData() { - var container = document.createElement("div"); - container.style.display = "none"; - - if (!container.addBehavior) { - return null; - } - - container.addBehavior("#default#userdata"); - - return { - getItem: function(key) { - var result = null; - - try { - document.body.appendChild(container); - container.load(LOCAL_FILE); - result = container.getAttribute(key); - document.body.removeChild(container); - } catch (e) {} - - return result; - }, - - setItem: function(key, value) { - document.body.appendChild(container); - container.setAttribute(key, value); - container.save(LOCAL_FILE); - document.body.removeChild(container); - }, - - //// 暂时没有用到 - //clear: function () { - // - // var expiresTime = new Date(); - // expiresTime.setFullYear(expiresTime.getFullYear() - 1); - // document.body.appendChild(container); - // container.expires = expiresTime.toUTCString(); - // container.save(LOCAL_FILE); - // document.body.removeChild(container); - // - //}, - - removeItem: function(key) { - document.body.appendChild(container); - container.removeAttribute(key); - container.save(LOCAL_FILE); - document.body.removeChild(container); - } - }; - } -})()); - -(function() { - var ROOTKEY = "ueditor_preference"; - - UE.Editor.prototype.setPreferences = function(key, value) { - var obj = {}; - if (utils.isString(key)) { - obj[key] = value; - } else { - obj = key; - } - var data = LocalStorage.getLocalData(ROOTKEY); - if (data && (data = utils.str2json(data))) { - utils.extend(data, obj); - } else { - data = obj; - } - data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data)); - }; - - UE.Editor.prototype.getPreferences = function(key) { - var data = LocalStorage.getLocalData(ROOTKEY); - if (data && (data = utils.str2json(data))) { - return key ? data[key] : data; - } - return null; - }; - - UE.Editor.prototype.removePreferences = function(key) { - var data = LocalStorage.getLocalData(ROOTKEY); - if (data && (data = utils.str2json(data))) { - data[key] = undefined; - delete data[key]; - } - data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data)); - }; -})(); - - -// plugins/defaultfilter.js -///import core -///plugin 编辑器默认的过滤转换机制 - -UE.plugins["defaultfilter"] = function() { - var me = this; - me.setOpt({ - allowDivTransToP: true, - disabledTableInTable: true, - rgb2Hex: true - }); - //默认的过滤处理 - //进入编辑器的内容处理 - me.addInputRule(function(root) { - var allowDivTransToP = this.options.allowDivTransToP; - var val; - function tdParent(node) { - while (node && node.type == "element") { - if (node.tagName == "td") { - return true; - } - node = node.parentNode; - } - return false; - } - //进行默认的处理 - root.traversal(function(node) { - if (node.type == "element") { - if ( - !dtd.$cdata[node.tagName] && - me.options.autoClearEmptyNode && - dtd.$inline[node.tagName] && - !dtd.$empty[node.tagName] && - (!node.attrs || utils.isEmptyObject(node.attrs)) - ) { - if (!node.firstChild()) node.parentNode.removeChild(node); - else if ( - node.tagName == "span" && - (!node.attrs || utils.isEmptyObject(node.attrs)) - ) { - node.parentNode.removeChild(node, true); - } - return; - } - switch (node.tagName) { - case "style": - case "script": - node.setAttr({ - cdata_tag: node.tagName, - cdata_data: node.innerHTML() || "", - _ue_custom_node_: "true" - }); - node.tagName = "div"; - node.innerHTML(""); - break; - case "a": - if ((val = node.getAttr("href"))) { - node.setAttr("_href", val); - } - break; - case "img": - //todo base64暂时去掉,后边做远程图片上传后,干掉这个 - if ((val = node.getAttr("src"))) { - if (/^data:/.test(val)) { - node.parentNode.removeChild(node); - break; - } - } - node.setAttr("_src", node.getAttr("src")); - break; - case "span": - if (browser.webkit && (val = node.getStyle("white-space"))) { - if (/nowrap|normal/.test(val)) { - node.setStyle("white-space", ""); - if ( - me.options.autoClearEmptyNode && - utils.isEmptyObject(node.attrs) - ) { - node.parentNode.removeChild(node, true); - } - } - } - val = node.getAttr("id"); - if (val && /^_baidu_bookmark_/i.test(val)) { - node.parentNode.removeChild(node); - } - break; - case "p": - if ((val = node.getAttr("align"))) { - node.setAttr("align"); - node.setStyle("text-align", val); - } - //trace:3431 - // var cssStyle = node.getAttr('style'); - // if (cssStyle) { - // cssStyle = cssStyle.replace(/(margin|padding)[^;]+/g, ''); - // node.setAttr('style', cssStyle) - // - // } - //p标签不允许嵌套 - utils.each(node.children, function(n) { - if (n.type == "element" && n.tagName == "p") { - var next = n.nextSibling(); - node.parentNode.insertAfter(n, node); - var last = n; - while (next) { - var tmp = next.nextSibling(); - node.parentNode.insertAfter(next, last); - last = next; - next = tmp; - } - return false; - } - }); - if (!node.firstChild()) { - node.innerHTML(browser.ie ? " " : "
    "); - } - break; - case "div": - if (node.getAttr("cdata_tag")) { - break; - } - //针对代码这里不处理插入代码的div - val = node.getAttr("class"); - if (val && /^line number\d+/.test(val)) { - break; - } - if (!allowDivTransToP) { - break; - } - var tmpNode, - p = UE.uNode.createElement("p"); - while ((tmpNode = node.firstChild())) { - if ( - tmpNode.type == "text" || - !UE.dom.dtd.$block[tmpNode.tagName] - ) { - p.appendChild(tmpNode); - } else { - if (p.firstChild()) { - node.parentNode.insertBefore(p, node); - p = UE.uNode.createElement("p"); - } else { - node.parentNode.insertBefore(tmpNode, node); - } - } - } - if (p.firstChild()) { - node.parentNode.insertBefore(p, node); - } - node.parentNode.removeChild(node); - break; - case "dl": - node.tagName = "ul"; - break; - case "dt": - case "dd": - node.tagName = "li"; - break; - case "li": - var className = node.getAttr("class"); - if (!className || !/list\-/.test(className)) { - node.setAttr(); - } - var tmpNodes = node.getNodesByTagName("ol ul"); - UE.utils.each(tmpNodes, function(n) { - node.parentNode.insertAfter(n, node); - }); - break; - case "td": - case "th": - case "caption": - if (!node.children || !node.children.length) { - node.appendChild( - browser.ie11below - ? UE.uNode.createText(" ") - : UE.uNode.createElement("br") - ); - } - break; - case "table": - if (me.options.disabledTableInTable && tdParent(node)) { - node.parentNode.insertBefore( - UE.uNode.createText(node.innerText()), - node - ); - node.parentNode.removeChild(node); - } - } - } - // if(node.type == 'comment'){ - // node.parentNode.removeChild(node); - // } - }); - }); - - //从编辑器出去的内容处理 - me.addOutputRule(function(root) { - var val; - root.traversal(function(node) { - if (node.type == "element") { - if ( - me.options.autoClearEmptyNode && - dtd.$inline[node.tagName] && - !dtd.$empty[node.tagName] && - (!node.attrs || utils.isEmptyObject(node.attrs)) - ) { - if (!node.firstChild()) node.parentNode.removeChild(node); - else if ( - node.tagName == "span" && - (!node.attrs || utils.isEmptyObject(node.attrs)) - ) { - node.parentNode.removeChild(node, true); - } - return; - } - switch (node.tagName) { - case "div": - if ((val = node.getAttr("cdata_tag"))) { - node.tagName = val; - node.appendChild(UE.uNode.createText(node.getAttr("cdata_data"))); - node.setAttr({ - cdata_tag: "", - cdata_data: "", - _ue_custom_node_: "" - }); - } - break; - case "a": - if ((val = node.getAttr("_href"))) { - node.setAttr({ - href: utils.html(val), - _href: "" - }); - } - break; - break; - case "span": - val = node.getAttr("id"); - if (val && /^_baidu_bookmark_/i.test(val)) { - node.parentNode.removeChild(node); - } - //将color的rgb格式转换为#16进制格式 - if (me.getOpt("rgb2Hex")) { - var cssStyle = node.getAttr("style"); - if (cssStyle) { - node.setAttr( - "style", - cssStyle.replace(/rgba?\(([\d,\s]+)\)/g, function(a, value) { - var array = value.split(","); - if (array.length > 3) return ""; - value = "#"; - for (var i = 0, color; (color = array[i++]); ) { - color = parseInt( - color.replace(/[^\d]/gi, ""), - 10 - ).toString(16); - value += color.length == 1 ? "0" + color : color; - } - return value.toUpperCase(); - }) - ); - } - } - break; - case "img": - if ((val = node.getAttr("_src"))) { - node.setAttr({ - src: node.getAttr("_src"), - _src: "" - }); - } - } - } - }); - }); -}; - - -// plugins/inserthtml.js -/** - * 插入html字符串插件 - * @file - * @since 1.2.6.1 - */ - -/** - * 插入html代码 - * @command inserthtml - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } html 插入的html字符串 - * @remaind 插入的标签内容是在当前的选区位置上插入,如果当前是闭合状态,那直接插入内容, 如果当前是选中状态,将先清除当前选中内容后,再做插入 - * @warning 注意:该命令会对当前选区的位置,对插入的内容进行过滤转换处理。 过滤的规则遵循html语意化的原则。 - * @example - * ```javascript - * //xxx[BB]xxx 当前选区为非闭合选区,选中BB这两个文本 - * //执行命令,插入CC - * //插入后的效果 xxxCCxxx - * //

    xx|xxx

    当前选区为闭合状态 - * //插入

    CC

    - * //结果

    xx

    CC

    xxx

    - * //

    xxxx

    |

    xxx

    当前选区在两个p标签之间 - * //插入 xxxx - * //结果

    xxxx

    xxxx

    xxx

    - * ``` - */ - -UE.commands["inserthtml"] = { - execCommand: function(command, html, notNeedFilter) { - var me = this, - range, - div; - if (!html) { - return; - } - if (me.fireEvent("beforeinserthtml", html) === true) { - return; - } - range = me.selection.getRange(); - div = range.document.createElement("div"); - div.style.display = "inline"; - - if (!notNeedFilter) { - var root = UE.htmlparser(html); - //如果给了过滤规则就先进行过滤 - if (me.options.filterRules) { - UE.filterNode(root, me.options.filterRules); - } - //执行默认的处理 - me.filterInputRule(root); - html = root.toHtml(); - } - div.innerHTML = utils.trim(html); - - if (!range.collapsed) { - var tmpNode = range.startContainer; - if (domUtils.isFillChar(tmpNode)) { - range.setStartBefore(tmpNode); - } - tmpNode = range.endContainer; - if (domUtils.isFillChar(tmpNode)) { - range.setEndAfter(tmpNode); - } - range.txtToElmBoundary(); - //结束边界可能放到了br的前边,要把br包含进来 - // x[xxx]
    - if (range.endContainer && range.endContainer.nodeType == 1) { - tmpNode = range.endContainer.childNodes[range.endOffset]; - if (tmpNode && domUtils.isBr(tmpNode)) { - range.setEndAfter(tmpNode); - } - } - if (range.startOffset == 0) { - tmpNode = range.startContainer; - if (domUtils.isBoundaryNode(tmpNode, "firstChild")) { - tmpNode = range.endContainer; - if ( - range.endOffset == - (tmpNode.nodeType == 3 - ? tmpNode.nodeValue.length - : tmpNode.childNodes.length) && - domUtils.isBoundaryNode(tmpNode, "lastChild") - ) { - me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; - range.setStart(me.body.firstChild, 0).collapse(true); - } - } - } - !range.collapsed && range.deleteContents(); - if (range.startContainer.nodeType == 1) { - var child = range.startContainer.childNodes[range.startOffset], - pre; - if ( - child && - domUtils.isBlockElm(child) && - (pre = child.previousSibling) && - domUtils.isBlockElm(pre) - ) { - range.setEnd(pre, pre.childNodes.length).collapse(); - while (child.firstChild) { - pre.appendChild(child.firstChild); - } - domUtils.remove(child); - } - } - } - - var child, - parent, - pre, - tmp, - hadBreak = 0, - nextNode; - //如果当前位置选中了fillchar要干掉,要不会产生空行 - if (range.inFillChar()) { - child = range.startContainer; - if (domUtils.isFillChar(child)) { - range.setStartBefore(child).collapse(true); - domUtils.remove(child); - } else if (domUtils.isFillChar(child, true)) { - child.nodeValue = child.nodeValue.replace(fillCharReg, ""); - range.startOffset--; - range.collapsed && range.collapse(true); - } - } - //列表单独处理 - var li = domUtils.findParentByTagName(range.startContainer, "li", true); - if (li) { - var next, last; - while ((child = div.firstChild)) { - //针对hr单独处理一下先 - while ( - child && - (child.nodeType == 3 || - !domUtils.isBlockElm(child) || - child.tagName == "HR") - ) { - next = child.nextSibling; - range.insertNode(child).collapse(); - last = child; - child = next; - } - if (child) { - if (/^(ol|ul)$/i.test(child.tagName)) { - while (child.firstChild) { - last = child.firstChild; - domUtils.insertAfter(li, child.firstChild); - li = li.nextSibling; - } - domUtils.remove(child); - } else { - var tmpLi; - next = child.nextSibling; - tmpLi = me.document.createElement("li"); - domUtils.insertAfter(li, tmpLi); - tmpLi.appendChild(child); - last = child; - child = next; - li = tmpLi; - } - } - } - li = domUtils.findParentByTagName(range.startContainer, "li", true); - if (domUtils.isEmptyBlock(li)) { - domUtils.remove(li); - } - if (last) { - range.setStartAfter(last).collapse(true).select(true); - } - } else { - while ((child = div.firstChild)) { - if (hadBreak) { - var p = me.document.createElement("p"); - while (child && (child.nodeType == 3 || !dtd.$block[child.tagName])) { - nextNode = child.nextSibling; - p.appendChild(child); - child = nextNode; - } - if (p.firstChild) { - child = p; - } - } - range.insertNode(child); - nextNode = child.nextSibling; - if ( - !hadBreak && - child.nodeType == domUtils.NODE_ELEMENT && - domUtils.isBlockElm(child) - ) { - parent = domUtils.findParent(child, function(node) { - return domUtils.isBlockElm(node); - }); - if ( - parent && - parent.tagName.toLowerCase() != "body" && - !( - dtd[parent.tagName][child.nodeName] && child.parentNode === parent - ) - ) { - if (!dtd[parent.tagName][child.nodeName]) { - pre = parent; - } else { - tmp = child.parentNode; - while (tmp !== parent) { - pre = tmp; - tmp = tmp.parentNode; - } - } - - domUtils.breakParent(child, pre || tmp); - //去掉break后前一个多余的节点

    |<[p> ==>

    |

    - var pre = child.previousSibling; - domUtils.trimWhiteTextNode(pre); - if (!pre.childNodes.length) { - domUtils.remove(pre); - } - //trace:2012,在非ie的情况,切开后剩下的节点有可能不能点入光标添加br占位 - - if ( - !browser.ie && - (next = child.nextSibling) && - domUtils.isBlockElm(next) && - next.lastChild && - !domUtils.isBr(next.lastChild) - ) { - next.appendChild(me.document.createElement("br")); - } - hadBreak = 1; - } - } - var next = child.nextSibling; - if (!div.firstChild && next && domUtils.isBlockElm(next)) { - range.setStart(next, 0).collapse(true); - break; - } - range.setEndAfter(child).collapse(); - } - - child = range.startContainer; - - if (nextNode && domUtils.isBr(nextNode)) { - domUtils.remove(nextNode); - } - //用chrome可能有空白展位符 - if (domUtils.isBlockElm(child) && domUtils.isEmptyNode(child)) { - if ((nextNode = child.nextSibling)) { - domUtils.remove(child); - if (nextNode.nodeType == 1 && dtd.$block[nextNode.tagName]) { - range.setStart(nextNode, 0).collapse(true).shrinkBoundary(); - } - } else { - try { - child.innerHTML = browser.ie ? domUtils.fillChar : "
    "; - } catch (e) { - range.setStartBefore(child); - domUtils.remove(child); - } - } - } - //加上true因为在删除表情等时会删两次,第一次是删的fillData - try { - range.select(true); - } catch (e) {} - } - - setTimeout(function() { - range = me.selection.getRange(); - range.scrollToView( - me.autoHeightEnabled, - me.autoHeightEnabled ? domUtils.getXY(me.iframe).y : 0 - ); - me.fireEvent("afterinserthtml", html); - }, 200); - } -}; - - -// plugins/autotypeset.js -/** - * 自动排版 - * @file - * @since 1.2.6.1 - */ - -/** - * 对当前编辑器的内容执行自动排版, 排版的行为根据config配置文件里的“autotypeset”选项进行控制。 - * @command autotypeset - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'autotypeset' ); - * ``` - */ - -UE.plugins["autotypeset"] = function() { - this.setOpt({ - autotypeset: { - mergeEmptyline: true, //合并空行 - removeClass: true, //去掉冗余的class - removeEmptyline: false, //去掉空行 - textAlign: "left", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版 - imageBlockLine: "center", //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版 - pasteFilter: false, //根据规则过滤没事粘贴进来的内容 - clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号 - clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体 - removeEmptyNode: false, // 去掉空节点 - //可以去掉的标签 - removeTagNames: utils.extend({ div: 1 }, dtd.$removeEmpty), - indent: false, // 行首缩进 - indentValue: "2em", //行首缩进的大小 - bdc2sb: false, - tobdc: false - } - }); - - var me = this, - opt = me.options.autotypeset, - remainClass = { - selectTdClass: 1, - pagebreak: 1, - anchorclass: 1 - }, - remainTag = { - li: 1 - }, - tags = { - div: 1, - p: 1, - //trace:2183 这些也认为是行 - blockquote: 1, - center: 1, - h1: 1, - h2: 1, - h3: 1, - h4: 1, - h5: 1, - h6: 1, - span: 1 - }, - highlightCont; - //升级了版本,但配置项目里没有autotypeset - if (!opt) { - return; - } - - readLocalOpts(); - - function isLine(node, notEmpty) { - if (!node || node.nodeType == 3) return 0; - if (domUtils.isBr(node)) return 1; - if (node && node.parentNode && tags[node.tagName.toLowerCase()]) { - if ( - (highlightCont && highlightCont.contains(node)) || - node.getAttribute("pagebreak") - ) { - return 0; - } - - return notEmpty - ? !domUtils.isEmptyBlock(node) - : domUtils.isEmptyBlock( - node, - new RegExp("[\\s" + domUtils.fillChar + "]", "g") - ); - } - } - - function removeNotAttributeSpan(node) { - if (!node.style.cssText) { - domUtils.removeAttributes(node, ["style"]); - if ( - node.tagName.toLowerCase() == "span" && - domUtils.hasNoAttributes(node) - ) { - domUtils.remove(node, true); - } - } - } - function autotype(type, html) { - var me = this, - cont; - if (html) { - if (!opt.pasteFilter) { - return; - } - cont = me.document.createElement("div"); - cont.innerHTML = html.html; - } else { - cont = me.document.body; - } - var nodes = domUtils.getElementsByTagName(cont, "*"); - - // 行首缩进,段落方向,段间距,段内间距 - for (var i = 0, ci; (ci = nodes[i++]); ) { - if (me.fireEvent("excludeNodeinautotype", ci) === true) { - continue; - } - //font-size - if (opt.clearFontSize && ci.style.fontSize) { - domUtils.removeStyle(ci, "font-size"); - - removeNotAttributeSpan(ci); - } - //font-family - if (opt.clearFontFamily && ci.style.fontFamily) { - domUtils.removeStyle(ci, "font-family"); - removeNotAttributeSpan(ci); - } - - if (isLine(ci)) { - //合并空行 - if (opt.mergeEmptyline) { - var next = ci.nextSibling, - tmpNode, - isBr = domUtils.isBr(ci); - while (isLine(next)) { - tmpNode = next; - next = tmpNode.nextSibling; - if (isBr && (!next || (next && !domUtils.isBr(next)))) { - break; - } - domUtils.remove(tmpNode); - } - } - //去掉空行,保留占位的空行 - if ( - opt.removeEmptyline && - domUtils.inDoc(ci, cont) && - !remainTag[ci.parentNode.tagName.toLowerCase()] - ) { - if (domUtils.isBr(ci)) { - next = ci.nextSibling; - if (next && !domUtils.isBr(next)) { - continue; - } - } - domUtils.remove(ci); - continue; - } - } - if (isLine(ci, true) && ci.tagName != "SPAN") { - if (opt.indent) { - ci.style.textIndent = opt.indentValue; - } - if (opt.textAlign) { - ci.style.textAlign = opt.textAlign; - } - // if(opt.lineHeight) - // ci.style.lineHeight = opt.lineHeight + 'cm'; - } - - //去掉class,保留的class不去掉 - if ( - opt.removeClass && - ci.className && - !remainClass[ci.className.toLowerCase()] - ) { - if (highlightCont && highlightCont.contains(ci)) { - continue; - } - domUtils.removeAttributes(ci, ["class"]); - } - - //表情不处理 - if ( - opt.imageBlockLine && - ci.tagName.toLowerCase() == "img" && - !ci.getAttribute("emotion") - ) { - if (html) { - var img = ci; - switch (opt.imageBlockLine) { - case "left": - case "right": - case "none": - var pN = img.parentNode, - tmpNode, - pre, - next; - while (dtd.$inline[pN.tagName] || pN.tagName == "A") { - pN = pN.parentNode; - } - tmpNode = pN; - if ( - tmpNode.tagName == "P" && - domUtils.getStyle(tmpNode, "text-align") == "center" - ) { - if ( - !domUtils.isBody(tmpNode) && - domUtils.getChildCount(tmpNode, function(node) { - return !domUtils.isBr(node) && !domUtils.isWhitespace(node); - }) == 1 - ) { - pre = tmpNode.previousSibling; - next = tmpNode.nextSibling; - if ( - pre && - next && - pre.nodeType == 1 && - next.nodeType == 1 && - pre.tagName == next.tagName && - domUtils.isBlockElm(pre) - ) { - pre.appendChild(tmpNode.firstChild); - while (next.firstChild) { - pre.appendChild(next.firstChild); - } - domUtils.remove(tmpNode); - domUtils.remove(next); - } else { - domUtils.setStyle(tmpNode, "text-align", ""); - } - } - } - domUtils.setStyle(img, "float", opt.imageBlockLine); - break; - case "center": - if (me.queryCommandValue("imagefloat") != "center") { - pN = img.parentNode; - domUtils.setStyle(img, "float", "none"); - tmpNode = img; - while ( - pN && - domUtils.getChildCount(pN, function(node) { - return !domUtils.isBr(node) && !domUtils.isWhitespace(node); - }) == 1 && - (dtd.$inline[pN.tagName] || pN.tagName == "A") - ) { - tmpNode = pN; - pN = pN.parentNode; - } - var pNode = me.document.createElement("p"); - domUtils.setAttributes(pNode, { - style: "text-align:center" - }); - tmpNode.parentNode.insertBefore(pNode, tmpNode); - pNode.appendChild(tmpNode); - domUtils.setStyle(tmpNode, "float", ""); - } - } - } else { - var range = me.selection.getRange(); - range.selectNode(ci).select(); - me.execCommand("imagefloat", opt.imageBlockLine); - } - } - - //去掉冗余的标签 - if (opt.removeEmptyNode) { - if ( - opt.removeTagNames[ci.tagName.toLowerCase()] && - domUtils.hasNoAttributes(ci) && - domUtils.isEmptyBlock(ci) - ) { - domUtils.remove(ci); - } - } - } - if (opt.tobdc) { - var root = UE.htmlparser(cont.innerHTML); - root.traversal(function(node) { - if (node.type == "text") { - node.data = ToDBC(node.data); - } - }); - cont.innerHTML = root.toHtml(); - } - if (opt.bdc2sb) { - var root = UE.htmlparser(cont.innerHTML); - root.traversal(function(node) { - if (node.type == "text") { - node.data = DBC2SB(node.data); - } - }); - cont.innerHTML = root.toHtml(); - } - if (html) { - html.html = cont.innerHTML; - } - } - if (opt.pasteFilter) { - me.addListener("beforepaste", autotype); - } - - function DBC2SB(str) { - var result = ""; - for (var i = 0; i < str.length; i++) { - var code = str.charCodeAt(i); //获取当前字符的unicode编码 - if (code >= 65281 && code <= 65373) { - //在这个unicode编码范围中的是所有的英文字母已经各种字符 - result += String.fromCharCode(str.charCodeAt(i) - 65248); //把全角字符的unicode编码转换为对应半角字符的unicode码 - } else if (code == 12288) { - //空格 - result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32); - } else { - result += str.charAt(i); - } - } - return result; - } - function ToDBC(txtstring) { - txtstring = utils.html(txtstring); - var tmp = ""; - var mark = ""; /*用于判断,如果是html尖括里的标记,则不进行全角的转换*/ - for (var i = 0; i < txtstring.length; i++) { - if (txtstring.charCodeAt(i) == 32) { - tmp = tmp + String.fromCharCode(12288); - } else if (txtstring.charCodeAt(i) < 127) { - tmp = tmp + String.fromCharCode(txtstring.charCodeAt(i) + 65248); - } else { - tmp += txtstring.charAt(i); - } - } - return tmp; - } - - function readLocalOpts() { - var cookieOpt = me.getPreferences("autotypeset"); - utils.extend(me.options.autotypeset, cookieOpt); - } - - me.commands["autotypeset"] = { - execCommand: function() { - me.removeListener("beforepaste", autotype); - if (opt.pasteFilter) { - me.addListener("beforepaste", autotype); - } - autotype.call(me); - } - }; -}; - - -// plugins/autosubmit.js -/** - * 快捷键提交 - * @file - * @since 1.2.6.1 - */ - -/** - * 提交表单 - * @command autosubmit - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'autosubmit' ); - * ``` - */ - -UE.plugin.register("autosubmit", function() { - return { - shortcutkey: { - autosubmit: "ctrl+13" //手动提交 - }, - commands: { - autosubmit: { - execCommand: function() { - var me = this, - form = domUtils.findParentByTagName(me.iframe, "form", false); - if (form) { - if (me.fireEvent("beforesubmit") === false) { - return; - } - me.sync(); - form.submit(); - } - } - } - } - }; -}); - - -// plugins/background.js -/** - * 背景插件,为UEditor提供设置背景功能 - * @file - * @since 1.2.6.1 - */ -UE.plugin.register("background", function() { - var me = this, - cssRuleId = "editor_background", - isSetColored, - reg = new RegExp("body[\\s]*\\{(.+)\\}", "i"); - - function stringToObj(str) { - var obj = {}, - styles = str.split(";"); - utils.each(styles, function(v) { - var index = v.indexOf(":"), - key = utils.trim(v.substr(0, index)).toLowerCase(); - key && (obj[key] = utils.trim(v.substr(index + 1) || "")); - }); - return obj; - } - - function setBackground(obj) { - if (obj) { - var styles = []; - for (var name in obj) { - if (obj.hasOwnProperty(name)) { - styles.push(name + ":" + obj[name] + "; "); - } - } - utils.cssRule( - cssRuleId, - styles.length ? "body{" + styles.join("") + "}" : "", - me.document - ); - } else { - utils.cssRule(cssRuleId, "", me.document); - } - } - //重写editor.hasContent方法 - - var orgFn = me.hasContents; - me.hasContents = function() { - if (me.queryCommandValue("background")) { - return true; - } - return orgFn.apply(me, arguments); - }; - return { - bindEvents: { - getAllHtml: function(type, headHtml) { - var body = this.body, - su = domUtils.getComputedStyle(body, "background-image"), - url = ""; - if (su.indexOf(me.options.imagePath) > 0) { - url = su - .substring(su.indexOf(me.options.imagePath), su.length - 1) - .replace(/"|\(|\)/gi, ""); - } else { - url = su != "none" ? su.replace(/url\("?|"?\)/gi, "") : ""; - } - var html = ' "; - headHtml.push(html); - }, - aftersetcontent: function() { - if (isSetColored == false) setBackground(); - } - }, - inputRule: function(root) { - isSetColored = false; - utils.each(root.getNodesByTagName("p"), function(p) { - var styles = p.getAttr("data-background"); - if (styles) { - isSetColored = true; - setBackground(stringToObj(styles)); - p.parentNode.removeChild(p); - } - }); - }, - outputRule: function(root) { - var me = this, - styles = (utils.cssRule(cssRuleId, me.document) || "") - .replace(/[\n\r]+/g, "") - .match(reg); - if (styles) { - root.appendChild( - UE.uNode.createElement( - '


    ' - ) - ); - } - }, - commands: { - background: { - execCommand: function(cmd, obj) { - setBackground(obj); - }, - queryCommandValue: function() { - var me = this, - styles = (utils.cssRule(cssRuleId, me.document) || "") - .replace(/[\n\r]+/g, "") - .match(reg); - return styles ? stringToObj(styles[1]) : null; - }, - notNeedUndo: true - } - } - }; -}); - - -// plugins/image.js -/** - * 图片插入、排版插件 - * @file - * @since 1.2.6.1 - */ - -/** - * 图片对齐方式 - * @command imagefloat - * @method execCommand - * @remind 值center为独占一行居中 - * @param { String } cmd 命令字符串 - * @param { String } align 对齐方式,可传left、right、none、center - * @remaind center表示图片独占一行 - * @example - * ```javascript - * editor.execCommand( 'imagefloat', 'center' ); - * ``` - */ - -/** - * 如果选区所在位置是图片区域 - * @command imagefloat - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回图片对齐方式 - * @example - * ```javascript - * editor.queryCommandValue( 'imagefloat' ); - * ``` - */ - -UE.commands["imagefloat"] = { - execCommand: function(cmd, align) { - var me = this, - range = me.selection.getRange(); - if (!range.collapsed) { - var img = range.getClosedNode(); - if (img && img.tagName == "IMG") { - switch (align) { - case "left": - case "right": - case "none": - var pN = img.parentNode, - tmpNode, - pre, - next; - while (dtd.$inline[pN.tagName] || pN.tagName == "A") { - pN = pN.parentNode; - } - tmpNode = pN; - if ( - tmpNode.tagName == "P" && - domUtils.getStyle(tmpNode, "text-align") == "center" - ) { - if ( - !domUtils.isBody(tmpNode) && - domUtils.getChildCount(tmpNode, function(node) { - return !domUtils.isBr(node) && !domUtils.isWhitespace(node); - }) == 1 - ) { - pre = tmpNode.previousSibling; - next = tmpNode.nextSibling; - if ( - pre && - next && - pre.nodeType == 1 && - next.nodeType == 1 && - pre.tagName == next.tagName && - domUtils.isBlockElm(pre) - ) { - pre.appendChild(tmpNode.firstChild); - while (next.firstChild) { - pre.appendChild(next.firstChild); - } - domUtils.remove(tmpNode); - domUtils.remove(next); - } else { - domUtils.setStyle(tmpNode, "text-align", ""); - } - } - - range.selectNode(img).select(); - } - domUtils.setStyle(img, "float", align == "none" ? "" : align); - if (align == "none") { - domUtils.removeAttributes(img, "align"); - } - - break; - case "center": - if (me.queryCommandValue("imagefloat") != "center") { - pN = img.parentNode; - domUtils.setStyle(img, "float", ""); - domUtils.removeAttributes(img, "align"); - tmpNode = img; - while ( - pN && - domUtils.getChildCount(pN, function(node) { - return !domUtils.isBr(node) && !domUtils.isWhitespace(node); - }) == 1 && - (dtd.$inline[pN.tagName] || pN.tagName == "A") - ) { - tmpNode = pN; - pN = pN.parentNode; - } - range.setStartBefore(tmpNode).setCursor(false); - pN = me.document.createElement("div"); - pN.appendChild(tmpNode); - domUtils.setStyle(tmpNode, "float", ""); - - me.execCommand( - "insertHtml", - '

    ' + - pN.innerHTML + - "

    " - ); - - tmpNode = me.document.getElementById("_img_parent_tmp"); - tmpNode.removeAttribute("id"); - tmpNode = tmpNode.firstChild; - range.selectNode(tmpNode).select(); - //去掉后边多余的元素 - next = tmpNode.parentNode.nextSibling; - if (next && domUtils.isEmptyNode(next)) { - domUtils.remove(next); - } - } - - break; - } - } - } - }, - queryCommandValue: function() { - var range = this.selection.getRange(), - startNode, - floatStyle; - if (range.collapsed) { - return "none"; - } - startNode = range.getClosedNode(); - if (startNode && startNode.nodeType == 1 && startNode.tagName == "IMG") { - floatStyle = - domUtils.getComputedStyle(startNode, "float") || - startNode.getAttribute("align"); - - if (floatStyle == "none") { - floatStyle = domUtils.getComputedStyle( - startNode.parentNode, - "text-align" - ) == "center" - ? "center" - : floatStyle; - } - return { - left: 1, - right: 1, - center: 1 - }[floatStyle] - ? floatStyle - : "none"; - } - return "none"; - }, - queryCommandState: function() { - var range = this.selection.getRange(), - startNode; - - if (range.collapsed) return -1; - - startNode = range.getClosedNode(); - if (startNode && startNode.nodeType == 1 && startNode.tagName == "IMG") { - return 0; - } - return -1; - } -}; - -/** - * 插入图片 - * @command insertimage - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Object } opt 属性键值对,这些属性都将被复制到当前插入图片 - * @remind 该命令第二个参数可接受一个图片配置项对象的数组,可以插入多张图片, - * 此时数组的每一个元素都是一个Object类型的图片属性集合。 - * @example - * ```javascript - * editor.execCommand( 'insertimage', { - * src:'a/b/c.jpg', - * width:'100', - * height:'100' - * } ); - * ``` - * @example - * ```javascript - * editor.execCommand( 'insertimage', [{ - * src:'a/b/c.jpg', - * width:'100', - * height:'100' - * },{ - * src:'a/b/d.jpg', - * width:'100', - * height:'100' - * }] ); - * ``` - */ - -UE.commands["insertimage"] = { - execCommand: function(cmd, opt) { - opt = utils.isArray(opt) ? opt : [opt]; - if (!opt.length) { - return; - } - var me = this, - range = me.selection.getRange(), - img = range.getClosedNode(); - - if (me.fireEvent("beforeinsertimage", opt) === true) { - return; - } - - if ( - img && - /img/i.test(img.tagName) && - (img.className != "edui-faked-video" || - img.className.indexOf("edui-upload-video") != -1) && - !img.getAttribute("word_img") - ) { - var first = opt.shift(); - var floatStyle = first["floatStyle"]; - delete first["floatStyle"]; - //// img.style.border = (first.border||0) +"px solid #000"; - //// img.style.margin = (first.margin||0) +"px"; - // img.style.cssText += ';margin:' + (first.margin||0) +"px;" + 'border:' + (first.border||0) +"px solid #000"; - domUtils.setAttributes(img, first); - me.execCommand("imagefloat", floatStyle); - if (opt.length > 0) { - range.setStartAfter(img).setCursor(false, true); - me.execCommand("insertimage", opt); - } - } else { - var html = [], - str = "", - ci; - ci = opt[0]; - if (opt.length == 1) { - str = - '' + ci.alt + '"; - if (ci["floatStyle"] == "center") { - str = '

    ' + str + "

    "; - } - html.push(str); - } else { - for (var i = 0; (ci = opt[i++]); ) { - str = - "

    "; - html.push(str); - } - } - - me.execCommand("insertHtml", html.join("")); - } - - me.fireEvent("afterinsertimage", opt); - } -}; - - -// plugins/justify.js -/** - * 段落格式 - * @file - * @since 1.2.6.1 - */ - -/** - * 段落对齐方式 - * @command justify - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } align 对齐方式:left => 居左,right => 居右,center => 居中,justify => 两端对齐 - * @example - * ```javascript - * editor.execCommand( 'justify', 'center' ); - * ``` - */ -/** - * 如果选区所在位置是段落区域,返回当前段落对齐方式 - * @command justify - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回段落对齐方式 - * @example - * ```javascript - * editor.queryCommandValue( 'justify' ); - * ``` - */ - -UE.plugins["justify"] = function() { - var me = this, - block = domUtils.isBlockElm, - defaultValue = { - left: 1, - right: 1, - center: 1, - justify: 1 - }, - doJustify = function(range, style) { - var bookmark = range.createBookmark(), - filterFn = function(node) { - return node.nodeType == 1 - ? node.tagName.toLowerCase() != "br" && - !domUtils.isBookmarkNode(node) - : !domUtils.isWhitespace(node); - }; - - range.enlarge(true); - var bookmark2 = range.createBookmark(), - current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), - tmpRange = range.cloneRange(), - tmpNode; - while ( - current && - !( - domUtils.getPosition(current, bookmark2.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - if (current.nodeType == 3 || !block(current)) { - tmpRange.setStartBefore(current); - while (current && current !== bookmark2.end && !block(current)) { - tmpNode = current; - current = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return !block(node); - }); - } - tmpRange.setEndAfter(tmpNode); - var common = tmpRange.getCommonAncestor(); - if (!domUtils.isBody(common) && block(common)) { - domUtils.setStyles( - common, - utils.isString(style) ? { "text-align": style } : style - ); - current = common; - } else { - var p = range.document.createElement("p"); - domUtils.setStyles( - p, - utils.isString(style) ? { "text-align": style } : style - ); - var frag = tmpRange.extractContents(); - p.appendChild(frag); - tmpRange.insertNode(p); - current = p; - } - current = domUtils.getNextDomNode(current, false, filterFn); - } else { - current = domUtils.getNextDomNode(current, true, filterFn); - } - } - return range.moveToBookmark(bookmark2).moveToBookmark(bookmark); - }; - - UE.commands["justify"] = { - execCommand: function(cmdName, align) { - var range = this.selection.getRange(), - txt; - - //闭合时单独处理 - if (range.collapsed) { - txt = this.document.createTextNode("p"); - range.insertNode(txt); - } - doJustify(range, align); - if (txt) { - range.setStartBefore(txt).collapse(true); - domUtils.remove(txt); - } - - range.select(); - - return true; - }, - queryCommandValue: function() { - var startNode = this.selection.getStart(), - value = domUtils.getComputedStyle(startNode, "text-align"); - return defaultValue[value] ? value : "left"; - }, - queryCommandState: function() { - var start = this.selection.getStart(), - cell = - start && - domUtils.findParentByTagName(start, ["td", "th", "caption"], true); - - return cell ? -1 : 0; - } - }; -}; - - -// plugins/font.js -/** - * 字体颜色,背景色,字号,字体,下划线,删除线 - * @file - * @since 1.2.6.1 - */ - -/** - * 字体颜色 - * @command forecolor - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } value 色值(必须十六进制) - * @example - * ```javascript - * editor.execCommand( 'forecolor', '#000' ); - * ``` - */ -/** - * 返回选区字体颜色 - * @command forecolor - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回字体颜色 - * @example - * ```javascript - * editor.queryCommandValue( 'forecolor' ); - * ``` - */ - -/** - * 字体背景颜色 - * @command backcolor - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } value 色值(必须十六进制) - * @example - * ```javascript - * editor.execCommand( 'backcolor', '#000' ); - * ``` - */ -/** - * 返回选区字体颜色 - * @command backcolor - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回字体背景颜色 - * @example - * ```javascript - * editor.queryCommandValue( 'backcolor' ); - * ``` - */ - -/** - * 字体大小 - * @command fontsize - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } value 字体大小 - * @example - * ```javascript - * editor.execCommand( 'fontsize', '14px' ); - * ``` - */ -/** - * 返回选区字体大小 - * @command fontsize - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回字体大小 - * @example - * ```javascript - * editor.queryCommandValue( 'fontsize' ); - * ``` - */ - -/** - * 字体样式 - * @command fontfamily - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } value 字体样式 - * @example - * ```javascript - * editor.execCommand( 'fontfamily', '微软雅黑' ); - * ``` - */ -/** - * 返回选区字体样式 - * @command fontfamily - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回字体样式 - * @example - * ```javascript - * editor.queryCommandValue( 'fontfamily' ); - * ``` - */ - -/** - * 字体下划线,与删除线互斥 - * @command underline - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'underline' ); - * ``` - */ - -/** - * 字体删除线,与下划线互斥 - * @command strikethrough - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'strikethrough' ); - * ``` - */ - -/** - * 字体边框 - * @command fontborder - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'fontborder' ); - * ``` - */ - -UE.plugins["font"] = function() { - var me = this, - fonts = { - forecolor: "color", - backcolor: "background-color", - fontsize: "font-size", - fontfamily: "font-family", - underline: "text-decoration", - strikethrough: "text-decoration", - fontborder: "border" - }, - needCmd = { underline: 1, strikethrough: 1, fontborder: 1 }, - needSetChild = { - forecolor: "color", - backcolor: "background-color", - fontsize: "font-size", - fontfamily: "font-family" - }; - me.setOpt({ - fontfamily: [ - { name: "songti", val: "宋体,SimSun" }, - { name: "yahei", val: "微软雅黑,Microsoft YaHei" }, - { name: "kaiti", val: "楷体,楷体_GB2312, SimKai" }, - { name: "heiti", val: "黑体, SimHei" }, - { name: "lishu", val: "隶书, SimLi" }, - { name: "andaleMono", val: "andale mono" }, - { name: "arial", val: "arial, helvetica,sans-serif" }, - { name: "arialBlack", val: "arial black,avant garde" }, - { name: "comicSansMs", val: "comic sans ms" }, - { name: "impact", val: "impact,chicago" }, - { name: "timesNewRoman", val: "times new roman" } - ], - fontsize: [10, 11, 12, 14, 16, 18, 20, 24, 36] - }); - - function mergeWithParent(node) { - var parent; - while ((parent = node.parentNode)) { - if ( - parent.tagName == "SPAN" && - domUtils.getChildCount(parent, function(child) { - return !domUtils.isBookmarkNode(child) && !domUtils.isBr(child); - }) == 1 - ) { - parent.style.cssText += node.style.cssText; - domUtils.remove(node, true); - node = parent; - } else { - break; - } - } - } - function mergeChild(rng, cmdName, value) { - if (needSetChild[cmdName]) { - rng.adjustmentBoundary(); - if (!rng.collapsed && rng.startContainer.nodeType == 1) { - var start = rng.startContainer.childNodes[rng.startOffset]; - if (start && domUtils.isTagNode(start, "span")) { - var bk = rng.createBookmark(); - utils.each(domUtils.getElementsByTagName(start, "span"), function( - span - ) { - if (!span.parentNode || domUtils.isBookmarkNode(span)) return; - if ( - cmdName == "backcolor" && - domUtils - .getComputedStyle(span, "background-color") - .toLowerCase() === value - ) { - return; - } - domUtils.removeStyle(span, needSetChild[cmdName]); - if (span.style.cssText.replace(/^\s+$/, "").length == 0) { - domUtils.remove(span, true); - } - }); - rng.moveToBookmark(bk); - } - } - } - } - function mergesibling(rng, cmdName, value) { - var collapsed = rng.collapsed, - bk = rng.createBookmark(), - common; - if (collapsed) { - common = bk.start.parentNode; - while (dtd.$inline[common.tagName]) { - common = common.parentNode; - } - } else { - common = domUtils.getCommonAncestor(bk.start, bk.end); - } - utils.each(domUtils.getElementsByTagName(common, "span"), function(span) { - if (!span.parentNode || domUtils.isBookmarkNode(span)) return; - if (/\s*border\s*:\s*none;?\s*/i.test(span.style.cssText)) { - if (/^\s*border\s*:\s*none;?\s*$/.test(span.style.cssText)) { - domUtils.remove(span, true); - } else { - domUtils.removeStyle(span, "border"); - } - return; - } - if ( - /border/i.test(span.style.cssText) && - span.parentNode.tagName == "SPAN" && - /border/i.test(span.parentNode.style.cssText) - ) { - span.style.cssText = span.style.cssText.replace( - /border[^:]*:[^;]+;?/gi, - "" - ); - } - if (!(cmdName == "fontborder" && value == "none")) { - var next = span.nextSibling; - while (next && next.nodeType == 1 && next.tagName == "SPAN") { - if (domUtils.isBookmarkNode(next) && cmdName == "fontborder") { - span.appendChild(next); - next = span.nextSibling; - continue; - } - if (next.style.cssText == span.style.cssText) { - domUtils.moveChild(next, span); - domUtils.remove(next); - } - if (span.nextSibling === next) break; - next = span.nextSibling; - } - } - - mergeWithParent(span); - if (browser.ie && browser.version > 8) { - //拷贝父亲们的特别的属性,这里只做背景颜色的处理 - var parent = domUtils.findParent(span, function(n) { - return ( - n.tagName == "SPAN" && /background-color/.test(n.style.cssText) - ); - }); - if (parent && !/background-color/.test(span.style.cssText)) { - span.style.backgroundColor = parent.style.backgroundColor; - } - } - }); - rng.moveToBookmark(bk); - mergeChild(rng, cmdName, value); - } - - me.addInputRule(function(root) { - utils.each(root.getNodesByTagName("u s del font strike"), function(node) { - if (node.tagName == "font") { - var cssStyle = []; - for (var p in node.attrs) { - switch (p) { - case "size": - cssStyle.push( - "font-size:" + - ({ - "1": "10", - "2": "12", - "3": "16", - "4": "18", - "5": "24", - "6": "32", - "7": "48" - }[node.attrs[p]] || node.attrs[p]) + - "px" - ); - break; - case "color": - cssStyle.push("color:" + node.attrs[p]); - break; - case "face": - cssStyle.push("font-family:" + node.attrs[p]); - break; - case "style": - cssStyle.push(node.attrs[p]); - } - } - node.attrs = { - style: cssStyle.join(";") - }; - } else { - var val = node.tagName == "u" ? "underline" : "line-through"; - node.attrs = { - style: (node.getAttr("style") || "") + "text-decoration:" + val + ";" - }; - } - node.tagName = "span"; - }); - // utils.each(root.getNodesByTagName('span'), function (node) { - // var val; - // if(val = node.getAttr('class')){ - // if(/fontstrikethrough/.test(val)){ - // node.setStyle('text-decoration','line-through'); - // if(node.attrs['class']){ - // node.attrs['class'] = node.attrs['class'].replace(/fontstrikethrough/,''); - // }else{ - // node.setAttr('class') - // } - // } - // if(/fontborder/.test(val)){ - // node.setStyle('border','1px solid #000'); - // if(node.attrs['class']){ - // node.attrs['class'] = node.attrs['class'].replace(/fontborder/,''); - // }else{ - // node.setAttr('class') - // } - // } - // } - // }); - }); - // me.addOutputRule(function(root){ - // utils.each(root.getNodesByTagName('span'), function (node) { - // var val; - // if(val = node.getStyle('text-decoration')){ - // if(/line-through/.test(val)){ - // if(node.attrs['class']){ - // node.attrs['class'] += ' fontstrikethrough'; - // }else{ - // node.setAttr('class','fontstrikethrough') - // } - // } - // - // node.setStyle('text-decoration') - // } - // if(val = node.getStyle('border')){ - // if(/1px/.test(val) && /solid/.test(val)){ - // if(node.attrs['class']){ - // node.attrs['class'] += ' fontborder'; - // - // }else{ - // node.setAttr('class','fontborder') - // } - // } - // node.setStyle('border') - // - // } - // }); - // }); - for (var p in fonts) { - (function(cmd, style) { - UE.commands[cmd] = { - execCommand: function(cmdName, value) { - value = - value || - (this.queryCommandState(cmdName) - ? "none" - : cmdName == "underline" - ? "underline" - : cmdName == "fontborder" ? "1px solid #000" : "line-through"); - var me = this, - range = this.selection.getRange(), - text; - - if (value == "default") { - if (range.collapsed) { - text = me.document.createTextNode("font"); - range.insertNode(text).select(); - } - me.execCommand("removeFormat", "span,a", style); - if (text) { - range.setStartBefore(text).collapse(true); - domUtils.remove(text); - } - mergesibling(range, cmdName, value); - range.select(); - } else { - if (!range.collapsed) { - if (needCmd[cmd] && me.queryCommandValue(cmd)) { - me.execCommand("removeFormat", "span,a", style); - } - range = me.selection.getRange(); - - range.applyInlineStyle("span", { style: style + ":" + value }); - mergesibling(range, cmdName, value); - range.select(); - } else { - var span = domUtils.findParentByTagName( - range.startContainer, - "span", - true - ); - text = me.document.createTextNode("font"); - if ( - span && - !span.children.length && - !span[browser.ie ? "innerText" : "textContent"].replace( - fillCharReg, - "" - ).length - ) { - //for ie hack when enter - range.insertNode(text); - if (needCmd[cmd]) { - range.selectNode(text).select(); - me.execCommand("removeFormat", "span,a", style, null); - - span = domUtils.findParentByTagName(text, "span", true); - range.setStartBefore(text); - } - span && (span.style.cssText += ";" + style + ":" + value); - range.collapse(true).select(); - } else { - range.insertNode(text); - range.selectNode(text).select(); - span = range.document.createElement("span"); - - if (needCmd[cmd]) { - //a标签内的不处理跳过 - if (domUtils.findParentByTagName(text, "a", true)) { - range.setStartBefore(text).setCursor(); - domUtils.remove(text); - return; - } - me.execCommand("removeFormat", "span,a", style); - } - - span.style.cssText = style + ":" + value; - - text.parentNode.insertBefore(span, text); - //修复,span套span 但样式不继承的问题 - if (!browser.ie || (browser.ie && browser.version == 9)) { - var spanParent = span.parentNode; - while (!domUtils.isBlockElm(spanParent)) { - if (spanParent.tagName == "SPAN") { - //opera合并style不会加入";" - span.style.cssText = - spanParent.style.cssText + ";" + span.style.cssText; - } - spanParent = spanParent.parentNode; - } - } - - if (opera) { - setTimeout(function() { - range.setStart(span, 0).collapse(true); - mergesibling(range, cmdName, value); - range.select(); - }); - } else { - range.setStart(span, 0).collapse(true); - mergesibling(range, cmdName, value); - range.select(); - } - - //trace:981 - //domUtils.mergeToParent(span) - } - domUtils.remove(text); - } - } - return true; - }, - queryCommandValue: function(cmdName) { - var startNode = this.selection.getStart(); - - //trace:946 - if (cmdName == "underline" || cmdName == "strikethrough") { - var tmpNode = startNode, - value; - while ( - tmpNode && - !domUtils.isBlockElm(tmpNode) && - !domUtils.isBody(tmpNode) - ) { - if (tmpNode.nodeType == 1) { - value = domUtils.getComputedStyle(tmpNode, style); - if (value != "none") { - return value; - } - } - - tmpNode = tmpNode.parentNode; - } - return "none"; - } - if (cmdName == "fontborder") { - var tmp = startNode, - val; - while (tmp && dtd.$inline[tmp.tagName]) { - if ((val = domUtils.getComputedStyle(tmp, "border"))) { - if (/1px/.test(val) && /solid/.test(val)) { - return val; - } - } - tmp = tmp.parentNode; - } - return ""; - } - - if (cmdName == "FontSize") { - var styleVal = domUtils.getComputedStyle(startNode, style), - tmp = /^([\d\.]+)(\w+)$/.exec(styleVal); - - if (tmp) { - return Math.floor(tmp[1]) + tmp[2]; - } - - return styleVal; - } - - return domUtils.getComputedStyle(startNode, style); - }, - queryCommandState: function(cmdName) { - if (!needCmd[cmdName]) return 0; - var val = this.queryCommandValue(cmdName); - if (cmdName == "fontborder") { - return /1px/.test(val) && /solid/.test(val); - } else { - return cmdName == "underline" - ? /underline/.test(val) - : /line\-through/.test(val); - } - } - }; - })(p, fonts[p]); - } -}; - - -// plugins/link.js -/** - * 超链接 - * @file - * @since 1.2.6.1 - */ - -/** - * 插入超链接 - * @command link - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Object } options 设置自定义属性,例如:url、title、target - * @example - * ```javascript - * editor.execCommand( 'link', '{ - * url:'ueditor.baidu.com', - * title:'ueditor', - * target:'_blank' - * }' ); - * ``` - */ -/** - * 返回当前选中的第一个超链接节点 - * @command link - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { Element } 超链接节点 - * @example - * ```javascript - * editor.queryCommandValue( 'link' ); - * ``` - */ - -/** - * 取消超链接 - * @command unlink - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'unlink'); - * ``` - */ - -UE.plugins["link"] = function() { - function optimize(range) { - var start = range.startContainer, - end = range.endContainer; - - if ((start = domUtils.findParentByTagName(start, "a", true))) { - range.setStartBefore(start); - } - if ((end = domUtils.findParentByTagName(end, "a", true))) { - range.setEndAfter(end); - } - } - - UE.commands["unlink"] = { - execCommand: function() { - var range = this.selection.getRange(), - bookmark; - if ( - range.collapsed && - !domUtils.findParentByTagName(range.startContainer, "a", true) - ) { - return; - } - bookmark = range.createBookmark(); - optimize(range); - range.removeInlineStyle("a").moveToBookmark(bookmark).select(); - }, - queryCommandState: function() { - return !this.highlight && this.queryCommandValue("link") ? 0 : -1; - } - }; - function doLink(range, opt, me) { - var rngClone = range.cloneRange(), - link = me.queryCommandValue("link"); - optimize((range = range.adjustmentBoundary())); - var start = range.startContainer; - if (start.nodeType == 1 && link) { - start = start.childNodes[range.startOffset]; - if ( - start && - start.nodeType == 1 && - start.tagName == "A" && - /^(?:https?|ftp|file)\s*:\s*\/\//.test( - start[browser.ie ? "innerText" : "textContent"] - ) - ) { - start[browser.ie ? "innerText" : "textContent"] = utils.html( - opt.textValue || opt.href - ); - } - } - if (!rngClone.collapsed || link) { - range.removeInlineStyle("a"); - rngClone = range.cloneRange(); - } - - if (rngClone.collapsed) { - var a = range.document.createElement("a"), - text = ""; - if (opt.textValue) { - text = utils.html(opt.textValue); - delete opt.textValue; - } else { - text = utils.html(opt.href); - } - domUtils.setAttributes(a, opt); - start = domUtils.findParentByTagName(rngClone.startContainer, "a", true); - if (start && domUtils.isInNodeEndBoundary(rngClone, start)) { - range.setStartAfter(start).collapse(true); - } - a[browser.ie ? "innerText" : "textContent"] = text; - range.insertNode(a).selectNode(a); - } else { - range.applyInlineStyle("a", opt); - } - } - UE.commands["link"] = { - execCommand: function(cmdName, opt) { - var range; - opt._href && (opt._href = utils.unhtml(opt._href, /[<">]/g)); - opt.href && (opt.href = utils.unhtml(opt.href, /[<">]/g)); - opt.textValue && (opt.textValue = utils.unhtml(opt.textValue, /[<">]/g)); - doLink((range = this.selection.getRange()), opt, this); - //闭合都不加占位符,如果加了会在a后边多个占位符节点,导致a是图片背景组成的列表,出现空白问题 - range.collapse().select(true); - }, - queryCommandValue: function() { - var range = this.selection.getRange(), - node; - if (range.collapsed) { - // node = this.selection.getStart(); - //在ie下getstart()取值偏上了 - node = range.startContainer; - node = node.nodeType == 1 ? node : node.parentNode; - - if ( - node && - (node = domUtils.findParentByTagName(node, "a", true)) && - !domUtils.isInNodeEndBoundary(range, node) - ) { - return node; - } - } else { - //trace:1111 如果是

    xx

    startContainer是p就会找不到a - range.shrinkBoundary(); - var start = range.startContainer.nodeType == 3 || - !range.startContainer.childNodes[range.startOffset] - ? range.startContainer - : range.startContainer.childNodes[range.startOffset], - end = range.endContainer.nodeType == 3 || range.endOffset == 0 - ? range.endContainer - : range.endContainer.childNodes[range.endOffset - 1], - common = range.getCommonAncestor(); - node = domUtils.findParentByTagName(common, "a", true); - if (!node && common.nodeType == 1) { - var as = common.getElementsByTagName("a"), - ps, - pe; - - for (var i = 0, ci; (ci = as[i++]); ) { - (ps = domUtils.getPosition(ci, start)), (pe = domUtils.getPosition( - ci, - end - )); - if ( - (ps & domUtils.POSITION_FOLLOWING || - ps & domUtils.POSITION_CONTAINS) && - (pe & domUtils.POSITION_PRECEDING || - pe & domUtils.POSITION_CONTAINS) - ) { - node = ci; - break; - } - } - } - return node; - } - }, - queryCommandState: function() { - //判断如果是视频的话连接不可用 - //fix 853 - var img = this.selection.getRange().getClosedNode(), - flag = - img && - (img.className == "edui-faked-video" || - img.className.indexOf("edui-upload-video") != -1); - return flag ? -1 : 0; - } - }; -}; - - -// plugins/iframe.js -///import core -///import plugins\inserthtml.js -///commands 插入框架 -///commandsName InsertFrame -///commandsTitle 插入Iframe -///commandsDialog dialogs\insertframe - -UE.plugins["insertframe"] = function() { - var me = this; - function deleteIframe() { - me._iframe && delete me._iframe; - } - - me.addListener("selectionchange", function() { - deleteIframe(); - }); -}; - - -// plugins/scrawl.js -///import core -///commands 涂鸦 -///commandsName Scrawl -///commandsTitle 涂鸦 -///commandsDialog dialogs\scrawl -UE.commands["scrawl"] = { - queryCommandState: function() { - return browser.ie && browser.version <= 8 ? -1 : 0; - } -}; - - -// plugins/removeformat.js -/** - * 清除格式 - * @file - * @since 1.2.6.1 - */ - -/** - * 清除文字样式 - * @command removeformat - * @method execCommand - * @param { String } cmd 命令字符串 - * @param {String} tags 以逗号隔开的标签。如:strong - * @param {String} style 样式如:color - * @param {String} attrs 属性如:width - * @example - * ```javascript - * editor.execCommand( 'removeformat', 'strong','color','width' ); - * ``` - */ - -UE.plugins["removeformat"] = function() { - var me = this; - me.setOpt({ - removeFormatTags: - "b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var", - removeFormatAttributes: "class,style,lang,width,height,align,hspace,valign" - }); - me.commands["removeformat"] = { - execCommand: function(cmdName, tags, style, attrs, notIncludeA) { - var tagReg = new RegExp( - "^(?:" + - (tags || this.options.removeFormatTags).replace(/,/g, "|") + - ")$", - "i" - ), - removeFormatAttributes = style - ? [] - : (attrs || this.options.removeFormatAttributes).split(","), - range = new dom.Range(this.document), - bookmark, - node, - parent, - filter = function(node) { - return node.nodeType == 1; - }; - - function isRedundantSpan(node) { - if (node.nodeType == 3 || node.tagName.toLowerCase() != "span") { - return 0; - } - if (browser.ie) { - //ie 下判断实效,所以只能简单用style来判断 - //return node.style.cssText == '' ? 1 : 0; - var attrs = node.attributes; - if (attrs.length) { - for (var i = 0, l = attrs.length; i < l; i++) { - if (attrs[i].specified) { - return 0; - } - } - return 1; - } - } - return !node.attributes.length; - } - function doRemove(range) { - var bookmark1 = range.createBookmark(); - if (range.collapsed) { - range.enlarge(true); - } - - //不能把a标签切了 - if (!notIncludeA) { - var aNode = domUtils.findParentByTagName( - range.startContainer, - "a", - true - ); - if (aNode) { - range.setStartBefore(aNode); - } - - aNode = domUtils.findParentByTagName(range.endContainer, "a", true); - if (aNode) { - range.setEndAfter(aNode); - } - } - - bookmark = range.createBookmark(); - - node = bookmark.start; - - //切开始 - while ((parent = node.parentNode) && !domUtils.isBlockElm(parent)) { - domUtils.breakParent(node, parent); - - domUtils.clearEmptySibling(node); - } - if (bookmark.end) { - //切结束 - node = bookmark.end; - while ((parent = node.parentNode) && !domUtils.isBlockElm(parent)) { - domUtils.breakParent(node, parent); - domUtils.clearEmptySibling(node); - } - - //开始去除样式 - var current = domUtils.getNextDomNode(bookmark.start, false, filter), - next; - while (current) { - if (current == bookmark.end) { - break; - } - - next = domUtils.getNextDomNode(current, true, filter); - - if ( - !dtd.$empty[current.tagName.toLowerCase()] && - !domUtils.isBookmarkNode(current) - ) { - if (tagReg.test(current.tagName)) { - if (style) { - domUtils.removeStyle(current, style); - if (isRedundantSpan(current) && style != "text-decoration") { - domUtils.remove(current, true); - } - } else { - domUtils.remove(current, true); - } - } else { - //trace:939 不能把list上的样式去掉 - if ( - !dtd.$tableContent[current.tagName] && - !dtd.$list[current.tagName] - ) { - domUtils.removeAttributes(current, removeFormatAttributes); - if (isRedundantSpan(current)) { - domUtils.remove(current, true); - } - } - } - } - current = next; - } - } - //trace:1035 - //trace:1096 不能把td上的样式去掉,比如边框 - var pN = bookmark.start.parentNode; - if ( - domUtils.isBlockElm(pN) && - !dtd.$tableContent[pN.tagName] && - !dtd.$list[pN.tagName] - ) { - domUtils.removeAttributes(pN, removeFormatAttributes); - } - pN = bookmark.end.parentNode; - if ( - bookmark.end && - domUtils.isBlockElm(pN) && - !dtd.$tableContent[pN.tagName] && - !dtd.$list[pN.tagName] - ) { - domUtils.removeAttributes(pN, removeFormatAttributes); - } - range.moveToBookmark(bookmark).moveToBookmark(bookmark1); - //清除冗余的代码 - var node = range.startContainer, - tmp, - collapsed = range.collapsed; - while ( - node.nodeType == 1 && - domUtils.isEmptyNode(node) && - dtd.$removeEmpty[node.tagName] - ) { - tmp = node.parentNode; - range.setStartBefore(node); - //trace:937 - //更新结束边界 - if (range.startContainer === range.endContainer) { - range.endOffset--; - } - domUtils.remove(node); - node = tmp; - } - - if (!collapsed) { - node = range.endContainer; - while ( - node.nodeType == 1 && - domUtils.isEmptyNode(node) && - dtd.$removeEmpty[node.tagName] - ) { - tmp = node.parentNode; - range.setEndBefore(node); - domUtils.remove(node); - - node = tmp; - } - } - } - - range = this.selection.getRange(); - doRemove(range); - range.select(); - } - }; -}; - - -// plugins/blockquote.js -/** - * 添加引用 - * @file - * @since 1.2.6.1 - */ - -/** - * 添加引用 - * @command blockquote - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'blockquote' ); - * ``` - */ - -/** - * 添加引用 - * @command blockquote - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Object } attrs 节点属性 - * @example - * ```javascript - * editor.execCommand( 'blockquote',{ - * style: "color: red;" - * } ); - * ``` - */ - -UE.plugins["blockquote"] = function() { - var me = this; - function getObj(editor) { - return domUtils.filterNodeList( - editor.selection.getStartElementPath(), - "blockquote" - ); - } - me.commands["blockquote"] = { - execCommand: function(cmdName, attrs) { - var range = this.selection.getRange(), - obj = getObj(this), - blockquote = dtd.blockquote, - bookmark = range.createBookmark(); - - if (obj) { - var start = range.startContainer, - startBlock = domUtils.isBlockElm(start) - ? start - : domUtils.findParent(start, function(node) { - return domUtils.isBlockElm(node); - }), - end = range.endContainer, - endBlock = domUtils.isBlockElm(end) - ? end - : domUtils.findParent(end, function(node) { - return domUtils.isBlockElm(node); - }); - - //处理一下li - startBlock = - domUtils.findParentByTagName(startBlock, "li", true) || startBlock; - endBlock = - domUtils.findParentByTagName(endBlock, "li", true) || endBlock; - - if ( - startBlock.tagName == "LI" || - startBlock.tagName == "TD" || - startBlock === obj || - domUtils.isBody(startBlock) - ) { - domUtils.remove(obj, true); - } else { - domUtils.breakParent(startBlock, obj); - } - - if (startBlock !== endBlock) { - obj = domUtils.findParentByTagName(endBlock, "blockquote"); - if (obj) { - if ( - endBlock.tagName == "LI" || - endBlock.tagName == "TD" || - domUtils.isBody(endBlock) - ) { - obj.parentNode && domUtils.remove(obj, true); - } else { - domUtils.breakParent(endBlock, obj); - } - } - } - - var blockquotes = domUtils.getElementsByTagName( - this.document, - "blockquote" - ); - for (var i = 0, bi; (bi = blockquotes[i++]); ) { - if (!bi.childNodes.length) { - domUtils.remove(bi); - } else if ( - domUtils.getPosition(bi, startBlock) & - domUtils.POSITION_FOLLOWING && - domUtils.getPosition(bi, endBlock) & domUtils.POSITION_PRECEDING - ) { - domUtils.remove(bi, true); - } - } - } else { - var tmpRange = range.cloneRange(), - node = tmpRange.startContainer.nodeType == 1 - ? tmpRange.startContainer - : tmpRange.startContainer.parentNode, - preNode = node, - doEnd = 1; - - //调整开始 - while (1) { - if (domUtils.isBody(node)) { - if (preNode !== node) { - if (range.collapsed) { - tmpRange.selectNode(preNode); - doEnd = 0; - } else { - tmpRange.setStartBefore(preNode); - } - } else { - tmpRange.setStart(node, 0); - } - - break; - } - if (!blockquote[node.tagName]) { - if (range.collapsed) { - tmpRange.selectNode(preNode); - } else { - tmpRange.setStartBefore(preNode); - } - break; - } - - preNode = node; - node = node.parentNode; - } - - //调整结束 - if (doEnd) { - preNode = node = node = tmpRange.endContainer.nodeType == 1 - ? tmpRange.endContainer - : tmpRange.endContainer.parentNode; - while (1) { - if (domUtils.isBody(node)) { - if (preNode !== node) { - tmpRange.setEndAfter(preNode); - } else { - tmpRange.setEnd(node, node.childNodes.length); - } - - break; - } - if (!blockquote[node.tagName]) { - tmpRange.setEndAfter(preNode); - break; - } - - preNode = node; - node = node.parentNode; - } - } - - node = range.document.createElement("blockquote"); - domUtils.setAttributes(node, attrs); - node.appendChild(tmpRange.extractContents()); - tmpRange.insertNode(node); - //去除重复的 - var childs = domUtils.getElementsByTagName(node, "blockquote"); - for (var i = 0, ci; (ci = childs[i++]); ) { - if (ci.parentNode) { - domUtils.remove(ci, true); - } - } - } - range.moveToBookmark(bookmark).select(); - }, - queryCommandState: function() { - return getObj(this) ? 1 : 0; - } - }; -}; - - -// plugins/convertcase.js -/** - * 大小写转换 - * @file - * @since 1.2.6.1 - */ - -/** - * 把选区内文本变大写,与“tolowercase”命令互斥 - * @command touppercase - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'touppercase' ); - * ``` - */ - -/** - * 把选区内文本变小写,与“touppercase”命令互斥 - * @command tolowercase - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'tolowercase' ); - * ``` - */ -UE.commands["touppercase"] = UE.commands["tolowercase"] = { - execCommand: function(cmd) { - var me = this; - var rng = me.selection.getRange(); - if (rng.collapsed) { - return rng; - } - var bk = rng.createBookmark(), - bkEnd = bk.end, - filterFn = function(node) { - return !domUtils.isBr(node) && !domUtils.isWhitespace(node); - }, - curNode = domUtils.getNextDomNode(bk.start, false, filterFn); - while ( - curNode && - domUtils.getPosition(curNode, bkEnd) & domUtils.POSITION_PRECEDING - ) { - if (curNode.nodeType == 3) { - curNode.nodeValue = curNode.nodeValue[ - cmd == "touppercase" ? "toUpperCase" : "toLowerCase" - ](); - } - curNode = domUtils.getNextDomNode(curNode, true, filterFn); - if (curNode === bkEnd) { - break; - } - } - rng.moveToBookmark(bk).select(); - } -}; - - -// plugins/indent.js -/** - * 首行缩进 - * @file - * @since 1.2.6.1 - */ - -/** - * 缩进 - * @command indent - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'indent' ); - * ``` - */ -UE.commands["indent"] = { - execCommand: function() { - var me = this, - value = me.queryCommandState("indent") - ? "0em" - : me.options.indentValue || "2em"; - me.execCommand("Paragraph", "p", { style: "text-indent:" + value }); - }, - queryCommandState: function() { - var pN = domUtils.filterNodeList( - this.selection.getStartElementPath(), - "p h1 h2 h3 h4 h5 h6" - ); - return pN && pN.style.textIndent && parseInt(pN.style.textIndent) ? 1 : 0; - } -}; - - -// plugins/print.js -/** - * 打印 - * @file - * @since 1.2.6.1 - */ - -/** - * 打印 - * @command print - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'print' ); - * ``` - */ -UE.commands["print"] = { - execCommand: function() { - this.window.print(); - }, - notNeedUndo: 1 -}; - - -// plugins/preview.js -/** - * 预览 - * @file - * @since 1.2.6.1 - */ - -/** - * 预览 - * @command preview - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'preview' ); - * ``` - */ -UE.commands["preview"] = { - execCommand: function() { - var w = window.open("", "_blank", ""), - d = w.document; - d.open(); - d.write( - '
    " + - this.getContent(null, null, true) + - "
    " - ); - d.close(); - }, - notNeedUndo: 1 -}; - - -// plugins/selectall.js -/** - * 全选 - * @file - * @since 1.2.6.1 - */ - -/** - * 选中所有内容 - * @command selectall - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'selectall' ); - * ``` - */ -UE.plugins["selectall"] = function() { - var me = this; - me.commands["selectall"] = { - execCommand: function() { - //去掉了原生的selectAll,因为会出现报错和当内容为空时,不能出现闭合状态的光标 - var me = this, - body = me.body, - range = me.selection.getRange(); - range.selectNodeContents(body); - if (domUtils.isEmptyBlock(body)) { - //opera不能自动合并到元素的里边,要手动处理一下 - if (browser.opera && body.firstChild && body.firstChild.nodeType == 1) { - range.setStartAtFirst(body.firstChild); - } - range.collapse(true); - } - range.select(true); - }, - notNeedUndo: 1 - }; - - //快捷键 - me.addshortcutkey({ - selectAll: "ctrl+65" - }); -}; - - -// plugins/paragraph.js -/** - * 段落样式 - * @file - * @since 1.2.6.1 - */ - -/** - * 段落格式 - * @command paragraph - * @method execCommand - * @param { String } cmd 命令字符串 - * @param {String} style 标签值为:'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' - * @param {Object} attrs 标签的属性 - * @example - * ```javascript - * editor.execCommand( 'Paragraph','h1','{ - * class:'test' - * }' ); - * ``` - */ - -/** - * 返回选区内节点标签名 - * @command paragraph - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 节点标签名 - * @example - * ```javascript - * editor.queryCommandValue( 'Paragraph' ); - * ``` - */ - -UE.plugins["paragraph"] = function() { - var me = this, - block = domUtils.isBlockElm, - notExchange = ["TD", "LI", "PRE"], - doParagraph = function(range, style, attrs, sourceCmdName) { - var bookmark = range.createBookmark(), - filterFn = function(node) { - return node.nodeType == 1 - ? node.tagName.toLowerCase() != "br" && - !domUtils.isBookmarkNode(node) - : !domUtils.isWhitespace(node); - }, - para; - - range.enlarge(true); - var bookmark2 = range.createBookmark(), - current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), - tmpRange = range.cloneRange(), - tmpNode; - while ( - current && - !( - domUtils.getPosition(current, bookmark2.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - if (current.nodeType == 3 || !block(current)) { - tmpRange.setStartBefore(current); - while (current && current !== bookmark2.end && !block(current)) { - tmpNode = current; - current = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return !block(node); - }); - } - tmpRange.setEndAfter(tmpNode); - - para = range.document.createElement(style); - if (attrs) { - domUtils.setAttributes(para, attrs); - if ( - sourceCmdName && - sourceCmdName == "customstyle" && - attrs.style - ) { - para.style.cssText = attrs.style; - } - } - para.appendChild(tmpRange.extractContents()); - //需要内容占位 - if (domUtils.isEmptyNode(para)) { - domUtils.fillChar(range.document, para); - } - - tmpRange.insertNode(para); - - var parent = para.parentNode; - //如果para上一级是一个block元素且不是body,td就删除它 - if ( - block(parent) && - !domUtils.isBody(para.parentNode) && - utils.indexOf(notExchange, parent.tagName) == -1 - ) { - //存储dir,style - if (!(sourceCmdName && sourceCmdName == "customstyle")) { - parent.getAttribute("dir") && - para.setAttribute("dir", parent.getAttribute("dir")); - //trace:1070 - parent.style.cssText && - (para.style.cssText = - parent.style.cssText + ";" + para.style.cssText); - //trace:1030 - parent.style.textAlign && - !para.style.textAlign && - (para.style.textAlign = parent.style.textAlign); - parent.style.textIndent && - !para.style.textIndent && - (para.style.textIndent = parent.style.textIndent); - parent.style.padding && - !para.style.padding && - (para.style.padding = parent.style.padding); - } - - //trace:1706 选择的就是h1-6要删除 - if ( - attrs && - /h\d/i.test(parent.tagName) && - !/h\d/i.test(para.tagName) - ) { - domUtils.setAttributes(parent, attrs); - if ( - sourceCmdName && - sourceCmdName == "customstyle" && - attrs.style - ) { - parent.style.cssText = attrs.style; - } - domUtils.remove(para.parentNode, true); - para = parent; - } else { - domUtils.remove(para.parentNode, true); - } - } - if (utils.indexOf(notExchange, parent.tagName) != -1) { - current = parent; - } else { - current = para; - } - - current = domUtils.getNextDomNode(current, false, filterFn); - } else { - current = domUtils.getNextDomNode(current, true, filterFn); - } - } - return range.moveToBookmark(bookmark2).moveToBookmark(bookmark); - }; - me.setOpt("paragraph", { - p: "", - h1: "", - h2: "", - h3: "", - h4: "", - h5: "", - h6: "" - }); - me.commands["paragraph"] = { - execCommand: function(cmdName, style, attrs, sourceCmdName) { - var range = this.selection.getRange(); - //闭合时单独处理 - if (range.collapsed) { - var txt = this.document.createTextNode("p"); - range.insertNode(txt); - //去掉冗余的fillchar - if (browser.ie) { - var node = txt.previousSibling; - if (node && domUtils.isWhitespace(node)) { - domUtils.remove(node); - } - node = txt.nextSibling; - if (node && domUtils.isWhitespace(node)) { - domUtils.remove(node); - } - } - } - range = doParagraph(range, style, attrs, sourceCmdName); - if (txt) { - range.setStartBefore(txt).collapse(true); - pN = txt.parentNode; - - domUtils.remove(txt); - - if (domUtils.isBlockElm(pN) && domUtils.isEmptyNode(pN)) { - domUtils.fillNode(this.document, pN); - } - } - - if ( - browser.gecko && - range.collapsed && - range.startContainer.nodeType == 1 - ) { - var child = range.startContainer.childNodes[range.startOffset]; - if ( - child && - child.nodeType == 1 && - child.tagName.toLowerCase() == style - ) { - range.setStart(child, 0).collapse(true); - } - } - //trace:1097 原来有true,原因忘了,但去了就不能清除多余的占位符了 - range.select(); - - return true; - }, - queryCommandValue: function() { - var node = domUtils.filterNodeList( - this.selection.getStartElementPath(), - "p h1 h2 h3 h4 h5 h6" - ); - return node ? node.tagName.toLowerCase() : ""; - } - }; -}; - - -// plugins/directionality.js -/** - * 设置文字输入的方向的插件 - * @file - * @since 1.2.6.1 - */ -(function() { - var block = domUtils.isBlockElm, - getObj = function(editor) { - // var startNode = editor.selection.getStart(), - // parents; - // if ( startNode ) { - // //查找所有的是block的父亲节点 - // parents = domUtils.findParents( startNode, true, block, true ); - // for ( var i = 0,ci; ci = parents[i++]; ) { - // if ( ci.getAttribute( 'dir' ) ) { - // return ci; - // } - // } - // } - return domUtils.filterNodeList( - editor.selection.getStartElementPath(), - function(n) { - return n && n.nodeType == 1 && n.getAttribute("dir"); - } - ); - }, - doDirectionality = function(range, editor, forward) { - var bookmark, - filterFn = function(node) { - return node.nodeType == 1 - ? !domUtils.isBookmarkNode(node) - : !domUtils.isWhitespace(node); - }, - obj = getObj(editor); - - if (obj && range.collapsed) { - obj.setAttribute("dir", forward); - return range; - } - bookmark = range.createBookmark(); - range.enlarge(true); - var bookmark2 = range.createBookmark(), - current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), - tmpRange = range.cloneRange(), - tmpNode; - while ( - current && - !( - domUtils.getPosition(current, bookmark2.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - if (current.nodeType == 3 || !block(current)) { - tmpRange.setStartBefore(current); - while (current && current !== bookmark2.end && !block(current)) { - tmpNode = current; - current = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return !block(node); - }); - } - tmpRange.setEndAfter(tmpNode); - var common = tmpRange.getCommonAncestor(); - if (!domUtils.isBody(common) && block(common)) { - //遍历到了block节点 - common.setAttribute("dir", forward); - current = common; - } else { - //没有遍历到,添加一个block节点 - var p = range.document.createElement("p"); - p.setAttribute("dir", forward); - var frag = tmpRange.extractContents(); - p.appendChild(frag); - tmpRange.insertNode(p); - current = p; - } - - current = domUtils.getNextDomNode(current, false, filterFn); - } else { - current = domUtils.getNextDomNode(current, true, filterFn); - } - } - return range.moveToBookmark(bookmark2).moveToBookmark(bookmark); - }; - - /** - * 文字输入方向 - * @command directionality - * @method execCommand - * @param { String } cmdName 命令字符串 - * @param { String } forward 传入'ltr'表示从左向右输入,传入'rtl'表示从右向左输入 - * @example - * ```javascript - * editor.execCommand( 'directionality', 'ltr'); - * ``` - */ - - /** - * 查询当前选区的文字输入方向 - * @command directionality - * @method queryCommandValue - * @param { String } cmdName 命令字符串 - * @return { String } 返回'ltr'表示从左向右输入,返回'rtl'表示从右向左输入 - * @example - * ```javascript - * editor.queryCommandValue( 'directionality'); - * ``` - */ - UE.commands["directionality"] = { - execCommand: function(cmdName, forward) { - var range = this.selection.getRange(); - //闭合时单独处理 - if (range.collapsed) { - var txt = this.document.createTextNode("d"); - range.insertNode(txt); - } - doDirectionality(range, this, forward); - if (txt) { - range.setStartBefore(txt).collapse(true); - domUtils.remove(txt); - } - - range.select(); - return true; - }, - queryCommandValue: function() { - var node = getObj(this); - return node ? node.getAttribute("dir") : "ltr"; - } - }; -})(); - - -// plugins/horizontal.js -/** - * 插入分割线插件 - * @file - * @since 1.2.6.1 - */ - -/** - * 插入分割线 - * @command horizontal - * @method execCommand - * @param { String } cmdName 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'horizontal' ); - * ``` - */ -UE.plugins["horizontal"] = function() { - var me = this; - me.commands["horizontal"] = { - execCommand: function(cmdName) { - var me = this; - if (me.queryCommandState(cmdName) !== -1) { - me.execCommand("insertHtml", "
    "); - var range = me.selection.getRange(), - start = range.startContainer; - if (start.nodeType == 1 && !start.childNodes[range.startOffset]) { - var tmp; - if ((tmp = start.childNodes[range.startOffset - 1])) { - if (tmp.nodeType == 1 && tmp.tagName == "HR") { - if (me.options.enterTag == "p") { - tmp = me.document.createElement("p"); - range.insertNode(tmp); - range.setStart(tmp, 0).setCursor(); - } else { - tmp = me.document.createElement("br"); - range.insertNode(tmp); - range.setStartBefore(tmp).setCursor(); - } - } - } - } - return true; - } - }, - //边界在table里不能加分隔线 - queryCommandState: function() { - return domUtils.filterNodeList( - this.selection.getStartElementPath(), - "table" - ) - ? -1 - : 0; - } - }; - // me.addListener('delkeyup',function(){ - // var rng = this.selection.getRange(); - // if(browser.ie && browser.version > 8){ - // rng.txtToElmBoundary(true); - // if(domUtils.isStartInblock(rng)){ - // var tmpNode = rng.startContainer; - // var pre = tmpNode.previousSibling; - // if(pre && domUtils.isTagNode(pre,'hr')){ - // domUtils.remove(pre); - // rng.select(); - // return; - // } - // } - // } - // if(domUtils.isBody(rng.startContainer)){ - // var hr = rng.startContainer.childNodes[rng.startOffset -1]; - // if(hr && hr.nodeName == 'HR'){ - // var next = hr.nextSibling; - // if(next){ - // rng.setStart(next,0) - // }else if(hr.previousSibling){ - // rng.setStartAtLast(hr.previousSibling) - // }else{ - // var p = this.document.createElement('p'); - // hr.parentNode.insertBefore(p,hr); - // domUtils.fillNode(this.document,p); - // rng.setStart(p,0); - // } - // domUtils.remove(hr); - // rng.setCursor(false,true); - // } - // } - // }) - me.addListener("delkeydown", function(name, evt) { - var rng = this.selection.getRange(); - rng.txtToElmBoundary(true); - if (domUtils.isStartInblock(rng)) { - var tmpNode = rng.startContainer; - var pre = tmpNode.previousSibling; - if (pre && domUtils.isTagNode(pre, "hr")) { - domUtils.remove(pre); - rng.select(); - domUtils.preventDefault(evt); - return true; - } - } - }); -}; - - -// plugins/time.js -/** - * 插入时间和日期 - * @file - * @since 1.2.6.1 - */ - -/** - * 插入时间,默认格式:12:59:59 - * @command time - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'time'); - * ``` - */ - -/** - * 插入日期,默认格式:2013-08-30 - * @command date - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'date'); - * ``` - */ -UE.commands["time"] = UE.commands["date"] = { - execCommand: function(cmd, format) { - var date = new Date(); - - function formatTime(date, format) { - var hh = ("0" + date.getHours()).slice(-2), - ii = ("0" + date.getMinutes()).slice(-2), - ss = ("0" + date.getSeconds()).slice(-2); - format = format || "hh:ii:ss"; - return format.replace(/hh/gi, hh).replace(/ii/gi, ii).replace(/ss/gi, ss); - } - function formatDate(date, format) { - var yyyy = ("000" + date.getFullYear()).slice(-4), - yy = yyyy.slice(-2), - mm = ("0" + (date.getMonth() + 1)).slice(-2), - dd = ("0" + date.getDate()).slice(-2); - format = format || "yyyy-mm-dd"; - return format - .replace(/yyyy/gi, yyyy) - .replace(/yy/gi, yy) - .replace(/mm/gi, mm) - .replace(/dd/gi, dd); - } - - this.execCommand( - "insertHtml", - cmd == "time" ? formatTime(date, format) : formatDate(date, format) - ); - } -}; - - -// plugins/rowspacing.js -/** - * 段前段后间距插件 - * @file - * @since 1.2.6.1 - */ - -/** - * 设置段间距 - * @command rowspacing - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } value 段间距的值,以px为单位 - * @param { String } dir 间距位置,top或bottom,分别表示段前和段后 - * @example - * ```javascript - * editor.execCommand( 'rowspacing', '10', 'top' ); - * ``` - */ - -UE.plugins["rowspacing"] = function() { - var me = this; - me.setOpt({ - rowspacingtop: ["5", "10", "15", "20", "25"], - rowspacingbottom: ["5", "10", "15", "20", "25"] - }); - me.commands["rowspacing"] = { - execCommand: function(cmdName, value, dir) { - this.execCommand("paragraph", "p", { - style: "margin-" + dir + ":" + value + "px" - }); - return true; - }, - queryCommandValue: function(cmdName, dir) { - var pN = domUtils.filterNodeList( - this.selection.getStartElementPath(), - function(node) { - return domUtils.isBlockElm(node); - } - ), - value; - //trace:1026 - if (pN) { - value = domUtils - .getComputedStyle(pN, "margin-" + dir) - .replace(/[^\d]/g, ""); - return !value ? 0 : value; - } - return 0; - } - }; -}; - - -// plugins/lineheight.js -/** - * 设置行内间距 - * @file - * @since 1.2.6.1 - */ -UE.plugins["lineheight"] = function() { - var me = this; - me.setOpt({ lineheight: ["1", "1.5", "1.75", "2", "3", "4", "5"] }); - - /** - * 行距 - * @command lineheight - * @method execCommand - * @param { String } cmdName 命令字符串 - * @param { String } value 传入的行高值, 该值是当前字体的倍数, 例如: 1.5, 1.75 - * @example - * ```javascript - * editor.execCommand( 'lineheight', 1.5); - * ``` - */ - /** - * 查询当前选区内容的行高大小 - * @command lineheight - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回当前行高大小 - * @example - * ```javascript - * editor.queryCommandValue( 'lineheight' ); - * ``` - */ - - me.commands["lineheight"] = { - execCommand: function(cmdName, value) { - this.execCommand("paragraph", "p", { - style: "line-height:" + (value == "1" ? "normal" : value + "em") - }); - return true; - }, - queryCommandValue: function() { - var pN = domUtils.filterNodeList( - this.selection.getStartElementPath(), - function(node) { - return domUtils.isBlockElm(node); - } - ); - if (pN) { - var value = domUtils.getComputedStyle(pN, "line-height"); - return value == "normal" ? 1 : value.replace(/[^\d.]*/gi, ""); - } - } - }; -}; - - -// plugins/insertcode.js -/** - * 插入代码插件 - * @file - * @since 1.2.6.1 - */ - -UE.plugins["insertcode"] = function() { - var me = this; - me.ready(function() { - utils.cssRule( - "pre", - "pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}", - me.document - ); - }); - me.setOpt("insertcode", { - as3: "ActionScript3", - bash: "Bash/Shell", - cpp: "C/C++", - css: "Css", - cf: "CodeFunction", - "c#": "C#", - delphi: "Delphi", - diff: "Diff", - erlang: "Erlang", - groovy: "Groovy", - html: "Html", - java: "Java", - jfx: "JavaFx", - js: "Javascript", - pl: "Perl", - php: "Php", - plain: "Plain Text", - ps: "PowerShell", - python: "Python", - ruby: "Ruby", - scala: "Scala", - sql: "Sql", - vb: "Vb", - xml: "Xml" - }); - - /** - * 插入代码 - * @command insertcode - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } lang 插入代码的语言 - * @example - * ```javascript - * editor.execCommand( 'insertcode', 'javascript' ); - * ``` - */ - - /** - * 如果选区所在位置是插入插入代码区域,返回代码的语言 - * @command insertcode - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回代码的语言 - * @example - * ```javascript - * editor.queryCommandValue( 'insertcode' ); - * ``` - */ - - me.commands["insertcode"] = { - execCommand: function(cmd, lang) { - var me = this, - rng = me.selection.getRange(), - pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); - if (pre) { - pre.className = "brush:" + lang + ";toolbar:false;"; - } else { - var code = ""; - if (rng.collapsed) { - code = browser.ie && browser.ie11below - ? browser.version <= 8 ? " " : "" - : "
    "; - } else { - var frag = rng.extractContents(); - var div = me.document.createElement("div"); - div.appendChild(frag); - - utils.each( - UE.filterNode( - UE.htmlparser(div.innerHTML.replace(/[\r\t]/g, "")), - me.options.filterTxtRules - ).children, - function(node) { - if (browser.ie && browser.ie11below && browser.version > 8) { - if (node.type == "element") { - if (node.tagName == "br") { - code += "\n"; - } else if (!dtd.$empty[node.tagName]) { - utils.each(node.children, function(cn) { - if (cn.type == "element") { - if (cn.tagName == "br") { - code += "\n"; - } else if (!dtd.$empty[node.tagName]) { - code += cn.innerText(); - } - } else { - code += cn.data; - } - }); - if (!/\n$/.test(code)) { - code += "\n"; - } - } - } else { - code += node.data + "\n"; - } - if (!node.nextSibling() && /\n$/.test(code)) { - code = code.replace(/\n$/, ""); - } - } else { - if (browser.ie && browser.ie11below) { - if (node.type == "element") { - if (node.tagName == "br") { - code += "
    "; - } else if (!dtd.$empty[node.tagName]) { - utils.each(node.children, function(cn) { - if (cn.type == "element") { - if (cn.tagName == "br") { - code += "
    "; - } else if (!dtd.$empty[node.tagName]) { - code += cn.innerText(); - } - } else { - code += cn.data; - } - }); - if (!/br>$/.test(code)) { - code += "
    "; - } - } - } else { - code += node.data + "
    "; - } - if (!node.nextSibling() && /
    $/.test(code)) { - code = code.replace(/
    $/, ""); - } - } else { - code += node.type == "element" - ? dtd.$empty[node.tagName] ? "" : node.innerText() - : node.data; - if (!/br\/?\s*>$/.test(code)) { - if (!node.nextSibling()) return; - code += "
    "; - } - } - } - } - ); - } - me.execCommand( - "inserthtml", - '
    ' +
    -            code +
    -            "
    ", - true - ); - - pre = me.document.getElementById("coder"); - domUtils.removeAttributes(pre, "id"); - var tmpNode = pre.previousSibling; - - if ( - tmpNode && - ((tmpNode.nodeType == 3 && - tmpNode.nodeValue.length == 1 && - browser.ie && - browser.version == 6) || - domUtils.isEmptyBlock(tmpNode)) - ) { - domUtils.remove(tmpNode); - } - var rng = me.selection.getRange(); - if (domUtils.isEmptyBlock(pre)) { - rng.setStart(pre, 0).setCursor(false, true); - } else { - rng.selectNodeContents(pre).select(); - } - } - }, - queryCommandValue: function() { - var path = this.selection.getStartElementPath(); - var lang = ""; - utils.each(path, function(node) { - if (node.nodeName == "PRE") { - var match = node.className.match(/brush:([^;]+)/); - lang = match && match[1] ? match[1] : ""; - return false; - } - }); - return lang; - } - }; - - me.addInputRule(function(root) { - utils.each(root.getNodesByTagName("pre"), function(pre) { - var brs = pre.getNodesByTagName("br"); - if (brs.length) { - browser.ie && - browser.ie11below && - browser.version > 8 && - utils.each(brs, function(br) { - var txt = UE.uNode.createText("\n"); - br.parentNode.insertBefore(txt, br); - br.parentNode.removeChild(br); - }); - return; - } - if (browser.ie && browser.ie11below && browser.version > 8) return; - var code = pre.innerText().split(/\n/); - pre.innerHTML(""); - utils.each(code, function(c) { - if (c.length) { - pre.appendChild(UE.uNode.createText(c)); - } - pre.appendChild(UE.uNode.createElement("br")); - }); - }); - }); - me.addOutputRule(function(root) { - utils.each(root.getNodesByTagName("pre"), function(pre) { - var code = ""; - utils.each(pre.children, function(n) { - if (n.type == "text") { - //在ie下文本内容有可能末尾带有\n要去掉 - //trace:3396 - code += n.data.replace(/[ ]/g, " ").replace(/\n$/, ""); - } else { - if (n.tagName == "br") { - code += "\n"; - } else { - code += !dtd.$empty[n.tagName] ? "" : n.innerText(); - } - } - }); - - pre.innerText(code.replace(/( |\n)+$/, "")); - }); - }); - //不需要判断highlight的command列表 - me.notNeedCodeQuery = { - help: 1, - undo: 1, - redo: 1, - source: 1, - print: 1, - searchreplace: 1, - fullscreen: 1, - preview: 1, - insertparagraph: 1, - elementpath: 1, - insertcode: 1, - inserthtml: 1, - selectall: 1 - }; - //将queyCommamndState重置 - var orgQuery = me.queryCommandState; - me.queryCommandState = function(cmd) { - var me = this; - - if ( - !me.notNeedCodeQuery[cmd.toLowerCase()] && - me.selection && - me.queryCommandValue("insertcode") - ) { - return -1; - } - return UE.Editor.prototype.queryCommandState.apply(this, arguments); - }; - me.addListener("beforeenterkeydown", function() { - var rng = me.selection.getRange(); - var pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); - if (pre) { - me.fireEvent("saveScene"); - if (!rng.collapsed) { - rng.deleteContents(); - } - if (!browser.ie || browser.ie9above) { - var tmpNode = me.document.createElement("br"), - pre; - rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true); - var next = tmpNode.nextSibling; - if (!next && (!browser.ie || browser.version > 10)) { - rng.insertNode(tmpNode.cloneNode(false)); - } else { - rng.setStartAfter(tmpNode); - } - pre = tmpNode.previousSibling; - var tmp; - while (pre) { - tmp = pre; - pre = pre.previousSibling; - if (!pre || pre.nodeName == "BR") { - pre = tmp; - break; - } - } - if (pre) { - var str = ""; - while ( - pre && - pre.nodeName != "BR" && - new RegExp("^[\\s" + domUtils.fillChar + "]*$").test(pre.nodeValue) - ) { - str += pre.nodeValue; - pre = pre.nextSibling; - } - if (pre.nodeName != "BR") { - var match = pre.nodeValue.match( - new RegExp("^([\\s" + domUtils.fillChar + "]+)") - ); - if (match && match[1]) { - str += match[1]; - } - } - if (str) { - str = me.document.createTextNode(str); - rng.insertNode(str).setStartAfter(str); - } - } - rng.collapse(true).select(true); - } else { - if (browser.version > 8) { - var txt = me.document.createTextNode("\n"); - var start = rng.startContainer; - if (rng.startOffset == 0) { - var preNode = start.previousSibling; - if (preNode) { - rng.insertNode(txt); - var fillchar = me.document.createTextNode(" "); - rng - .setStartAfter(txt) - .insertNode(fillchar) - .setStart(fillchar, 0) - .collapse(true) - .select(true); - } - } else { - rng.insertNode(txt).setStartAfter(txt); - var fillchar = me.document.createTextNode(" "); - start = rng.startContainer.childNodes[rng.startOffset]; - if (start && !/^\n/.test(start.nodeValue)) { - rng.setStartBefore(txt); - } - rng - .insertNode(fillchar) - .setStart(fillchar, 0) - .collapse(true) - .select(true); - } - } else { - var tmpNode = me.document.createElement("br"); - rng.insertNode(tmpNode); - rng.insertNode(me.document.createTextNode(domUtils.fillChar)); - rng.setStartAfter(tmpNode); - pre = tmpNode.previousSibling; - var tmp; - while (pre) { - tmp = pre; - pre = pre.previousSibling; - if (!pre || pre.nodeName == "BR") { - pre = tmp; - break; - } - } - if (pre) { - var str = ""; - while ( - pre && - pre.nodeName != "BR" && - new RegExp("^[ " + domUtils.fillChar + "]*$").test(pre.nodeValue) - ) { - str += pre.nodeValue; - pre = pre.nextSibling; - } - if (pre.nodeName != "BR") { - var match = pre.nodeValue.match( - new RegExp("^([ " + domUtils.fillChar + "]+)") - ); - if (match && match[1]) { - str += match[1]; - } - } - - str = me.document.createTextNode(str); - rng.insertNode(str).setStartAfter(str); - } - rng.collapse(true).select(); - } - } - me.fireEvent("saveScene"); - return true; - } - }); - - me.addListener("tabkeydown", function(cmd, evt) { - var rng = me.selection.getRange(); - var pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); - if (pre) { - me.fireEvent("saveScene"); - if (evt.shiftKey) { - } else { - if (!rng.collapsed) { - var bk = rng.createBookmark(); - var start = bk.start.previousSibling; - - while (start) { - if (pre.firstChild === start && !domUtils.isBr(start)) { - pre.insertBefore(me.document.createTextNode(" "), start); - - break; - } - if (domUtils.isBr(start)) { - pre.insertBefore( - me.document.createTextNode(" "), - start.nextSibling - ); - - break; - } - start = start.previousSibling; - } - var end = bk.end; - start = bk.start.nextSibling; - if (pre.firstChild === bk.start) { - pre.insertBefore( - me.document.createTextNode(" "), - start.nextSibling - ); - } - while (start && start !== end) { - if (domUtils.isBr(start) && start.nextSibling) { - if (start.nextSibling === end) { - break; - } - pre.insertBefore( - me.document.createTextNode(" "), - start.nextSibling - ); - } - - start = start.nextSibling; - } - rng.moveToBookmark(bk).select(); - } else { - var tmpNode = me.document.createTextNode(" "); - rng - .insertNode(tmpNode) - .setStartAfter(tmpNode) - .collapse(true) - .select(true); - } - } - - me.fireEvent("saveScene"); - return true; - } - }); - - me.addListener("beforeinserthtml", function(evtName, html) { - var me = this, - rng = me.selection.getRange(), - pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); - if (pre) { - if (!rng.collapsed) { - rng.deleteContents(); - } - var htmlstr = ""; - if (browser.ie && browser.version > 8) { - utils.each( - UE.filterNode(UE.htmlparser(html), me.options.filterTxtRules) - .children, - function(node) { - if (node.type == "element") { - if (node.tagName == "br") { - htmlstr += "\n"; - } else if (!dtd.$empty[node.tagName]) { - utils.each(node.children, function(cn) { - if (cn.type == "element") { - if (cn.tagName == "br") { - htmlstr += "\n"; - } else if (!dtd.$empty[node.tagName]) { - htmlstr += cn.innerText(); - } - } else { - htmlstr += cn.data; - } - }); - if (!/\n$/.test(htmlstr)) { - htmlstr += "\n"; - } - } - } else { - htmlstr += node.data + "\n"; - } - if (!node.nextSibling() && /\n$/.test(htmlstr)) { - htmlstr = htmlstr.replace(/\n$/, ""); - } - } - ); - var tmpNode = me.document.createTextNode( - utils.html(htmlstr.replace(/ /g, " ")) - ); - rng.insertNode(tmpNode).selectNode(tmpNode).select(); - } else { - var frag = me.document.createDocumentFragment(); - - utils.each( - UE.filterNode(UE.htmlparser(html), me.options.filterTxtRules) - .children, - function(node) { - if (node.type == "element") { - if (node.tagName == "br") { - frag.appendChild(me.document.createElement("br")); - } else if (!dtd.$empty[node.tagName]) { - utils.each(node.children, function(cn) { - if (cn.type == "element") { - if (cn.tagName == "br") { - frag.appendChild(me.document.createElement("br")); - } else if (!dtd.$empty[node.tagName]) { - frag.appendChild( - me.document.createTextNode( - utils.html(cn.innerText().replace(/ /g, " ")) - ) - ); - } - } else { - frag.appendChild( - me.document.createTextNode( - utils.html(cn.data.replace(/ /g, " ")) - ) - ); - } - }); - if (frag.lastChild.nodeName != "BR") { - frag.appendChild(me.document.createElement("br")); - } - } - } else { - frag.appendChild( - me.document.createTextNode( - utils.html(node.data.replace(/ /g, " ")) - ) - ); - } - if (!node.nextSibling() && frag.lastChild.nodeName == "BR") { - frag.removeChild(frag.lastChild); - } - } - ); - rng.insertNode(frag).select(); - } - - return true; - } - }); - //方向键的处理 - me.addListener("keydown", function(cmd, evt) { - var me = this, - keyCode = evt.keyCode || evt.which; - if (keyCode == 40) { - var rng = me.selection.getRange(), - pre, - start = rng.startContainer; - if ( - rng.collapsed && - (pre = domUtils.findParentByTagName(rng.startContainer, "pre", true)) && - !pre.nextSibling - ) { - var last = pre.lastChild; - while (last && last.nodeName == "BR") { - last = last.previousSibling; - } - if ( - last === start || - (rng.startContainer === pre && - rng.startOffset == pre.childNodes.length) - ) { - me.execCommand("insertparagraph"); - domUtils.preventDefault(evt); - } - } - } - }); - //trace:3395 - me.addListener("delkeydown", function(type, evt) { - var rng = this.selection.getRange(); - rng.txtToElmBoundary(true); - var start = rng.startContainer; - if ( - domUtils.isTagNode(start, "pre") && - rng.collapsed && - domUtils.isStartInblock(rng) - ) { - var p = me.document.createElement("p"); - domUtils.fillNode(me.document, p); - start.parentNode.insertBefore(p, start); - domUtils.remove(start); - rng.setStart(p, 0).setCursor(false, true); - domUtils.preventDefault(evt); - return true; - } - }); -}; - - -// plugins/cleardoc.js -/** - * 清空文档插件 - * @file - * @since 1.2.6.1 - */ - -/** - * 清空文档 - * @command cleardoc - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * //editor 是编辑器实例 - * editor.execCommand('cleardoc'); - * ``` - */ - -UE.commands["cleardoc"] = { - execCommand: function(cmdName) { - var me = this, - enterTag = me.options.enterTag, - range = me.selection.getRange(); - if (enterTag == "br") { - me.body.innerHTML = "
    "; - range.setStart(me.body, 0).setCursor(); - } else { - me.body.innerHTML = "

    " + (ie ? "" : "
    ") + "

    "; - range.setStart(me.body.firstChild, 0).setCursor(false, true); - } - setTimeout(function() { - me.fireEvent("clearDoc"); - }, 0); - } -}; - - -// plugins/anchor.js -/** - * 锚点插件,为UEditor提供插入锚点支持 - * @file - * @since 1.2.6.1 - */ -UE.plugin.register("anchor", function() { - return { - bindEvents: { - ready: function() { - utils.cssRule( - "anchor", - ".anchorclass{background: url('" + - this.options.themePath + - this.options.theme + - "/images/anchor.gif') no-repeat scroll left center transparent;cursor: auto;display: inline-block;height: 16px;width: 15px;}", - this.document - ); - } - }, - outputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(a) { - var val; - if ((val = a.getAttr("anchorname"))) { - a.tagName = "a"; - a.setAttr({ - anchorname: "", - name: val, - class: "" - }); - } - }); - }, - inputRule: function(root) { - utils.each(root.getNodesByTagName("a"), function(a) { - var val; - if ((val = a.getAttr("name")) && !a.getAttr("href")) { - //过滤掉word冗余标签 - //_Toc\d+有可能勿命中 - if (/^\_Toc\d+$/.test(val)) { - a.parentNode.removeChild(a); - return; - } - a.tagName = "img"; - a.setAttr({ - anchorname: a.getAttr("name"), - class: "anchorclass" - }); - a.setAttr("name"); - } - }); - }, - commands: { - /** - * 插入锚点 - * @command anchor - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } name 锚点名称字符串 - * @example - * ```javascript - * //editor 是编辑器实例 - * editor.execCommand('anchor', 'anchor1'); - * ``` - */ - anchor: { - execCommand: function(cmd, name) { - var range = this.selection.getRange(), - img = range.getClosedNode(); - if (img && img.getAttribute("anchorname")) { - if (name) { - img.setAttribute("anchorname", name); - } else { - range.setStartBefore(img).setCursor(); - domUtils.remove(img); - } - } else { - if (name) { - //只在选区的开始插入 - var anchor = this.document.createElement("img"); - range.collapse(true); - domUtils.setAttributes(anchor, { - anchorname: name, - class: "anchorclass" - }); - range - .insertNode(anchor) - .setStartAfter(anchor) - .setCursor(false, true); - } - } - } - } - } - }; -}); - - -// plugins/wordcount.js -///import core -///commands 字数统计 -///commandsName WordCount,wordCount -///commandsTitle 字数统计 -/* - * Created by JetBrains WebStorm. - * User: taoqili - * Date: 11-9-7 - * Time: 下午8:18 - * To change this template use File | Settings | File Templates. - */ - -UE.plugins["wordcount"] = function() { - var me = this; - me.setOpt("wordCount", true); - me.addListener("contentchange", function() { - me.fireEvent("wordcount"); - }); - var timer; - me.addListener("ready", function() { - var me = this; - domUtils.on(me.body, "keyup", function(evt) { - var code = evt.keyCode || evt.which, - //忽略的按键,ctr,alt,shift,方向键 - ignores = { - "16": 1, - "18": 1, - "20": 1, - "37": 1, - "38": 1, - "39": 1, - "40": 1 - }; - if (code in ignores) return; - clearTimeout(timer); - timer = setTimeout(function() { - me.fireEvent("wordcount"); - }, 200); - }); - }); -}; - - -// plugins/pagebreak.js -/** - * 分页功能插件 - * @file - * @since 1.2.6.1 - */ -UE.plugins["pagebreak"] = function() { - var me = this, - notBreakTags = ["td"]; - me.setOpt("pageBreakTag", "_ueditor_page_break_tag_"); - - function fillNode(node) { - if (domUtils.isEmptyBlock(node)) { - var firstChild = node.firstChild, - tmpNode; - - while ( - firstChild && - firstChild.nodeType == 1 && - domUtils.isEmptyBlock(firstChild) - ) { - tmpNode = firstChild; - firstChild = firstChild.firstChild; - } - !tmpNode && (tmpNode = node); - domUtils.fillNode(me.document, tmpNode); - } - } - //分页符样式添加 - - me.ready(function() { - utils.cssRule( - "pagebreak", - ".pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}", - me.document - ); - }); - function isHr(node) { - return ( - node && - node.nodeType == 1 && - node.tagName == "HR" && - node.className == "pagebreak" - ); - } - me.addInputRule(function(root) { - root.traversal(function(node) { - if (node.type == "text" && node.data == me.options.pageBreakTag) { - var hr = UE.uNode.createElement( - '
    ' - ); - node.parentNode.insertBefore(hr, node); - node.parentNode.removeChild(node); - } - }); - }); - me.addOutputRule(function(node) { - utils.each(node.getNodesByTagName("hr"), function(n) { - if (n.getAttr("class") == "pagebreak") { - var txt = UE.uNode.createText(me.options.pageBreakTag); - n.parentNode.insertBefore(txt, n); - n.parentNode.removeChild(n); - } - }); - }); - - /** - * 插入分页符 - * @command pagebreak - * @method execCommand - * @param { String } cmd 命令字符串 - * @remind 在表格中插入分页符会把表格切分成两部分 - * @remind 获取编辑器内的数据时, 编辑器会把分页符转换成“_ueditor_page_break_tag_”字符串, - * 以便于提交数据到服务器端后处理分页。 - * @example - * ```javascript - * editor.execCommand( 'pagebreak'); //插入一个hr标签,带有样式类名pagebreak - * ``` - */ - - me.commands["pagebreak"] = { - execCommand: function() { - var range = me.selection.getRange(), - hr = me.document.createElement("hr"); - domUtils.setAttributes(hr, { - class: "pagebreak", - noshade: "noshade", - size: "5" - }); - domUtils.unSelectable(hr); - //table单独处理 - var node = domUtils.findParentByTagName( - range.startContainer, - notBreakTags, - true - ), - parents = [], - pN; - if (node) { - switch (node.tagName) { - case "TD": - pN = node.parentNode; - if (!pN.previousSibling) { - var table = domUtils.findParentByTagName(pN, "table"); - // var tableWrapDiv = table.parentNode; - // if(tableWrapDiv && tableWrapDiv.nodeType == 1 - // && tableWrapDiv.tagName == 'DIV' - // && tableWrapDiv.getAttribute('dropdrag') - // ){ - // domUtils.remove(tableWrapDiv,true); - // } - table.parentNode.insertBefore(hr, table); - parents = domUtils.findParents(hr, true); - } else { - pN.parentNode.insertBefore(hr, pN); - parents = domUtils.findParents(hr); - } - pN = parents[1]; - if (hr !== pN) { - domUtils.breakParent(hr, pN); - } - //table要重写绑定一下拖拽 - me.fireEvent("afteradjusttable", me.document); - } - } else { - if (!range.collapsed) { - range.deleteContents(); - var start = range.startContainer; - while ( - !domUtils.isBody(start) && - domUtils.isBlockElm(start) && - domUtils.isEmptyNode(start) - ) { - range.setStartBefore(start).collapse(true); - domUtils.remove(start); - start = range.startContainer; - } - } - range.insertNode(hr); - - var pN = hr.parentNode, - nextNode; - while (!domUtils.isBody(pN)) { - domUtils.breakParent(hr, pN); - nextNode = hr.nextSibling; - if (nextNode && domUtils.isEmptyBlock(nextNode)) { - domUtils.remove(nextNode); - } - pN = hr.parentNode; - } - nextNode = hr.nextSibling; - var pre = hr.previousSibling; - if (isHr(pre)) { - domUtils.remove(pre); - } else { - pre && fillNode(pre); - } - - if (!nextNode) { - var p = me.document.createElement("p"); - - hr.parentNode.appendChild(p); - domUtils.fillNode(me.document, p); - range.setStart(p, 0).collapse(true); - } else { - if (isHr(nextNode)) { - domUtils.remove(nextNode); - } else { - fillNode(nextNode); - } - range.setEndAfter(hr).collapse(false); - } - - range.select(true); - } - } - }; -}; - - -// plugins/wordimage.js -///import core -///commands 本地图片引导上传 -///commandsName WordImage -///commandsTitle 本地图片引导上传 -///commandsDialog dialogs\wordimage - -UE.plugin.register("wordimage", function() { - var me = this, - images = []; - return { - commands: { - wordimage: { - execCommand: function() { - var images = domUtils.getElementsByTagName(me.body, "img"); - var urlList = []; - for (var i = 0, ci; (ci = images[i++]); ) { - var url = ci.getAttribute("word_img"); - url && urlList.push(url); - } - return urlList; - }, - queryCommandState: function() { - images = domUtils.getElementsByTagName(me.body, "img"); - for (var i = 0, ci; (ci = images[i++]); ) { - if (ci.getAttribute("word_img")) { - return 1; - } - } - return -1; - }, - notNeedUndo: true - } - }, - inputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(img) { - var attrs = img.attrs, - flag = parseInt(attrs.width) < 128 || parseInt(attrs.height) < 43, - opt = me.options, - src = opt.UEDITOR_HOME_URL + "themes/default/images/spacer.gif"; - if (attrs["src"] && /^(?:(file:\/+))/.test(attrs["src"])) { - img.setAttr({ - width: attrs.width, - height: attrs.height, - alt: attrs.alt, - word_img: attrs.src, - src: src, - style: - "background:url(" + - (flag - ? opt.themePath + opt.theme + "/images/word.gif" - : opt.langPath + opt.lang + "/images/localimage.png") + - ") no-repeat center center;border:1px solid #ddd" - }); - } - }); - } - }; -}); - - -// plugins/dragdrop.js -UE.plugins["dragdrop"] = function() { - var me = this; - me.ready(function() { - domUtils.on(this.body, "dragend", function() { - var rng = me.selection.getRange(); - var node = rng.getClosedNode() || me.selection.getStart(); - - if (node && node.tagName == "IMG") { - var pre = node.previousSibling, - next; - while ((next = node.nextSibling)) { - if ( - next.nodeType == 1 && - next.tagName == "SPAN" && - !next.firstChild - ) { - domUtils.remove(next); - } else { - break; - } - } - - if ( - ((pre && pre.nodeType == 1 && !domUtils.isEmptyBlock(pre)) || !pre) && - (!next || (next && !domUtils.isEmptyBlock(next))) - ) { - if (pre && pre.tagName == "P" && !domUtils.isEmptyBlock(pre)) { - pre.appendChild(node); - domUtils.moveChild(next, pre); - domUtils.remove(next); - } else if ( - next && - next.tagName == "P" && - !domUtils.isEmptyBlock(next) - ) { - next.insertBefore(node, next.firstChild); - } - - if (pre && pre.tagName == "P" && domUtils.isEmptyBlock(pre)) { - domUtils.remove(pre); - } - if (next && next.tagName == "P" && domUtils.isEmptyBlock(next)) { - domUtils.remove(next); - } - rng.selectNode(node).select(); - me.fireEvent("saveScene"); - } - } - }); - }); - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - if (keyCode == 13) { - var rng = me.selection.getRange(), - node; - if ( - (node = domUtils.findParentByTagName(rng.startContainer, "p", true)) - ) { - if (domUtils.getComputedStyle(node, "text-align") == "center") { - domUtils.removeStyle(node, "text-align"); - } - } - } - }); -}; - - -// plugins/undo.js -/** - * undo redo - * @file - * @since 1.2.6.1 - */ - -/** - * 撤销上一次执行的命令 - * @command undo - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'undo' ); - * ``` - */ - -/** - * 重做上一次执行的命令 - * @command redo - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'redo' ); - * ``` - */ - -UE.plugins["undo"] = function() { - var saveSceneTimer; - var me = this, - maxUndoCount = me.options.maxUndoCount || 20, - maxInputCount = me.options.maxInputCount || 20, - fillchar = new RegExp(domUtils.fillChar + "|", "gi"); // ie会产生多余的 - var noNeedFillCharTags = { - ol: 1, - ul: 1, - table: 1, - tbody: 1, - tr: 1, - body: 1 - }; - var orgState = me.options.autoClearEmptyNode; - function compareAddr(indexA, indexB) { - if (indexA.length != indexB.length) return 0; - for (var i = 0, l = indexA.length; i < l; i++) { - if (indexA[i] != indexB[i]) return 0; - } - return 1; - } - - function compareRangeAddress(rngAddrA, rngAddrB) { - if (rngAddrA.collapsed != rngAddrB.collapsed) { - return 0; - } - if ( - !compareAddr(rngAddrA.startAddress, rngAddrB.startAddress) || - !compareAddr(rngAddrA.endAddress, rngAddrB.endAddress) - ) { - return 0; - } - return 1; - } - - function UndoManager() { - this.list = []; - this.index = 0; - this.hasUndo = false; - this.hasRedo = false; - this.undo = function() { - if (this.hasUndo) { - if (!this.list[this.index - 1] && this.list.length == 1) { - this.reset(); - return; - } - while ( - this.list[this.index].content == this.list[this.index - 1].content - ) { - this.index--; - if (this.index == 0) { - return this.restore(0); - } - } - this.restore(--this.index); - } - }; - this.redo = function() { - if (this.hasRedo) { - while ( - this.list[this.index].content == this.list[this.index + 1].content - ) { - this.index++; - if (this.index == this.list.length - 1) { - return this.restore(this.index); - } - } - this.restore(++this.index); - } - }; - - this.restore = function() { - var me = this.editor; - var scene = this.list[this.index]; - var root = UE.htmlparser(scene.content.replace(fillchar, "")); - me.options.autoClearEmptyNode = false; - me.filterInputRule(root); - me.options.autoClearEmptyNode = orgState; - //trace:873 - //去掉展位符 - me.document.body.innerHTML = root.toHtml(); - me.fireEvent("afterscencerestore"); - //处理undo后空格不展位的问题 - if (browser.ie) { - utils.each( - domUtils.getElementsByTagName(me.document, "td th caption p"), - function(node) { - if (domUtils.isEmptyNode(node)) { - domUtils.fillNode(me.document, node); - } - } - ); - } - - try { - var rng = new dom.Range(me.document).moveToAddress(scene.address); - rng.select( - noNeedFillCharTags[rng.startContainer.nodeName.toLowerCase()] - ); - } catch (e) {} - - this.update(); - this.clearKey(); - //不能把自己reset了 - me.fireEvent("reset", true); - }; - - this.getScene = function() { - var me = this.editor; - var rng = me.selection.getRange(), - rngAddress = rng.createAddress(false, true); - me.fireEvent("beforegetscene"); - var root = UE.htmlparser(me.body.innerHTML); - me.options.autoClearEmptyNode = false; - me.filterOutputRule(root); - me.options.autoClearEmptyNode = orgState; - var cont = root.toHtml(); - //trace:3461 - //这个会引起回退时导致空格丢失的情况 - // browser.ie && (cont = cont.replace(/> <').replace(/\s*\s*/g, '>')); - me.fireEvent("aftergetscene"); - - return { - address: rngAddress, - content: cont - }; - }; - this.save = function(notCompareRange, notSetCursor) { - clearTimeout(saveSceneTimer); - var currentScene = this.getScene(notSetCursor), - lastScene = this.list[this.index]; - - if (lastScene && lastScene.content != currentScene.content) { - me.trigger("contentchange"); - } - //内容相同位置相同不存 - if ( - lastScene && - lastScene.content == currentScene.content && - (notCompareRange - ? 1 - : compareRangeAddress(lastScene.address, currentScene.address)) - ) { - return; - } - this.list = this.list.slice(0, this.index + 1); - this.list.push(currentScene); - //如果大于最大数量了,就把最前的剔除 - if (this.list.length > maxUndoCount) { - this.list.shift(); - } - this.index = this.list.length - 1; - this.clearKey(); - //跟新undo/redo状态 - this.update(); - }; - this.update = function() { - this.hasRedo = !!this.list[this.index + 1]; - this.hasUndo = !!this.list[this.index - 1]; - }; - this.reset = function() { - this.list = []; - this.index = 0; - this.hasUndo = false; - this.hasRedo = false; - this.clearKey(); - }; - this.clearKey = function() { - keycont = 0; - lastKeyCode = null; - }; - } - - me.undoManger = new UndoManager(); - me.undoManger.editor = me; - function saveScene() { - this.undoManger.save(); - } - - me.addListener("saveScene", function() { - var args = Array.prototype.splice.call(arguments, 1); - this.undoManger.save.apply(this.undoManger, args); - }); - - // me.addListener('beforeexeccommand', saveScene); - // me.addListener('afterexeccommand', saveScene); - - me.addListener("reset", function(type, exclude) { - if (!exclude) { - this.undoManger.reset(); - } - }); - me.commands["redo"] = me.commands["undo"] = { - execCommand: function(cmdName) { - this.undoManger[cmdName](); - }, - queryCommandState: function(cmdName) { - return this.undoManger[ - "has" + (cmdName.toLowerCase() == "undo" ? "Undo" : "Redo") - ] - ? 0 - : -1; - }, - notNeedUndo: 1 - }; - - var keys = { - // /*Backspace*/ 8:1, /*Delete*/ 46:1, - /*Shift*/ 16: 1, - /*Ctrl*/ 17: 1, - /*Alt*/ 18: 1, - 37: 1, - 38: 1, - 39: 1, - 40: 1 - }, - keycont = 0, - lastKeyCode; - //输入法状态下不计算字符数 - var inputType = false; - me.addListener("ready", function() { - domUtils.on(this.body, "compositionstart", function() { - inputType = true; - }); - domUtils.on(this.body, "compositionend", function() { - inputType = false; - }); - }); - //快捷键 - me.addshortcutkey({ - Undo: "ctrl+90", //undo - Redo: "ctrl+89" //redo - }); - var isCollapsed = true; - me.addListener("keydown", function(type, evt) { - var me = this; - var keyCode = evt.keyCode || evt.which; - if ( - !keys[keyCode] && - !evt.ctrlKey && - !evt.metaKey && - !evt.shiftKey && - !evt.altKey - ) { - if (inputType) return; - - if (!me.selection.getRange().collapsed) { - me.undoManger.save(false, true); - isCollapsed = false; - return; - } - if (me.undoManger.list.length == 0) { - me.undoManger.save(true); - } - clearTimeout(saveSceneTimer); - function save(cont) { - cont.undoManger.save(false, true); - cont.fireEvent("selectionchange"); - } - saveSceneTimer = setTimeout(function() { - if (inputType) { - var interalTimer = setInterval(function() { - if (!inputType) { - save(me); - clearInterval(interalTimer); - } - }, 300); - return; - } - save(me); - }, 200); - - lastKeyCode = keyCode; - keycont++; - if (keycont >= maxInputCount) { - save(me); - } - } - }); - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - if ( - !keys[keyCode] && - !evt.ctrlKey && - !evt.metaKey && - !evt.shiftKey && - !evt.altKey - ) { - if (inputType) return; - if (!isCollapsed) { - this.undoManger.save(false, true); - isCollapsed = true; - } - } - }); - //扩展实例,添加关闭和开启命令undo - me.stopCmdUndo = function() { - me.__hasEnterExecCommand = true; - }; - me.startCmdUndo = function() { - me.__hasEnterExecCommand = false; - }; -}; - - -// plugins/copy.js -UE.plugin.register("copy", function() { - var me = this; - - function initZeroClipboard() { - ZeroClipboard.config({ - debug: false, - swfPath: - me.options.UEDITOR_HOME_URL + - "third-party/zeroclipboard/ZeroClipboard.swf" - }); - - var client = (me.zeroclipboard = new ZeroClipboard()); - - // 复制内容 - client.on("copy", function(e) { - var client = e.client, - rng = me.selection.getRange(), - div = document.createElement("div"); - - div.appendChild(rng.cloneContents()); - client.setText(div.innerText || div.textContent); - client.setHtml(div.innerHTML); - rng.select(); - }); - // hover事件传递到target - client.on("mouseover mouseout", function(e) { - var target = e.target; - if (target) { - if (e.type == "mouseover") { - domUtils.addClass(target, "edui-state-hover"); - } else if (e.type == "mouseout") { - domUtils.removeClasses(target, "edui-state-hover"); - } - } - }); - // flash加载不成功 - client.on("wrongflash noflash", function() { - ZeroClipboard.destroy(); - }); - - // 触发事件 - me.fireEvent("zeroclipboardready", client); - } - - return { - bindEvents: { - ready: function() { - if (!browser.ie) { - if (window.ZeroClipboard) { - initZeroClipboard(); - } else { - utils.loadFile( - document, - { - src: - me.options.UEDITOR_HOME_URL + - "third-party/zeroclipboard/ZeroClipboard.js", - tag: "script", - type: "text/javascript", - defer: "defer" - }, - function() { - initZeroClipboard(); - } - ); - } - } - } - }, - commands: { - copy: { - execCommand: function(cmd) { - if (!me.document.execCommand("copy")) { - alert(me.getLang("copymsg")); - } - } - } - } - }; -}); - - -// plugins/paste.js -///import core -///import plugins/inserthtml.js -///import plugins/undo.js -///import plugins/serialize.js -///commands 粘贴 -///commandsName PastePlain -///commandsTitle 纯文本粘贴模式 -/** - * @description 粘贴 - * @author zhanyi - */ -UE.plugins["paste"] = function() { - function getClipboardData(callback) { - var doc = this.document; - if (doc.getElementById("baidu_pastebin")) { - return; - } - var range = this.selection.getRange(), - bk = range.createBookmark(), - //创建剪贴的容器div - pastebin = doc.createElement("div"); - pastebin.id = "baidu_pastebin"; - // Safari 要求div必须有内容,才能粘贴内容进来 - browser.webkit && - pastebin.appendChild( - doc.createTextNode(domUtils.fillChar + domUtils.fillChar) - ); - doc.body.appendChild(pastebin); - //trace:717 隐藏的span不能得到top - //bk.start.innerHTML = ' '; - bk.start.style.display = ""; - pastebin.style.cssText = - "position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:" + - //要在现在光标平行的位置加入,否则会出现跳动的问题 - domUtils.getXY(bk.start).y + - "px"; - - range.selectNodeContents(pastebin).select(true); - - setTimeout(function() { - if (browser.webkit) { - for ( - var i = 0, pastebins = doc.querySelectorAll("#baidu_pastebin"), pi; - (pi = pastebins[i++]); - - ) { - if (domUtils.isEmptyNode(pi)) { - domUtils.remove(pi); - } else { - pastebin = pi; - break; - } - } - } - try { - pastebin.parentNode.removeChild(pastebin); - } catch (e) {} - range.moveToBookmark(bk).select(true); - callback(pastebin); - }, 0); - } - - var me = this; - - me.setOpt({ - retainOnlyLabelPasted: false - }); - - var txtContent, htmlContent, address; - - function getPureHtml(html) { - return html.replace(/<(\/?)([\w\-]+)([^>]*)>/gi, function( - a, - b, - tagName, - attrs - ) { - tagName = tagName.toLowerCase(); - if ({ img: 1 }[tagName]) { - return a; - } - attrs = attrs.replace( - /([\w\-]*?)\s*=\s*(("([^"]*)")|('([^']*)')|([^\s>]+))/gi, - function(str, atr, val) { - if ( - { - src: 1, - href: 1, - name: 1 - }[atr.toLowerCase()] - ) { - return atr + "=" + val + " "; - } - return ""; - } - ); - if ( - { - span: 1, - div: 1 - }[tagName] - ) { - return ""; - } else { - return "<" + b + tagName + " " + utils.trim(attrs) + ">"; - } - }); - } - function filter(div) { - var html; - if (div.firstChild) { - //去掉cut中添加的边界值 - var nodes = domUtils.getElementsByTagName(div, "span"); - for (var i = 0, ni; (ni = nodes[i++]); ) { - if (ni.id == "_baidu_cut_start" || ni.id == "_baidu_cut_end") { - domUtils.remove(ni); - } - } - - if (browser.webkit) { - var brs = div.querySelectorAll("div br"); - for (var i = 0, bi; (bi = brs[i++]); ) { - var pN = bi.parentNode; - if (pN.tagName == "DIV" && pN.childNodes.length == 1) { - pN.innerHTML = "


    "; - domUtils.remove(pN); - } - } - var divs = div.querySelectorAll("#baidu_pastebin"); - for (var i = 0, di; (di = divs[i++]); ) { - var tmpP = me.document.createElement("p"); - di.parentNode.insertBefore(tmpP, di); - while (di.firstChild) { - tmpP.appendChild(di.firstChild); - } - domUtils.remove(di); - } - - var metas = div.querySelectorAll("meta"); - for (var i = 0, ci; (ci = metas[i++]); ) { - domUtils.remove(ci); - } - - var brs = div.querySelectorAll("br"); - for (i = 0; (ci = brs[i++]); ) { - if (/^apple-/i.test(ci.className)) { - domUtils.remove(ci); - } - } - } - if (browser.gecko) { - var dirtyNodes = div.querySelectorAll("[_moz_dirty]"); - for (i = 0; (ci = dirtyNodes[i++]); ) { - ci.removeAttribute("_moz_dirty"); - } - } - if (!browser.ie) { - var spans = div.querySelectorAll("span.Apple-style-span"); - for (var i = 0, ci; (ci = spans[i++]); ) { - domUtils.remove(ci, true); - } - } - - //ie下使用innerHTML会产生多余的\r\n字符,也会产生 这里过滤掉 - html = div.innerHTML; //.replace(/>(?:(\s| )*?)<'); - - //过滤word粘贴过来的冗余属性 - html = UE.filterWord(html); - //取消了忽略空白的第二个参数,粘贴过来的有些是有空白的,会被套上相关的标签 - var root = UE.htmlparser(html); - //如果给了过滤规则就先进行过滤 - if (me.options.filterRules) { - UE.filterNode(root, me.options.filterRules); - } - //执行默认的处理 - me.filterInputRule(root); - //针对chrome的处理 - if (browser.webkit) { - var br = root.lastChild(); - if (br && br.type == "element" && br.tagName == "br") { - root.removeChild(br); - } - utils.each(me.body.querySelectorAll("div"), function(node) { - if (domUtils.isEmptyBlock(node)) { - domUtils.remove(node, true); - } - }); - } - html = { html: root.toHtml() }; - me.fireEvent("beforepaste", html, root); - //抢了默认的粘贴,那后边的内容就不执行了,比如表格粘贴 - if (!html.html) { - return; - } - root = UE.htmlparser(html.html, true); - //如果开启了纯文本模式 - if (me.queryCommandState("pasteplain") === 1) { - me.execCommand( - "insertHtml", - UE.filterNode(root, me.options.filterTxtRules).toHtml(), - true - ); - } else { - //文本模式 - UE.filterNode(root, me.options.filterTxtRules); - txtContent = root.toHtml(); - //完全模式 - htmlContent = html.html; - - address = me.selection.getRange().createAddress(true); - me.execCommand( - "insertHtml", - me.getOpt("retainOnlyLabelPasted") === true - ? getPureHtml(htmlContent) - : htmlContent, - true - ); - } - me.fireEvent("afterpaste", html); - } - } - - me.addListener("pasteTransfer", function(cmd, plainType) { - if (address && txtContent && htmlContent && txtContent != htmlContent) { - var range = me.selection.getRange(); - range.moveToAddress(address, true); - - if (!range.collapsed) { - while (!domUtils.isBody(range.startContainer)) { - var start = range.startContainer; - if (start.nodeType == 1) { - start = start.childNodes[range.startOffset]; - if (!start) { - range.setStartBefore(range.startContainer); - continue; - } - var pre = start.previousSibling; - - if ( - pre && - pre.nodeType == 3 && - new RegExp("^[\n\r\t " + domUtils.fillChar + "]*$").test( - pre.nodeValue - ) - ) { - range.setStartBefore(pre); - } - } - if (range.startOffset == 0) { - range.setStartBefore(range.startContainer); - } else { - break; - } - } - while (!domUtils.isBody(range.endContainer)) { - var end = range.endContainer; - if (end.nodeType == 1) { - end = end.childNodes[range.endOffset]; - if (!end) { - range.setEndAfter(range.endContainer); - continue; - } - var next = end.nextSibling; - if ( - next && - next.nodeType == 3 && - new RegExp("^[\n\r\t" + domUtils.fillChar + "]*$").test( - next.nodeValue - ) - ) { - range.setEndAfter(next); - } - } - if ( - range.endOffset == - range.endContainer[ - range.endContainer.nodeType == 3 ? "nodeValue" : "childNodes" - ].length - ) { - range.setEndAfter(range.endContainer); - } else { - break; - } - } - } - - range.deleteContents(); - range.select(true); - me.__hasEnterExecCommand = true; - var html = htmlContent; - if (plainType === 2) { - html = getPureHtml(html); - } else if (plainType) { - html = txtContent; - } - me.execCommand("inserthtml", html, true); - me.__hasEnterExecCommand = false; - var rng = me.selection.getRange(); - while ( - !domUtils.isBody(rng.startContainer) && - !rng.startOffset && - rng.startContainer[ - rng.startContainer.nodeType == 3 ? "nodeValue" : "childNodes" - ].length - ) { - rng.setStartBefore(rng.startContainer); - } - var tmpAddress = rng.createAddress(true); - address.endAddress = tmpAddress.startAddress; - } - }); - - me.addListener("ready", function() { - domUtils.on(me.body, "cut", function() { - var range = me.selection.getRange(); - if (!range.collapsed && me.undoManger) { - me.undoManger.save(); - } - }); - - //ie下beforepaste在点击右键时也会触发,所以用监控键盘才处理 - domUtils.on( - me.body, - browser.ie || browser.opera ? "keydown" : "paste", - function(e) { - if ( - (browser.ie || browser.opera) && - ((!e.ctrlKey && !e.metaKey) || e.keyCode != "86") - ) { - return; - } - getClipboardData.call(me, function(div) { - filter(div); - }); - } - ); - }); - - me.commands["paste"] = { - execCommand: function(cmd) { - if (browser.ie) { - getClipboardData.call(me, function(div) { - filter(div); - }); - me.document.execCommand("paste"); - } else { - alert(me.getLang("pastemsg")); - } - } - }; -}; - - -// plugins/puretxtpaste.js -/** - * 纯文本粘贴插件 - * @file - * @since 1.2.6.1 - */ - -UE.plugins["pasteplain"] = function() { - var me = this; - me.setOpt({ - pasteplain: false, - filterTxtRules: (function() { - function transP(node) { - node.tagName = "p"; - node.setStyle(); - } - function removeNode(node) { - node.parentNode.removeChild(node, true); - } - return { - //直接删除及其字节点内容 - "-": "script style object iframe embed input select", - p: { $: {} }, - br: { $: {} }, - div: function(node) { - var tmpNode, - p = UE.uNode.createElement("p"); - while ((tmpNode = node.firstChild())) { - if (tmpNode.type == "text" || !UE.dom.dtd.$block[tmpNode.tagName]) { - p.appendChild(tmpNode); - } else { - if (p.firstChild()) { - node.parentNode.insertBefore(p, node); - p = UE.uNode.createElement("p"); - } else { - node.parentNode.insertBefore(tmpNode, node); - } - } - } - if (p.firstChild()) { - node.parentNode.insertBefore(p, node); - } - node.parentNode.removeChild(node); - }, - ol: removeNode, - ul: removeNode, - dl: removeNode, - dt: removeNode, - dd: removeNode, - li: removeNode, - caption: transP, - th: transP, - tr: transP, - h1: transP, - h2: transP, - h3: transP, - h4: transP, - h5: transP, - h6: transP, - td: function(node) { - //没有内容的td直接删掉 - var txt = !!node.innerText(); - if (txt) { - node.parentNode.insertAfter( - UE.uNode.createText("    "), - node - ); - } - node.parentNode.removeChild(node, node.innerText()); - } - }; - })() - }); - //暂时这里支持一下老版本的属性 - var pasteplain = me.options.pasteplain; - - /** - * 启用或取消纯文本粘贴模式 - * @command pasteplain - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.queryCommandState( 'pasteplain' ); - * ``` - */ - - /** - * 查询当前是否处于纯文本粘贴模式 - * @command pasteplain - * @method queryCommandState - * @param { String } cmd 命令字符串 - * @return { int } 如果处于纯文本模式,返回1,否则,返回0 - * @example - * ```javascript - * editor.queryCommandState( 'pasteplain' ); - * ``` - */ - me.commands["pasteplain"] = { - queryCommandState: function() { - return pasteplain ? 1 : 0; - }, - execCommand: function() { - pasteplain = !pasteplain | 0; - }, - notNeedUndo: 1 - }; -}; - - -// plugins/list.js -/** - * 有序列表,无序列表插件 - * @file - * @since 1.2.6.1 - */ - -UE.plugins["list"] = function() { - var me = this, - notExchange = { - TD: 1, - PRE: 1, - BLOCKQUOTE: 1 - }; - var customStyle = { - cn: "cn-1-", - cn1: "cn-2-", - cn2: "cn-3-", - num: "num-1-", - num1: "num-2-", - num2: "num-3-", - dash: "dash", - dot: "dot" - }; - - me.setOpt({ - autoTransWordToList: false, - insertorderedlist: { - num: "", - num1: "", - num2: "", - cn: "", - cn1: "", - cn2: "", - decimal: "", - "lower-alpha": "", - "lower-roman": "", - "upper-alpha": "", - "upper-roman": "" - }, - insertunorderedlist: { - circle: "", - disc: "", - square: "", - dash: "", - dot: "" - }, - listDefaultPaddingLeft: "30", - listiconpath: "http://bs.baidu.com/listicon/", - maxListLevel: -1, //-1不限制 - disablePInList: false - }); - function listToArray(list) { - var arr = []; - for (var p in list) { - arr.push(p); - } - return arr; - } - var listStyle = { - OL: listToArray(me.options.insertorderedlist), - UL: listToArray(me.options.insertunorderedlist) - }; - var liiconpath = me.options.listiconpath; - - //根据用户配置,调整customStyle - for (var s in customStyle) { - if ( - !me.options.insertorderedlist.hasOwnProperty(s) && - !me.options.insertunorderedlist.hasOwnProperty(s) - ) { - delete customStyle[s]; - } - } - - me.ready(function() { - var customCss = []; - for (var p in customStyle) { - if (p == "dash" || p == "dot") { - customCss.push( - "li.list-" + - customStyle[p] + - "{background-image:url(" + - liiconpath + - customStyle[p] + - ".gif)}" - ); - customCss.push( - "ul.custom_" + - p + - "{list-style:none;}ul.custom_" + - p + - " li{background-position:0 3px;background-repeat:no-repeat}" - ); - } else { - for (var i = 0; i < 99; i++) { - customCss.push( - "li.list-" + - customStyle[p] + - i + - "{background-image:url(" + - liiconpath + - "list-" + - customStyle[p] + - i + - ".gif)}" - ); - } - customCss.push( - "ol.custom_" + - p + - "{list-style:none;}ol.custom_" + - p + - " li{background-position:0 3px;background-repeat:no-repeat}" - ); - } - switch (p) { - case "cn": - customCss.push("li.list-" + p + "-paddingleft-1{padding-left:25px}"); - customCss.push("li.list-" + p + "-paddingleft-2{padding-left:40px}"); - customCss.push("li.list-" + p + "-paddingleft-3{padding-left:55px}"); - break; - case "cn1": - customCss.push("li.list-" + p + "-paddingleft-1{padding-left:30px}"); - customCss.push("li.list-" + p + "-paddingleft-2{padding-left:40px}"); - customCss.push("li.list-" + p + "-paddingleft-3{padding-left:55px}"); - break; - case "cn2": - customCss.push("li.list-" + p + "-paddingleft-1{padding-left:40px}"); - customCss.push("li.list-" + p + "-paddingleft-2{padding-left:55px}"); - customCss.push("li.list-" + p + "-paddingleft-3{padding-left:68px}"); - break; - case "num": - case "num1": - customCss.push("li.list-" + p + "-paddingleft-1{padding-left:25px}"); - break; - case "num2": - customCss.push("li.list-" + p + "-paddingleft-1{padding-left:35px}"); - customCss.push("li.list-" + p + "-paddingleft-2{padding-left:40px}"); - break; - case "dash": - customCss.push("li.list-" + p + "-paddingleft{padding-left:35px}"); - break; - case "dot": - customCss.push("li.list-" + p + "-paddingleft{padding-left:20px}"); - } - } - customCss.push(".list-paddingleft-1{padding-left:0}"); - customCss.push( - ".list-paddingleft-2{padding-left:" + - me.options.listDefaultPaddingLeft + - "px}" - ); - customCss.push( - ".list-paddingleft-3{padding-left:" + - me.options.listDefaultPaddingLeft * 2 + - "px}" - ); - //如果不给宽度会在自定应样式里出现滚动条 - utils.cssRule( - "list", - "ol,ul{margin:0;pading:0;" + - (browser.ie ? "" : "width:95%") + - "}li{clear:both;}" + - customCss.join("\n"), - me.document - ); - }); - //单独处理剪切的问题 - me.ready(function() { - domUtils.on(me.body, "cut", function() { - setTimeout(function() { - var rng = me.selection.getRange(), - li; - //trace:3416 - if (!rng.collapsed) { - if ( - (li = domUtils.findParentByTagName(rng.startContainer, "li", true)) - ) { - if (!li.nextSibling && domUtils.isEmptyBlock(li)) { - var pn = li.parentNode, - node; - if ((node = pn.previousSibling)) { - domUtils.remove(pn); - rng.setStartAtLast(node).collapse(true); - rng.select(true); - } else if ((node = pn.nextSibling)) { - domUtils.remove(pn); - rng.setStartAtFirst(node).collapse(true); - rng.select(true); - } else { - var tmpNode = me.document.createElement("p"); - domUtils.fillNode(me.document, tmpNode); - pn.parentNode.insertBefore(tmpNode, pn); - domUtils.remove(pn); - rng.setStart(tmpNode, 0).collapse(true); - rng.select(true); - } - } - } - } - }); - }); - }); - - function getStyle(node) { - var cls = node.className; - if (domUtils.hasClass(node, /custom_/)) { - return cls.match(/custom_(\w+)/)[1]; - } - return domUtils.getStyle(node, "list-style-type"); - } - - me.addListener("beforepaste", function(type, html) { - var me = this, - rng = me.selection.getRange(), - li; - var root = UE.htmlparser(html.html, true); - if ((li = domUtils.findParentByTagName(rng.startContainer, "li", true))) { - var list = li.parentNode, - tagName = list.tagName == "OL" ? "ul" : "ol"; - utils.each(root.getNodesByTagName(tagName), function(n) { - n.tagName = list.tagName; - n.setAttr(); - if (n.parentNode === root) { - type = getStyle(list) || (list.tagName == "OL" ? "decimal" : "disc"); - } else { - var className = n.parentNode.getAttr("class"); - if (className && /custom_/.test(className)) { - type = className.match(/custom_(\w+)/)[1]; - } else { - type = n.parentNode.getStyle("list-style-type"); - } - if (!type) { - type = list.tagName == "OL" ? "decimal" : "disc"; - } - } - var index = utils.indexOf(listStyle[list.tagName], type); - if (n.parentNode !== root) - index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1; - var currentStyle = listStyle[list.tagName][index]; - if (customStyle[currentStyle]) { - n.setAttr("class", "custom_" + currentStyle); - } else { - n.setStyle("list-style-type", currentStyle); - } - }); - } - - html.html = root.toHtml(); - }); - //导出时,去掉p标签 - me.getOpt("disablePInList") === true && - me.addOutputRule(function(root) { - utils.each(root.getNodesByTagName("li"), function(li) { - var newChildrens = [], - index = 0; - utils.each(li.children, function(n) { - if (n.tagName == "p") { - var tmpNode; - while ((tmpNode = n.children.pop())) { - newChildrens.splice(index, 0, tmpNode); - tmpNode.parentNode = li; - lastNode = tmpNode; - } - tmpNode = newChildrens[newChildrens.length - 1]; - if ( - !tmpNode || - tmpNode.type != "element" || - tmpNode.tagName != "br" - ) { - var br = UE.uNode.createElement("br"); - br.parentNode = li; - newChildrens.push(br); - } - - index = newChildrens.length; - } - }); - if (newChildrens.length) { - li.children = newChildrens; - } - }); - }); - //进入编辑器的li要套p标签 - me.addInputRule(function(root) { - utils.each(root.getNodesByTagName("li"), function(li) { - var tmpP = UE.uNode.createElement("p"); - for (var i = 0, ci; (ci = li.children[i]); ) { - if (ci.type == "text" || dtd.p[ci.tagName]) { - tmpP.appendChild(ci); - } else { - if (tmpP.firstChild()) { - li.insertBefore(tmpP, ci); - tmpP = UE.uNode.createElement("p"); - i = i + 2; - } else { - i++; - } - } - } - if ((tmpP.firstChild() && !tmpP.parentNode) || !li.firstChild()) { - li.appendChild(tmpP); - } - //trace:3357 - //p不能为空 - if (!tmpP.firstChild()) { - tmpP.innerHTML(browser.ie ? " " : "
    "); - } - //去掉末尾的空白 - var p = li.firstChild(); - var lastChild = p.lastChild(); - if ( - lastChild && - lastChild.type == "text" && - /^\s*$/.test(lastChild.data) - ) { - p.removeChild(lastChild); - } - }); - if (me.options.autoTransWordToList) { - var orderlisttype = { - num1: /^\d+\)/, - decimal: /^\d+\./, - "lower-alpha": /^[a-z]+\)/, - "upper-alpha": /^[A-Z]+\./, - cn: /^[\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+[\u3001]/, - cn2: /^\([\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+\)/ - }, - unorderlisttype = { - square: "n" - }; - function checkListType(content, container) { - var span = container.firstChild(); - if ( - span && - span.type == "element" && - span.tagName == "span" && - /Wingdings|Symbol/.test(span.getStyle("font-family")) - ) { - for (var p in unorderlisttype) { - if (unorderlisttype[p] == span.data) { - return p; - } - } - return "disc"; - } - for (var p in orderlisttype) { - if (orderlisttype[p].test(content)) { - return p; - } - } - } - utils.each(root.getNodesByTagName("p"), function(node) { - if (node.getAttr("class") != "MsoListParagraph") { - return; - } - - //word粘贴过来的会带有margin要去掉,但这样也可能会误命中一些央视 - node.setStyle("margin", ""); - node.setStyle("margin-left", ""); - node.setAttr("class", ""); - - function appendLi(list, p, type) { - if (list.tagName == "ol") { - if (browser.ie) { - var first = p.firstChild(); - if ( - first.type == "element" && - first.tagName == "span" && - orderlisttype[type].test(first.innerText()) - ) { - p.removeChild(first); - } - } else { - p.innerHTML(p.innerHTML().replace(orderlisttype[type], "")); - } - } else { - p.removeChild(p.firstChild()); - } - - var li = UE.uNode.createElement("li"); - li.appendChild(p); - list.appendChild(li); - } - var tmp = node, - type, - cacheNode = node; - - if ( - node.parentNode.tagName != "li" && - (type = checkListType(node.innerText(), node)) - ) { - var list = UE.uNode.createElement( - me.options.insertorderedlist.hasOwnProperty(type) ? "ol" : "ul" - ); - if (customStyle[type]) { - list.setAttr("class", "custom_" + type); - } else { - list.setStyle("list-style-type", type); - } - while ( - node && - node.parentNode.tagName != "li" && - checkListType(node.innerText(), node) - ) { - tmp = node.nextSibling(); - if (!tmp) { - node.parentNode.insertBefore(list, node); - } - appendLi(list, node, type); - node = tmp; - } - if (!list.parentNode && node && node.parentNode) { - node.parentNode.insertBefore(list, node); - } - } - var span = cacheNode.firstChild(); - if ( - span && - span.type == "element" && - span.tagName == "span" && - /^\s*( )+\s*$/.test(span.innerText()) - ) { - span.parentNode.removeChild(span); - } - }); - } - }); - - //调整索引标签 - me.addListener("contentchange", function() { - adjustListStyle(me.document); - }); - - function adjustListStyle(doc, ignore) { - utils.each(domUtils.getElementsByTagName(doc, "ol ul"), function(node) { - if (!domUtils.inDoc(node, doc)) return; - - var parent = node.parentNode; - if (parent.tagName == node.tagName) { - var nodeStyleType = - getStyle(node) || (node.tagName == "OL" ? "decimal" : "disc"), - parentStyleType = - getStyle(parent) || (parent.tagName == "OL" ? "decimal" : "disc"); - if (nodeStyleType == parentStyleType) { - var styleIndex = utils.indexOf( - listStyle[node.tagName], - nodeStyleType - ); - styleIndex = styleIndex + 1 == listStyle[node.tagName].length - ? 0 - : styleIndex + 1; - setListStyle(node, listStyle[node.tagName][styleIndex]); - } - } - var index = 0, - type = 2; - if (domUtils.hasClass(node, /custom_/)) { - if ( - !( - /[ou]l/i.test(parent.tagName) && - domUtils.hasClass(parent, /custom_/) - ) - ) { - type = 1; - } - } else { - if ( - /[ou]l/i.test(parent.tagName) && - domUtils.hasClass(parent, /custom_/) - ) { - type = 3; - } - } - - var style = domUtils.getStyle(node, "list-style-type"); - style && (node.style.cssText = "list-style-type:" + style); - node.className = - utils.trim(node.className.replace(/list-paddingleft-\w+/, "")) + - " list-paddingleft-" + - type; - utils.each(domUtils.getElementsByTagName(node, "li"), function(li) { - li.style.cssText && (li.style.cssText = ""); - if (!li.firstChild) { - domUtils.remove(li); - return; - } - if (li.parentNode !== node) { - return; - } - index++; - if (domUtils.hasClass(node, /custom_/)) { - var paddingLeft = 1, - currentStyle = getStyle(node); - if (node.tagName == "OL") { - if (currentStyle) { - switch (currentStyle) { - case "cn": - case "cn1": - case "cn2": - if ( - index > 10 && - (index % 10 == 0 || (index > 10 && index < 20)) - ) { - paddingLeft = 2; - } else if (index > 20) { - paddingLeft = 3; - } - break; - case "num2": - if (index > 9) { - paddingLeft = 2; - } - } - } - li.className = - "list-" + - customStyle[currentStyle] + - index + - " " + - "list-" + - currentStyle + - "-paddingleft-" + - paddingLeft; - } else { - li.className = - "list-" + - customStyle[currentStyle] + - " " + - "list-" + - currentStyle + - "-paddingleft"; - } - } else { - li.className = li.className.replace(/list-[\w\-]+/gi, ""); - } - var className = li.getAttribute("class"); - if (className !== null && !className.replace(/\s/g, "")) { - domUtils.removeAttributes(li, "class"); - } - }); - !ignore && - adjustList( - node, - node.tagName.toLowerCase(), - getStyle(node) || domUtils.getStyle(node, "list-style-type"), - true - ); - }); - } - function adjustList(list, tag, style, ignoreEmpty) { - var nextList = list.nextSibling; - if ( - nextList && - nextList.nodeType == 1 && - nextList.tagName.toLowerCase() == tag && - (getStyle(nextList) || - domUtils.getStyle(nextList, "list-style-type") || - (tag == "ol" ? "decimal" : "disc")) == style - ) { - domUtils.moveChild(nextList, list); - if (nextList.childNodes.length == 0) { - domUtils.remove(nextList); - } - } - if (nextList && domUtils.isFillChar(nextList)) { - domUtils.remove(nextList); - } - var preList = list.previousSibling; - if ( - preList && - preList.nodeType == 1 && - preList.tagName.toLowerCase() == tag && - (getStyle(preList) || - domUtils.getStyle(preList, "list-style-type") || - (tag == "ol" ? "decimal" : "disc")) == style - ) { - domUtils.moveChild(list, preList); - } - if (preList && domUtils.isFillChar(preList)) { - domUtils.remove(preList); - } - !ignoreEmpty && domUtils.isEmptyBlock(list) && domUtils.remove(list); - if (getStyle(list)) { - adjustListStyle(list.ownerDocument, true); - } - } - - function setListStyle(list, style) { - if (customStyle[style]) { - list.className = "custom_" + style; - } - try { - domUtils.setStyle(list, "list-style-type", style); - } catch (e) {} - } - function clearEmptySibling(node) { - var tmpNode = node.previousSibling; - if (tmpNode && domUtils.isEmptyBlock(tmpNode)) { - domUtils.remove(tmpNode); - } - tmpNode = node.nextSibling; - if (tmpNode && domUtils.isEmptyBlock(tmpNode)) { - domUtils.remove(tmpNode); - } - } - - me.addListener("keydown", function(type, evt) { - function preventAndSave() { - evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); - me.fireEvent("contentchange"); - me.undoManger && me.undoManger.save(); - } - function findList(node, filterFn) { - while (node && !domUtils.isBody(node)) { - if (filterFn(node)) { - return null; - } - if (node.nodeType == 1 && /[ou]l/i.test(node.tagName)) { - return node; - } - node = node.parentNode; - } - return null; - } - var keyCode = evt.keyCode || evt.which; - if (keyCode == 13 && !evt.shiftKey) { - //回车 - var rng = me.selection.getRange(), - parent = domUtils.findParent( - rng.startContainer, - function(node) { - return domUtils.isBlockElm(node); - }, - true - ), - li = domUtils.findParentByTagName(rng.startContainer, "li", true); - if (parent && parent.tagName != "PRE" && !li) { - var html = parent.innerHTML.replace( - new RegExp(domUtils.fillChar, "g"), - "" - ); - if (/^\s*1\s*\.[^\d]/.test(html)) { - parent.innerHTML = html.replace(/^\s*1\s*\./, ""); - rng.setStartAtLast(parent).collapse(true).select(); - me.__hasEnterExecCommand = true; - me.execCommand("insertorderedlist"); - me.__hasEnterExecCommand = false; - } - } - var range = me.selection.getRange(), - start = findList(range.startContainer, function(node) { - return node.tagName == "TABLE"; - }), - end = range.collapsed - ? start - : findList(range.endContainer, function(node) { - return node.tagName == "TABLE"; - }); - - if (start && end && start === end) { - if (!range.collapsed) { - start = domUtils.findParentByTagName( - range.startContainer, - "li", - true - ); - end = domUtils.findParentByTagName(range.endContainer, "li", true); - if (start && end && start === end) { - range.deleteContents(); - li = domUtils.findParentByTagName(range.startContainer, "li", true); - if (li && domUtils.isEmptyBlock(li)) { - pre = li.previousSibling; - next = li.nextSibling; - p = me.document.createElement("p"); - - domUtils.fillNode(me.document, p); - parentList = li.parentNode; - if (pre && next) { - range.setStart(next, 0).collapse(true).select(true); - domUtils.remove(li); - } else { - if ((!pre && !next) || !pre) { - parentList.parentNode.insertBefore(p, parentList); - } else { - li.parentNode.parentNode.insertBefore( - p, - parentList.nextSibling - ); - } - domUtils.remove(li); - if (!parentList.firstChild) { - domUtils.remove(parentList); - } - range.setStart(p, 0).setCursor(); - } - preventAndSave(); - return; - } - } else { - var tmpRange = range.cloneRange(), - bk = tmpRange.collapse(false).createBookmark(); - - range.deleteContents(); - tmpRange.moveToBookmark(bk); - var li = domUtils.findParentByTagName( - tmpRange.startContainer, - "li", - true - ); - - clearEmptySibling(li); - tmpRange.select(); - preventAndSave(); - return; - } - } - - li = domUtils.findParentByTagName(range.startContainer, "li", true); - - if (li) { - if (domUtils.isEmptyBlock(li)) { - bk = range.createBookmark(); - var parentList = li.parentNode; - if (li !== parentList.lastChild) { - domUtils.breakParent(li, parentList); - clearEmptySibling(li); - } else { - parentList.parentNode.insertBefore(li, parentList.nextSibling); - if (domUtils.isEmptyNode(parentList)) { - domUtils.remove(parentList); - } - } - //嵌套不处理 - if (!dtd.$list[li.parentNode.tagName]) { - if (!domUtils.isBlockElm(li.firstChild)) { - p = me.document.createElement("p"); - li.parentNode.insertBefore(p, li); - while (li.firstChild) { - p.appendChild(li.firstChild); - } - domUtils.remove(li); - } else { - domUtils.remove(li, true); - } - } - range.moveToBookmark(bk).select(); - } else { - var first = li.firstChild; - if (!first || !domUtils.isBlockElm(first)) { - var p = me.document.createElement("p"); - - !li.firstChild && domUtils.fillNode(me.document, p); - while (li.firstChild) { - p.appendChild(li.firstChild); - } - li.appendChild(p); - first = p; - } - - var span = me.document.createElement("span"); - - range.insertNode(span); - domUtils.breakParent(span, li); - - var nextLi = span.nextSibling; - first = nextLi.firstChild; - - if (!first) { - p = me.document.createElement("p"); - - domUtils.fillNode(me.document, p); - nextLi.appendChild(p); - first = p; - } - if (domUtils.isEmptyNode(first)) { - first.innerHTML = ""; - domUtils.fillNode(me.document, first); - } - - range.setStart(first, 0).collapse(true).shrinkBoundary().select(); - domUtils.remove(span); - var pre = nextLi.previousSibling; - if (pre && domUtils.isEmptyBlock(pre)) { - pre.innerHTML = "

    "; - domUtils.fillNode(me.document, pre.firstChild); - } - } - // } - preventAndSave(); - } - } - } - if (keyCode == 8) { - //修中ie中li下的问题 - range = me.selection.getRange(); - if (range.collapsed && domUtils.isStartInblock(range)) { - tmpRange = range.cloneRange().trimBoundary(); - li = domUtils.findParentByTagName(range.startContainer, "li", true); - //要在li的最左边,才能处理 - if (li && domUtils.isStartInblock(tmpRange)) { - start = domUtils.findParentByTagName(range.startContainer, "p", true); - if (start && start !== li.firstChild) { - var parentList = domUtils.findParentByTagName(start, ["ol", "ul"]); - domUtils.breakParent(start, parentList); - clearEmptySibling(start); - me.fireEvent("contentchange"); - range.setStart(start, 0).setCursor(false, true); - me.fireEvent("saveScene"); - domUtils.preventDefault(evt); - return; - } - - if (li && (pre = li.previousSibling)) { - if (keyCode == 46 && li.childNodes.length) { - return; - } - //有可能上边的兄弟节点是个2级菜单,要追加到2级菜单的最后的li - if (dtd.$list[pre.tagName]) { - pre = pre.lastChild; - } - me.undoManger && me.undoManger.save(); - first = li.firstChild; - if (domUtils.isBlockElm(first)) { - if (domUtils.isEmptyNode(first)) { - // range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true); - pre.appendChild(first); - range.setStart(first, 0).setCursor(false, true); - //first不是唯一的节点 - while (li.firstChild) { - pre.appendChild(li.firstChild); - } - } else { - span = me.document.createElement("span"); - range.insertNode(span); - //判断pre是否是空的节点,如果是


    类型的空节点,干掉p标签防止它占位 - if (domUtils.isEmptyBlock(pre)) { - pre.innerHTML = ""; - } - domUtils.moveChild(li, pre); - range.setStartBefore(span).collapse(true).select(true); - - domUtils.remove(span); - } - } else { - if (domUtils.isEmptyNode(li)) { - var p = me.document.createElement("p"); - pre.appendChild(p); - range.setStart(p, 0).setCursor(); - // range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true); - } else { - range - .setEnd(pre, pre.childNodes.length) - .collapse() - .select(true); - while (li.firstChild) { - pre.appendChild(li.firstChild); - } - } - } - domUtils.remove(li); - me.fireEvent("contentchange"); - me.fireEvent("saveScene"); - domUtils.preventDefault(evt); - return; - } - //trace:980 - - if (li && !li.previousSibling) { - var parentList = li.parentNode; - var bk = range.createBookmark(); - if (domUtils.isTagNode(parentList.parentNode, "ol ul")) { - parentList.parentNode.insertBefore(li, parentList); - if (domUtils.isEmptyNode(parentList)) { - domUtils.remove(parentList); - } - } else { - while (li.firstChild) { - parentList.parentNode.insertBefore(li.firstChild, parentList); - } - - domUtils.remove(li); - if (domUtils.isEmptyNode(parentList)) { - domUtils.remove(parentList); - } - } - range.moveToBookmark(bk).setCursor(false, true); - me.fireEvent("contentchange"); - me.fireEvent("saveScene"); - domUtils.preventDefault(evt); - return; - } - } - } - } - }); - - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - if (keyCode == 8) { - var rng = me.selection.getRange(), - list; - if ( - (list = domUtils.findParentByTagName( - rng.startContainer, - ["ol", "ul"], - true - )) - ) { - adjustList( - list, - list.tagName.toLowerCase(), - getStyle(list) || domUtils.getComputedStyle(list, "list-style-type"), - true - ); - } - } - }); - //处理tab键 - me.addListener("tabkeydown", function() { - var range = me.selection.getRange(); - - //控制级数 - function checkLevel(li) { - if (me.options.maxListLevel != -1) { - var level = li.parentNode, - levelNum = 0; - while (/[ou]l/i.test(level.tagName)) { - levelNum++; - level = level.parentNode; - } - if (levelNum >= me.options.maxListLevel) { - return true; - } - } - } - //只以开始为准 - //todo 后续改进 - var li = domUtils.findParentByTagName(range.startContainer, "li", true); - if (li) { - var bk; - if (range.collapsed) { - if (checkLevel(li)) return true; - var parentLi = li.parentNode, - list = me.document.createElement(parentLi.tagName), - index = utils.indexOf( - listStyle[list.tagName], - getStyle(parentLi) || - domUtils.getComputedStyle(parentLi, "list-style-type") - ); - index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1; - var currentStyle = listStyle[list.tagName][index]; - setListStyle(list, currentStyle); - if (domUtils.isStartInblock(range)) { - me.fireEvent("saveScene"); - bk = range.createBookmark(); - parentLi.insertBefore(list, li); - list.appendChild(li); - adjustList(list, list.tagName.toLowerCase(), currentStyle); - me.fireEvent("contentchange"); - range.moveToBookmark(bk).select(true); - return true; - } - } else { - me.fireEvent("saveScene"); - bk = range.createBookmark(); - for ( - var i = 0, closeList, parents = domUtils.findParents(li), ci; - (ci = parents[i++]); - - ) { - if (domUtils.isTagNode(ci, "ol ul")) { - closeList = ci; - break; - } - } - var current = li; - if (bk.end) { - while ( - current && - !( - domUtils.getPosition(current, bk.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - if (checkLevel(current)) { - current = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return node !== closeList; - }); - continue; - } - var parentLi = current.parentNode, - list = me.document.createElement(parentLi.tagName), - index = utils.indexOf( - listStyle[list.tagName], - getStyle(parentLi) || - domUtils.getComputedStyle(parentLi, "list-style-type") - ); - var currentIndex = index + 1 == listStyle[list.tagName].length - ? 0 - : index + 1; - var currentStyle = listStyle[list.tagName][currentIndex]; - setListStyle(list, currentStyle); - parentLi.insertBefore(list, current); - while ( - current && - !( - domUtils.getPosition(current, bk.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - li = current.nextSibling; - list.appendChild(current); - if (!li || domUtils.isTagNode(li, "ol ul")) { - if (li) { - while ((li = li.firstChild)) { - if (li.tagName == "LI") { - break; - } - } - } else { - li = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return node !== closeList; - }); - } - break; - } - current = li; - } - adjustList(list, list.tagName.toLowerCase(), currentStyle); - current = li; - } - } - me.fireEvent("contentchange"); - range.moveToBookmark(bk).select(); - return true; - } - } - }); - function getLi(start) { - while (start && !domUtils.isBody(start)) { - if (start.nodeName == "TABLE") { - return null; - } - if (start.nodeName == "LI") { - return start; - } - start = start.parentNode; - } - } - - /** - * 有序列表,与“insertunorderedlist”命令互斥 - * @command insertorderedlist - * @method execCommand - * @param { String } command 命令字符串 - * @param { String } style 插入的有序列表类型,值为:decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2 - * @example - * ```javascript - * editor.execCommand( 'insertorderedlist','decimal'); - * ``` - */ - /** - * 查询当前选区内容是否有序列表 - * @command insertorderedlist - * @method queryCommandState - * @param { String } cmd 命令字符串 - * @return { int } 如果当前选区是有序列表返回1,否则返回0 - * @example - * ```javascript - * editor.queryCommandState( 'insertorderedlist' ); - * ``` - */ - /** - * 查询当前选区内容是否有序列表 - * @command insertorderedlist - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回当前有序列表的类型,值为null或decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2 - * @example - * ```javascript - * editor.queryCommandValue( 'insertorderedlist' ); - * ``` - */ - - /** - * 无序列表,与“insertorderedlist”命令互斥 - * @command insertunorderedlist - * @method execCommand - * @param { String } command 命令字符串 - * @param { String } style 插入的无序列表类型,值为:circle,disc,square,dash,dot - * @example - * ```javascript - * editor.execCommand( 'insertunorderedlist','circle'); - * ``` - */ - /** - * 查询当前是否有word文档粘贴进来的图片 - * @command insertunorderedlist - * @method insertunorderedlist - * @param { String } command 命令字符串 - * @return { int } 如果当前选区是无序列表返回1,否则返回0 - * @example - * ```javascript - * editor.queryCommandState( 'insertunorderedlist' ); - * ``` - */ - /** - * 查询当前选区内容是否有序列表 - * @command insertunorderedlist - * @method queryCommandValue - * @param { String } command 命令字符串 - * @return { String } 返回当前无序列表的类型,值为null或circle,disc,square,dash,dot - * @example - * ```javascript - * editor.queryCommandValue( 'insertunorderedlist' ); - * ``` - */ - - me.commands["insertorderedlist"] = me.commands["insertunorderedlist"] = { - execCommand: function(command, style) { - if (!style) { - style = command.toLowerCase() == "insertorderedlist" - ? "decimal" - : "disc"; - } - var me = this, - range = this.selection.getRange(), - filterFn = function(node) { - return node.nodeType == 1 - ? node.tagName.toLowerCase() != "br" - : !domUtils.isWhitespace(node); - }, - tag = command.toLowerCase() == "insertorderedlist" ? "ol" : "ul", - frag = me.document.createDocumentFragment(); - //去掉是因为会出现选到末尾,导致adjustmentBoundary缩到ol/ul的位置 - //range.shrinkBoundary();//.adjustmentBoundary(); - range.adjustmentBoundary().shrinkBoundary(); - var bko = range.createBookmark(true), - start = getLi(me.document.getElementById(bko.start)), - modifyStart = 0, - end = getLi(me.document.getElementById(bko.end)), - modifyEnd = 0, - startParent, - endParent, - list, - tmp; - - if (start || end) { - start && (startParent = start.parentNode); - if (!bko.end) { - end = start; - } - end && (endParent = end.parentNode); - - if (startParent === endParent) { - while (start !== end) { - tmp = start; - start = start.nextSibling; - if (!domUtils.isBlockElm(tmp.firstChild)) { - var p = me.document.createElement("p"); - while (tmp.firstChild) { - p.appendChild(tmp.firstChild); - } - tmp.appendChild(p); - } - frag.appendChild(tmp); - } - tmp = me.document.createElement("span"); - startParent.insertBefore(tmp, end); - if (!domUtils.isBlockElm(end.firstChild)) { - p = me.document.createElement("p"); - while (end.firstChild) { - p.appendChild(end.firstChild); - } - end.appendChild(p); - } - frag.appendChild(end); - domUtils.breakParent(tmp, startParent); - if (domUtils.isEmptyNode(tmp.previousSibling)) { - domUtils.remove(tmp.previousSibling); - } - if (domUtils.isEmptyNode(tmp.nextSibling)) { - domUtils.remove(tmp.nextSibling); - } - var nodeStyle = - getStyle(startParent) || - domUtils.getComputedStyle(startParent, "list-style-type") || - (command.toLowerCase() == "insertorderedlist" ? "decimal" : "disc"); - if (startParent.tagName.toLowerCase() == tag && nodeStyle == style) { - for ( - var i = 0, ci, tmpFrag = me.document.createDocumentFragment(); - (ci = frag.firstChild); - - ) { - if (domUtils.isTagNode(ci, "ol ul")) { - // 删除时,子列表不处理 - // utils.each(domUtils.getElementsByTagName(ci,'li'),function(li){ - // while(li.firstChild){ - // tmpFrag.appendChild(li.firstChild); - // } - // - // }); - tmpFrag.appendChild(ci); - } else { - while (ci.firstChild) { - tmpFrag.appendChild(ci.firstChild); - domUtils.remove(ci); - } - } - } - tmp.parentNode.insertBefore(tmpFrag, tmp); - } else { - list = me.document.createElement(tag); - setListStyle(list, style); - list.appendChild(frag); - tmp.parentNode.insertBefore(list, tmp); - } - - domUtils.remove(tmp); - list && adjustList(list, tag, style); - range.moveToBookmark(bko).select(); - return; - } - //开始 - if (start) { - while (start) { - tmp = start.nextSibling; - if (domUtils.isTagNode(start, "ol ul")) { - frag.appendChild(start); - } else { - var tmpfrag = me.document.createDocumentFragment(), - hasBlock = 0; - while (start.firstChild) { - if (domUtils.isBlockElm(start.firstChild)) { - hasBlock = 1; - } - tmpfrag.appendChild(start.firstChild); - } - if (!hasBlock) { - var tmpP = me.document.createElement("p"); - tmpP.appendChild(tmpfrag); - frag.appendChild(tmpP); - } else { - frag.appendChild(tmpfrag); - } - domUtils.remove(start); - } - - start = tmp; - } - startParent.parentNode.insertBefore(frag, startParent.nextSibling); - if (domUtils.isEmptyNode(startParent)) { - range.setStartBefore(startParent); - domUtils.remove(startParent); - } else { - range.setStartAfter(startParent); - } - modifyStart = 1; - } - - if (end && domUtils.inDoc(endParent, me.document)) { - //结束 - start = endParent.firstChild; - while (start && start !== end) { - tmp = start.nextSibling; - if (domUtils.isTagNode(start, "ol ul")) { - frag.appendChild(start); - } else { - tmpfrag = me.document.createDocumentFragment(); - hasBlock = 0; - while (start.firstChild) { - if (domUtils.isBlockElm(start.firstChild)) { - hasBlock = 1; - } - tmpfrag.appendChild(start.firstChild); - } - if (!hasBlock) { - tmpP = me.document.createElement("p"); - tmpP.appendChild(tmpfrag); - frag.appendChild(tmpP); - } else { - frag.appendChild(tmpfrag); - } - domUtils.remove(start); - } - start = tmp; - } - var tmpDiv = domUtils.createElement(me.document, "div", { - tmpDiv: 1 - }); - domUtils.moveChild(end, tmpDiv); - - frag.appendChild(tmpDiv); - domUtils.remove(end); - endParent.parentNode.insertBefore(frag, endParent); - range.setEndBefore(endParent); - if (domUtils.isEmptyNode(endParent)) { - domUtils.remove(endParent); - } - - modifyEnd = 1; - } - } - - if (!modifyStart) { - range.setStartBefore(me.document.getElementById(bko.start)); - } - if (bko.end && !modifyEnd) { - range.setEndAfter(me.document.getElementById(bko.end)); - } - range.enlarge(true, function(node) { - return notExchange[node.tagName]; - }); - - frag = me.document.createDocumentFragment(); - - var bk = range.createBookmark(), - current = domUtils.getNextDomNode(bk.start, false, filterFn), - tmpRange = range.cloneRange(), - tmpNode, - block = domUtils.isBlockElm; - - while ( - current && - current !== bk.end && - domUtils.getPosition(current, bk.end) & domUtils.POSITION_PRECEDING - ) { - if (current.nodeType == 3 || dtd.li[current.tagName]) { - if (current.nodeType == 1 && dtd.$list[current.tagName]) { - while (current.firstChild) { - frag.appendChild(current.firstChild); - } - tmpNode = domUtils.getNextDomNode(current, false, filterFn); - domUtils.remove(current); - current = tmpNode; - continue; - } - tmpNode = current; - tmpRange.setStartBefore(current); - - while ( - current && - current !== bk.end && - (!block(current) || domUtils.isBookmarkNode(current)) - ) { - tmpNode = current; - current = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return !notExchange[node.tagName]; - }); - } - - if (current && block(current)) { - tmp = domUtils.getNextDomNode(tmpNode, false, filterFn); - if (tmp && domUtils.isBookmarkNode(tmp)) { - current = domUtils.getNextDomNode(tmp, false, filterFn); - tmpNode = tmp; - } - } - tmpRange.setEndAfter(tmpNode); - - current = domUtils.getNextDomNode(tmpNode, false, filterFn); - - var li = range.document.createElement("li"); - - li.appendChild(tmpRange.extractContents()); - if (domUtils.isEmptyNode(li)) { - var tmpNode = range.document.createElement("p"); - while (li.firstChild) { - tmpNode.appendChild(li.firstChild); - } - li.appendChild(tmpNode); - } - frag.appendChild(li); - } else { - current = domUtils.getNextDomNode(current, true, filterFn); - } - } - range.moveToBookmark(bk).collapse(true); - list = me.document.createElement(tag); - setListStyle(list, style); - list.appendChild(frag); - range.insertNode(list); - //当前list上下看能否合并 - adjustList(list, tag, style); - //去掉冗余的tmpDiv - for ( - var i = 0, ci, tmpDivs = domUtils.getElementsByTagName(list, "div"); - (ci = tmpDivs[i++]); - - ) { - if (ci.getAttribute("tmpDiv")) { - domUtils.remove(ci, true); - } - } - range.moveToBookmark(bko).select(); - }, - queryCommandState: function(command) { - var tag = command.toLowerCase() == "insertorderedlist" ? "ol" : "ul"; - var path = this.selection.getStartElementPath(); - for (var i = 0, ci; (ci = path[i++]); ) { - if (ci.nodeName == "TABLE") { - return 0; - } - if (tag == ci.nodeName.toLowerCase()) { - return 1; - } - } - return 0; - }, - queryCommandValue: function(command) { - var tag = command.toLowerCase() == "insertorderedlist" ? "ol" : "ul"; - var path = this.selection.getStartElementPath(), - node; - for (var i = 0, ci; (ci = path[i++]); ) { - if (ci.nodeName == "TABLE") { - node = null; - break; - } - if (tag == ci.nodeName.toLowerCase()) { - node = ci; - break; - } - } - return node - ? getStyle(node) || domUtils.getComputedStyle(node, "list-style-type") - : null; - } - }; -}; - - -// plugins/source.js -/** - * 源码编辑插件 - * @file - * @since 1.2.6.1 - */ - -(function() { - var sourceEditors = { - textarea: function(editor, holder) { - var textarea = holder.ownerDocument.createElement("textarea"); - textarea.style.cssText = - "position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;"; - // todo: IE下只有onresize属性可用... 很纠结 - if (browser.ie && browser.version < 8) { - textarea.style.width = holder.offsetWidth + "px"; - textarea.style.height = holder.offsetHeight + "px"; - holder.onresize = function() { - textarea.style.width = holder.offsetWidth + "px"; - textarea.style.height = holder.offsetHeight + "px"; - }; - } - holder.appendChild(textarea); - return { - setContent: function(content) { - textarea.value = content; - }, - getContent: function() { - return textarea.value; - }, - select: function() { - var range; - if (browser.ie) { - range = textarea.createTextRange(); - range.collapse(true); - range.select(); - } else { - //todo: chrome下无法设置焦点 - textarea.setSelectionRange(0, 0); - textarea.focus(); - } - }, - dispose: function() { - holder.removeChild(textarea); - // todo - holder.onresize = null; - textarea = null; - holder = null; - }, - focus: function (){ - textarea.focus(); - }, - blur: function (){ - textarea.blur(); - } - }; - }, - codemirror: function(editor, holder) { - var codeEditor = window.CodeMirror(holder, { - mode: "text/html", - tabMode: "indent", - lineNumbers: true, - lineWrapping: true - }); - var dom = codeEditor.getWrapperElement(); - dom.style.cssText = - 'position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,"Courier new",monospace;font-size:13px;'; - codeEditor.getScrollerElement().style.cssText = - "position:absolute;left:0;top:0;width:100%;height:100%;"; - codeEditor.refresh(); - return { - getCodeMirror: function() { - return codeEditor; - }, - setContent: function(content) { - codeEditor.setValue(content); - }, - getContent: function() { - return codeEditor.getValue(); - }, - select: function() { - codeEditor.focus(); - }, - dispose: function() { - holder.removeChild(dom); - dom = null; - codeEditor = null; - }, - focus: function (){ - codeEditor.focus(); - }, - blur: function (){ - // codeEditor.blur(); - // since codemirror not support blur() - codeEditor.setOption('readOnly', true); - codeEditor.setOption('readOnly', false); - } - }; - } - }; - - UE.plugins["source"] = function() { - var me = this; - var opt = this.options; - var sourceMode = false; - var sourceEditor; - var orgSetContent; - var orgFocus; - var orgBlur; - opt.sourceEditor = browser.ie - ? "textarea" - : opt.sourceEditor || "codemirror"; - - me.setOpt({ - sourceEditorFirst: false - }); - function createSourceEditor(holder) { - return sourceEditors[ - opt.sourceEditor == "codemirror" && window.CodeMirror - ? "codemirror" - : "textarea" - ](me, holder); - } - - var bakCssText; - //解决在源码模式下getContent不能得到最新的内容问题 - var oldGetContent, bakAddress; - - /** - * 切换源码模式和编辑模式 - * @command source - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'source'); - * ``` - */ - - /** - * 查询当前编辑区域的状态是源码模式还是可视化模式 - * @command source - * @method queryCommandState - * @param { String } cmd 命令字符串 - * @return { int } 如果当前是源码编辑模式,返回1,否则返回0 - * @example - * ```javascript - * editor.queryCommandState( 'source' ); - * ``` - */ - - me.commands["source"] = { - execCommand: function() { - sourceMode = !sourceMode; - if (sourceMode) { - bakAddress = me.selection.getRange().createAddress(false, true); - me.undoManger && me.undoManger.save(true); - if (browser.gecko) { - me.body.contentEditable = false; - } - - bakCssText = me.iframe.style.cssText; - me.iframe.style.cssText += - "position:absolute;left:-32768px;top:-32768px;"; - - me.fireEvent("beforegetcontent"); - var root = UE.htmlparser(me.body.innerHTML); - me.filterOutputRule(root); - root.traversal(function(node) { - if (node.type == "element") { - switch (node.tagName) { - case "td": - case "th": - case "caption": - if (node.children && node.children.length == 1) { - if (node.firstChild().tagName == "br") { - node.removeChild(node.firstChild()); - } - } - break; - case "pre": - node.innerText(node.innerText().replace(/ /g, " ")); - } - } - }); - - me.fireEvent("aftergetcontent"); - - var content = root.toHtml(true); - - sourceEditor = createSourceEditor(me.iframe.parentNode); - - sourceEditor.setContent(content); - - orgSetContent = me.setContent; - - me.setContent = function(html) { - //这里暂时不触发事件,防止报错 - var root = UE.htmlparser(html); - me.filterInputRule(root); - html = root.toHtml(); - sourceEditor.setContent(html); - }; - - setTimeout(function() { - sourceEditor.select(); - me.addListener("fullscreenchanged", function() { - try { - sourceEditor.getCodeMirror().refresh(); - } catch (e) {} - }); - }); - - //重置getContent,源码模式下取值也能是最新的数据 - oldGetContent = me.getContent; - me.getContent = function() { - return ( - sourceEditor.getContent() || - "

    " + (browser.ie ? "" : "
    ") + "

    " - ); - }; - - orgFocus = me.focus; - orgBlur = me.blur; - - me.focus = function(){ - sourceEditor.focus(); - }; - - me.blur = function(){ - orgBlur.call(me); - sourceEditor.blur(); - }; - } else { - me.iframe.style.cssText = bakCssText; - var cont = - sourceEditor.getContent() || - "

    " + (browser.ie ? "" : "
    ") + "

    "; - //处理掉block节点前后的空格,有可能会误命中,暂时不考虑 - cont = cont.replace( - new RegExp("[\\r\\t\\n ]*]*)>", "g"), - function(a, b) { - if (b && !dtd.$inlineWithA[b.toLowerCase()]) { - return a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g, ""); - } - return a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g, ""); - } - ); - - me.setContent = orgSetContent; - - me.setContent(cont); - sourceEditor.dispose(); - sourceEditor = null; - //还原getContent方法 - me.getContent = oldGetContent; - - me.focus = orgFocus; - me.blur = orgBlur; - - var first = me.body.firstChild; - //trace:1106 都删除空了,下边会报错,所以补充一个p占位 - if (!first) { - me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; - first = me.body.firstChild; - } - - //要在ifm为显示时ff才能取到selection,否则报错 - //这里不能比较位置了 - me.undoManger && me.undoManger.save(true); - - if (browser.gecko) { - var input = document.createElement("input"); - input.style.cssText = "position:absolute;left:0;top:-32768px"; - - document.body.appendChild(input); - - me.body.contentEditable = false; - setTimeout(function() { - domUtils.setViewportOffset(input, { left: -32768, top: 0 }); - input.focus(); - setTimeout(function() { - me.body.contentEditable = true; - me.selection.getRange().moveToAddress(bakAddress).select(true); - domUtils.remove(input); - }); - }); - } else { - //ie下有可能报错,比如在代码顶头的情况 - try { - me.selection.getRange().moveToAddress(bakAddress).select(true); - } catch (e) {} - } - } - this.fireEvent("sourcemodechanged", sourceMode); - }, - queryCommandState: function() { - return sourceMode | 0; - }, - notNeedUndo: 1 - }; - var oldQueryCommandState = me.queryCommandState; - - me.queryCommandState = function(cmdName) { - cmdName = cmdName.toLowerCase(); - if (sourceMode) { - //源码模式下可以开启的命令 - return cmdName in - { - source: 1, - fullscreen: 1 - } - ? 1 - : -1; - } - return oldQueryCommandState.apply(this, arguments); - }; - - if (opt.sourceEditor == "codemirror") { - me.addListener("ready", function() { - utils.loadFile( - document, - { - src: - opt.codeMirrorJsUrl || - opt.UEDITOR_HOME_URL + "third-party/codemirror/codemirror.js", - tag: "script", - type: "text/javascript", - defer: "defer" - }, - function() { - if (opt.sourceEditorFirst) { - setTimeout(function() { - me.execCommand("source"); - }, 0); - } - } - ); - utils.loadFile(document, { - tag: "link", - rel: "stylesheet", - type: "text/css", - href: - opt.codeMirrorCssUrl || - opt.UEDITOR_HOME_URL + "third-party/codemirror/codemirror.css" - }); - }); - } - }; -})(); - - -// plugins/enterkey.js -///import core -///import plugins/undo.js -///commands 设置回车标签p或br -///commandsName EnterKey -///commandsTitle 设置回车标签p或br -/** - * @description 处理回车 - * @author zhanyi - */ -UE.plugins["enterkey"] = function() { - var hTag, - me = this, - tag = me.options.enterTag; - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - if (keyCode == 13) { - var range = me.selection.getRange(), - start = range.startContainer, - doSave; - - //修正在h1-h6里边回车后不能嵌套p的问题 - if (!browser.ie) { - if (/h\d/i.test(hTag)) { - if (browser.gecko) { - var h = domUtils.findParentByTagName( - start, - [ - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "blockquote", - "caption", - "table" - ], - true - ); - if (!h) { - me.document.execCommand("formatBlock", false, "

    "); - doSave = 1; - } - } else { - //chrome remove div - if (start.nodeType == 1) { - var tmp = me.document.createTextNode(""), - div; - range.insertNode(tmp); - div = domUtils.findParentByTagName(tmp, "div", true); - if (div) { - var p = me.document.createElement("p"); - while (div.firstChild) { - p.appendChild(div.firstChild); - } - div.parentNode.insertBefore(p, div); - domUtils.remove(div); - range.setStartBefore(tmp).setCursor(); - doSave = 1; - } - domUtils.remove(tmp); - } - } - - if (me.undoManger && doSave) { - me.undoManger.save(); - } - } - //没有站位符,会出现多行的问题 - browser.opera && range.select(); - } else { - me.fireEvent("saveScene", true, true); - } - } - }); - - me.addListener("keydown", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - if (keyCode == 13) { - //回车 - if (me.fireEvent("beforeenterkeydown")) { - domUtils.preventDefault(evt); - return; - } - me.fireEvent("saveScene", true, true); - hTag = ""; - - var range = me.selection.getRange(); - - if (!range.collapsed) { - //跨td不能删 - var start = range.startContainer, - end = range.endContainer, - startTd = domUtils.findParentByTagName(start, "td", true), - endTd = domUtils.findParentByTagName(end, "td", true); - if ( - (startTd && endTd && startTd !== endTd) || - (!startTd && endTd) || - (startTd && !endTd) - ) { - evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); - return; - } - } - if (tag == "p") { - if (!browser.ie) { - start = domUtils.findParentByTagName( - range.startContainer, - [ - "ol", - "ul", - "p", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "blockquote", - "caption" - ], - true - ); - - //opera下执行formatblock会在table的场景下有问题,回车在opera原生支持很好,所以暂时在opera去掉调用这个原生的command - //trace:2431 - if (!start && !browser.opera) { - me.document.execCommand("formatBlock", false, "

    "); - - if (browser.gecko) { - range = me.selection.getRange(); - start = domUtils.findParentByTagName( - range.startContainer, - "p", - true - ); - start && domUtils.removeDirtyAttr(start); - } - } else { - hTag = start.tagName; - start.tagName.toLowerCase() == "p" && - browser.gecko && - domUtils.removeDirtyAttr(start); - } - } - } else { - evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); - - if (!range.collapsed) { - range.deleteContents(); - start = range.startContainer; - if ( - start.nodeType == 1 && - (start = start.childNodes[range.startOffset]) - ) { - while (start.nodeType == 1) { - if (dtd.$empty[start.tagName]) { - range.setStartBefore(start).setCursor(); - if (me.undoManger) { - me.undoManger.save(); - } - return false; - } - if (!start.firstChild) { - var br = range.document.createElement("br"); - start.appendChild(br); - range.setStart(start, 0).setCursor(); - if (me.undoManger) { - me.undoManger.save(); - } - return false; - } - start = start.firstChild; - } - if (start === range.startContainer.childNodes[range.startOffset]) { - br = range.document.createElement("br"); - range.insertNode(br).setCursor(); - } else { - range.setStart(start, 0).setCursor(); - } - } else { - br = range.document.createElement("br"); - range.insertNode(br).setStartAfter(br).setCursor(); - } - } else { - br = range.document.createElement("br"); - range.insertNode(br); - var parent = br.parentNode; - if (parent.lastChild === br) { - br.parentNode.insertBefore(br.cloneNode(true), br); - range.setStartBefore(br); - } else { - range.setStartAfter(br); - } - range.setCursor(); - } - } - } - }); -}; - - -// plugins/keystrokes.js -/* 处理特殊键的兼容性问题 */ -UE.plugins["keystrokes"] = function() { - var me = this; - var collapsed = true; - me.addListener("keydown", function(type, evt) { - var keyCode = evt.keyCode || evt.which, - rng = me.selection.getRange(); - - //处理全选的情况 - if ( - !rng.collapsed && - !(evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey) && - ((keyCode >= 65 && keyCode <= 90) || - (keyCode >= 48 && keyCode <= 57) || - (keyCode >= 96 && keyCode <= 111) || - { - 13: 1, - 8: 1, - 46: 1 - }[keyCode]) - ) { - var tmpNode = rng.startContainer; - if (domUtils.isFillChar(tmpNode)) { - rng.setStartBefore(tmpNode); - } - tmpNode = rng.endContainer; - if (domUtils.isFillChar(tmpNode)) { - rng.setEndAfter(tmpNode); - } - rng.txtToElmBoundary(); - //结束边界可能放到了br的前边,要把br包含进来 - // x[xxx]
    - if (rng.endContainer && rng.endContainer.nodeType == 1) { - tmpNode = rng.endContainer.childNodes[rng.endOffset]; - if (tmpNode && domUtils.isBr(tmpNode)) { - rng.setEndAfter(tmpNode); - } - } - if (rng.startOffset == 0) { - tmpNode = rng.startContainer; - if (domUtils.isBoundaryNode(tmpNode, "firstChild")) { - tmpNode = rng.endContainer; - if ( - rng.endOffset == - (tmpNode.nodeType == 3 - ? tmpNode.nodeValue.length - : tmpNode.childNodes.length) && - domUtils.isBoundaryNode(tmpNode, "lastChild") - ) { - me.fireEvent("saveScene"); - me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; - rng.setStart(me.body.firstChild, 0).setCursor(false, true); - me._selectionChange(); - return; - } - } - } - } - - //处理backspace - if (keyCode == keymap.Backspace) { - rng = me.selection.getRange(); - collapsed = rng.collapsed; - if (me.fireEvent("delkeydown", evt)) { - return; - } - var start, end; - //避免按两次删除才能生效的问题 - if (rng.collapsed && rng.inFillChar()) { - start = rng.startContainer; - - if (domUtils.isFillChar(start)) { - rng.setStartBefore(start).shrinkBoundary(true).collapse(true); - domUtils.remove(start); - } else { - start.nodeValue = start.nodeValue.replace( - new RegExp("^" + domUtils.fillChar), - "" - ); - rng.startOffset--; - rng.collapse(true).select(true); - } - } - - //解决选中control元素不能删除的问题 - if ((start = rng.getClosedNode())) { - me.fireEvent("saveScene"); - rng.setStartBefore(start); - domUtils.remove(start); - rng.setCursor(); - me.fireEvent("saveScene"); - domUtils.preventDefault(evt); - return; - } - //阻止在table上的删除 - if (!browser.ie) { - start = domUtils.findParentByTagName(rng.startContainer, "table", true); - end = domUtils.findParentByTagName(rng.endContainer, "table", true); - if ((start && !end) || (!start && end) || start !== end) { - evt.preventDefault(); - return; - } - } - } - //处理tab键的逻辑 - if (keyCode == keymap.Tab) { - //不处理以下标签 - var excludeTagNameForTabKey = { - ol: 1, - ul: 1, - table: 1 - }; - //处理组件里的tab按下事件 - if (me.fireEvent("tabkeydown", evt)) { - domUtils.preventDefault(evt); - return; - } - var range = me.selection.getRange(); - me.fireEvent("saveScene"); - for ( - var i = 0, - txt = "", - tabSize = me.options.tabSize || 4, - tabNode = me.options.tabNode || " "; - i < tabSize; - i++ - ) { - txt += tabNode; - } - var span = me.document.createElement("span"); - span.innerHTML = txt + domUtils.fillChar; - if (range.collapsed) { - range.insertNode(span.cloneNode(true).firstChild).setCursor(true); - } else { - var filterFn = function(node) { - return ( - domUtils.isBlockElm(node) && - !excludeTagNameForTabKey[node.tagName.toLowerCase()] - ); - }; - //普通的情况 - start = domUtils.findParent(range.startContainer, filterFn, true); - end = domUtils.findParent(range.endContainer, filterFn, true); - if (start && end && start === end) { - range.deleteContents(); - range.insertNode(span.cloneNode(true).firstChild).setCursor(true); - } else { - var bookmark = range.createBookmark(); - range.enlarge(true); - var bookmark2 = range.createBookmark(), - current = domUtils.getNextDomNode(bookmark2.start, false, filterFn); - while ( - current && - !( - domUtils.getPosition(current, bookmark2.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - current.insertBefore( - span.cloneNode(true).firstChild, - current.firstChild - ); - current = domUtils.getNextDomNode(current, false, filterFn); - } - range.moveToBookmark(bookmark2).moveToBookmark(bookmark).select(); - } - } - domUtils.preventDefault(evt); - } - //trace:1634 - //ff的del键在容器空的时候,也会删除 - if (browser.gecko && keyCode == 46) { - range = me.selection.getRange(); - if (range.collapsed) { - start = range.startContainer; - if (domUtils.isEmptyBlock(start)) { - var parent = start.parentNode; - while ( - domUtils.getChildCount(parent) == 1 && - !domUtils.isBody(parent) - ) { - start = parent; - parent = parent.parentNode; - } - if (start === parent.lastChild) evt.preventDefault(); - return; - } - } - } - - /* 修复在编辑区域快捷键 (Mac:meta+alt+I; Win:ctrl+shift+I) 打不开 chrome 控制台的问题 */ - browser.chrome && - me.on("keydown", function(type, e) { - var keyCode = e.keyCode || e.which; - if ( - ((e.metaKey && e.altKey) || (e.ctrlKey && e.shiftKey)) && - keyCode == 73 - ) { - return true; - } - }); - }); - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which, - rng, - me = this; - if (keyCode == keymap.Backspace) { - if (me.fireEvent("delkeyup")) { - return; - } - rng = me.selection.getRange(); - if (rng.collapsed) { - var tmpNode, - autoClearTagName = ["h1", "h2", "h3", "h4", "h5", "h6"]; - if ( - (tmpNode = domUtils.findParentByTagName( - rng.startContainer, - autoClearTagName, - true - )) - ) { - if (domUtils.isEmptyBlock(tmpNode)) { - var pre = tmpNode.previousSibling; - if (pre && pre.nodeName != "TABLE") { - domUtils.remove(tmpNode); - rng.setStartAtLast(pre).setCursor(false, true); - return; - } else { - var next = tmpNode.nextSibling; - if (next && next.nodeName != "TABLE") { - domUtils.remove(tmpNode); - rng.setStartAtFirst(next).setCursor(false, true); - return; - } - } - } - } - //处理当删除到body时,要重新给p标签展位 - if (domUtils.isBody(rng.startContainer)) { - var tmpNode = domUtils.createElement(me.document, "p", { - innerHTML: browser.ie ? domUtils.fillChar : "
    " - }); - rng.insertNode(tmpNode).setStart(tmpNode, 0).setCursor(false, true); - } - } - - //chrome下如果删除了inline标签,浏览器会有记忆,在输入文字还是会套上刚才删除的标签,所以这里再选一次就不会了 - if ( - !collapsed && - (rng.startContainer.nodeType == 3 || - (rng.startContainer.nodeType == 1 && - domUtils.isEmptyBlock(rng.startContainer))) - ) { - if (browser.ie) { - var span = rng.document.createElement("span"); - rng.insertNode(span).setStartBefore(span).collapse(true); - rng.select(); - domUtils.remove(span); - } else { - rng.select(); - } - } - } - }); -}; - - -// plugins/fiximgclick.js -///import core -///commands 修复chrome下图片不能点击的问题,出现八个角可改变大小 -///commandsName FixImgClick -///commandsTitle 修复chrome下图片不能点击的问题,出现八个角可改变大小 -//修复chrome下图片不能点击的问题,出现八个角可改变大小 - -UE.plugins["fiximgclick"] = (function() { - var elementUpdated = false; - function Scale() { - this.editor = null; - this.resizer = null; - this.cover = null; - this.doc = document; - this.prePos = { x: 0, y: 0 }; - this.startPos = { x: 0, y: 0 }; - } - - (function() { - var rect = [ - //[left, top, width, height] - [0, 0, -1, -1], - [0, 0, 0, -1], - [0, 0, 1, -1], - [0, 0, -1, 0], - [0, 0, 1, 0], - [0, 0, -1, 1], - [0, 0, 0, 1], - [0, 0, 1, 1] - ]; - - Scale.prototype = { - init: function(editor) { - var me = this; - me.editor = editor; - me.startPos = this.prePos = { x: 0, y: 0 }; - me.dragId = -1; - - var hands = [], - cover = (me.cover = document.createElement("div")), - resizer = (me.resizer = document.createElement("div")); - - cover.id = me.editor.ui.id + "_imagescale_cover"; - cover.style.cssText = - "position:absolute;display:none;z-index:" + - me.editor.options.zIndex + - ";filter:alpha(opacity=0); opacity:0;background:#CCC;"; - domUtils.on(cover, "mousedown click", function() { - me.hide(); - }); - - for (i = 0; i < 8; i++) { - hands.push( - '' - ); - } - resizer.id = me.editor.ui.id + "_imagescale"; - resizer.className = "edui-editor-imagescale"; - resizer.innerHTML = hands.join(""); - resizer.style.cssText += - ";display:none;border:1px solid #3b77ff;z-index:" + - me.editor.options.zIndex + - ";"; - - me.editor.ui.getDom().appendChild(cover); - me.editor.ui.getDom().appendChild(resizer); - - me.initStyle(); - me.initEvents(); - }, - initStyle: function() { - utils.cssRule( - "imagescale", - ".edui-editor-imagescale{display:none;position:absolute;border:1px solid #38B2CE;cursor:hand;-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}" + - ".edui-editor-imagescale span{position:absolute;width:6px;height:6px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}" - ); - }, - initEvents: function() { - var me = this; - - me.startPos.x = me.startPos.y = 0; - me.isDraging = false; - }, - _eventHandler: function(e) { - var me = this; - switch (e.type) { - case "mousedown": - var hand = e.target || e.srcElement, - hand; - if ( - hand.className.indexOf("edui-editor-imagescale-hand") != -1 && - me.dragId == -1 - ) { - me.dragId = hand.className.slice(-1); - me.startPos.x = me.prePos.x = e.clientX; - me.startPos.y = me.prePos.y = e.clientY; - domUtils.on(me.doc, "mousemove", me.proxy(me._eventHandler, me)); - } - break; - case "mousemove": - if (me.dragId != -1) { - me.updateContainerStyle(me.dragId, { - x: e.clientX - me.prePos.x, - y: e.clientY - me.prePos.y - }); - me.prePos.x = e.clientX; - me.prePos.y = e.clientY; - elementUpdated = true; - me.updateTargetElement(); - } - break; - case "mouseup": - if (me.dragId != -1) { - me.updateContainerStyle(me.dragId, { - x: e.clientX - me.prePos.x, - y: e.clientY - me.prePos.y - }); - me.updateTargetElement(); - if (me.target.parentNode) me.attachTo(me.target); - me.dragId = -1; - } - domUtils.un(me.doc, "mousemove", me.proxy(me._eventHandler, me)); - //修复只是点击挪动点,但没有改变大小,不应该触发contentchange - if (elementUpdated) { - elementUpdated = false; - me.editor.fireEvent("contentchange"); - } - - break; - default: - break; - } - }, - updateTargetElement: function() { - var me = this; - domUtils.setStyles(me.target, { - width: me.resizer.style.width, - height: me.resizer.style.height - }); - me.target.width = parseInt(me.resizer.style.width); - me.target.height = parseInt(me.resizer.style.height); - me.attachTo(me.target); - }, - updateContainerStyle: function(dir, offset) { - var me = this, - dom = me.resizer, - tmp; - - if (rect[dir][0] != 0) { - tmp = parseInt(dom.style.left) + offset.x; - dom.style.left = me._validScaledProp("left", tmp) + "px"; - } - if (rect[dir][1] != 0) { - tmp = parseInt(dom.style.top) + offset.y; - dom.style.top = me._validScaledProp("top", tmp) + "px"; - } - if (rect[dir][2] != 0) { - tmp = dom.clientWidth + rect[dir][2] * offset.x; - dom.style.width = me._validScaledProp("width", tmp) + "px"; - } - if (rect[dir][3] != 0) { - tmp = dom.clientHeight + rect[dir][3] * offset.y; - dom.style.height = me._validScaledProp("height", tmp) + "px"; - } - }, - _validScaledProp: function(prop, value) { - var ele = this.resizer, - wrap = document; - - value = isNaN(value) ? 0 : value; - switch (prop) { - case "left": - return value < 0 - ? 0 - : value + ele.clientWidth > wrap.clientWidth - ? wrap.clientWidth - ele.clientWidth - : value; - case "top": - return value < 0 - ? 0 - : value + ele.clientHeight > wrap.clientHeight - ? wrap.clientHeight - ele.clientHeight - : value; - case "width": - return value <= 0 - ? 1 - : value + ele.offsetLeft > wrap.clientWidth - ? wrap.clientWidth - ele.offsetLeft - : value; - case "height": - return value <= 0 - ? 1 - : value + ele.offsetTop > wrap.clientHeight - ? wrap.clientHeight - ele.offsetTop - : value; - } - }, - hideCover: function() { - this.cover.style.display = "none"; - }, - showCover: function() { - var me = this, - editorPos = domUtils.getXY(me.editor.ui.getDom()), - iframePos = domUtils.getXY(me.editor.iframe); - - domUtils.setStyles(me.cover, { - width: me.editor.iframe.offsetWidth + "px", - height: me.editor.iframe.offsetHeight + "px", - top: iframePos.y - editorPos.y + "px", - left: iframePos.x - editorPos.x + "px", - position: "absolute", - display: "" - }); - }, - show: function(targetObj) { - var me = this; - me.resizer.style.display = "block"; - if (targetObj) me.attachTo(targetObj); - - domUtils.on(this.resizer, "mousedown", me.proxy(me._eventHandler, me)); - domUtils.on(me.doc, "mouseup", me.proxy(me._eventHandler, me)); - - me.showCover(); - me.editor.fireEvent("afterscaleshow", me); - me.editor.fireEvent("saveScene"); - }, - hide: function() { - var me = this; - me.hideCover(); - me.resizer.style.display = "none"; - - domUtils.un(me.resizer, "mousedown", me.proxy(me._eventHandler, me)); - domUtils.un(me.doc, "mouseup", me.proxy(me._eventHandler, me)); - me.editor.fireEvent("afterscalehide", me); - }, - proxy: function(fn, context) { - return function(e) { - return fn.apply(context || this, arguments); - }; - }, - attachTo: function(targetObj) { - var me = this, - target = (me.target = targetObj), - resizer = this.resizer, - imgPos = domUtils.getXY(target), - iframePos = domUtils.getXY(me.editor.iframe), - editorPos = domUtils.getXY(resizer.parentNode); - - domUtils.setStyles(resizer, { - width: target.width + "px", - height: target.height + "px", - left: - iframePos.x + - imgPos.x - - me.editor.document.body.scrollLeft - - editorPos.x - - parseInt(resizer.style.borderLeftWidth) + - "px", - top: - iframePos.y + - imgPos.y - - me.editor.document.body.scrollTop - - editorPos.y - - parseInt(resizer.style.borderTopWidth) + - "px" - }); - } - }; - })(); - - return function() { - var me = this, - imageScale; - - me.setOpt("imageScaleEnabled", true); - - if (!browser.ie && me.options.imageScaleEnabled) { - me.addListener("click", function(type, e) { - var range = me.selection.getRange(), - img = range.getClosedNode(); - - if (img && img.tagName == "IMG" && me.body.contentEditable != "false") { - if ( - img.className.indexOf("edui-faked-music") != -1 || - img.getAttribute("anchorname") || - domUtils.hasClass(img, "loadingclass") || - domUtils.hasClass(img, "loaderrorclass") - ) { - return; - } - - if (!imageScale) { - imageScale = new Scale(); - imageScale.init(me); - me.ui.getDom().appendChild(imageScale.resizer); - - var _keyDownHandler = function(e) { - imageScale.hide(); - if (imageScale.target) - me.selection.getRange().selectNode(imageScale.target).select(); - }, - _mouseDownHandler = function(e) { - var ele = e.target || e.srcElement; - if ( - ele && - (ele.className === undefined || - ele.className.indexOf("edui-editor-imagescale") == -1) - ) { - _keyDownHandler(e); - } - }, - timer; - - me.addListener("afterscaleshow", function(e) { - me.addListener("beforekeydown", _keyDownHandler); - me.addListener("beforemousedown", _mouseDownHandler); - domUtils.on(document, "keydown", _keyDownHandler); - domUtils.on(document, "mousedown", _mouseDownHandler); - me.selection.getNative().removeAllRanges(); - }); - me.addListener("afterscalehide", function(e) { - me.removeListener("beforekeydown", _keyDownHandler); - me.removeListener("beforemousedown", _mouseDownHandler); - domUtils.un(document, "keydown", _keyDownHandler); - domUtils.un(document, "mousedown", _mouseDownHandler); - var target = imageScale.target; - if (target.parentNode) { - me.selection.getRange().selectNode(target).select(); - } - }); - //TODO 有iframe的情况,mousedown不能往下传。。 - domUtils.on(imageScale.resizer, "mousedown", function(e) { - me.selection.getNative().removeAllRanges(); - var ele = e.target || e.srcElement; - if ( - ele && - ele.className.indexOf("edui-editor-imagescale-hand") == -1 - ) { - timer = setTimeout(function() { - imageScale.hide(); - if (imageScale.target) - me.selection.getRange().selectNode(ele).select(); - }, 200); - } - }); - domUtils.on(imageScale.resizer, "mouseup", function(e) { - var ele = e.target || e.srcElement; - if ( - ele && - ele.className.indexOf("edui-editor-imagescale-hand") == -1 - ) { - clearTimeout(timer); - } - }); - } - imageScale.show(img); - } else { - if (imageScale && imageScale.resizer.style.display != "none") - imageScale.hide(); - } - }); - } - - if (browser.webkit) { - me.addListener("click", function(type, e) { - if (e.target.tagName == "IMG" && me.body.contentEditable != "false") { - var range = new dom.Range(me.document); - range.selectNode(e.target).select(); - } - }); - } - }; -})(); - - -// plugins/autolink.js -///import core -///commands 为非ie浏览器自动添加a标签 -///commandsName AutoLink -///commandsTitle 自动增加链接 -/** - * @description 为非ie浏览器自动添加a标签 - * @author zhanyi - */ - -UE.plugin.register( - "autolink", - function() { - var cont = 0; - - return !browser.ie - ? { - bindEvents: { - reset: function() { - cont = 0; - }, - keydown: function(type, evt) { - var me = this; - var keyCode = evt.keyCode || evt.which; - - if (keyCode == 32 || keyCode == 13) { - var sel = me.selection.getNative(), - range = sel.getRangeAt(0).cloneRange(), - offset, - charCode; - - var start = range.startContainer; - while (start.nodeType == 1 && range.startOffset > 0) { - start = - range.startContainer.childNodes[range.startOffset - 1]; - if (!start) { - break; - } - range.setStart( - start, - start.nodeType == 1 - ? start.childNodes.length - : start.nodeValue.length - ); - range.collapse(true); - start = range.startContainer; - } - - do { - if (range.startOffset == 0) { - start = range.startContainer.previousSibling; - - while (start && start.nodeType == 1) { - start = start.lastChild; - } - if (!start || domUtils.isFillChar(start)) { - break; - } - offset = start.nodeValue.length; - } else { - start = range.startContainer; - offset = range.startOffset; - } - range.setStart(start, offset - 1); - charCode = range.toString().charCodeAt(0); - } while (charCode != 160 && charCode != 32); - - if ( - range - .toString() - .replace(new RegExp(domUtils.fillChar, "g"), "") - .match(/(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i) - ) { - while (range.toString().length) { - if ( - /^(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i.test( - range.toString() - ) - ) { - break; - } - try { - range.setStart( - range.startContainer, - range.startOffset + 1 - ); - } catch (e) { - //trace:2121 - var start = range.startContainer; - while (!(next = start.nextSibling)) { - if (domUtils.isBody(start)) { - return; - } - start = start.parentNode; - } - range.setStart(next, 0); - } - } - //range的开始边界已经在a标签里的不再处理 - if ( - domUtils.findParentByTagName( - range.startContainer, - "a", - true - ) - ) { - return; - } - var a = me.document.createElement("a"), - text = me.document.createTextNode(" "), - href; - - me.undoManger && me.undoManger.save(); - a.appendChild(range.extractContents()); - a.href = a.innerHTML = a.innerHTML.replace(/<[^>]+>/g, ""); - href = a - .getAttribute("href") - .replace(new RegExp(domUtils.fillChar, "g"), ""); - href = /^(?:https?:\/\/)/gi.test(href) - ? href - : "http://" + href; - a.setAttribute("_src", utils.html(href)); - a.href = utils.html(href); - - range.insertNode(a); - a.parentNode.insertBefore(text, a.nextSibling); - range.setStart(text, 0); - range.collapse(true); - sel.removeAllRanges(); - sel.addRange(range); - me.undoManger && me.undoManger.save(); - } - } - } - } - } - : {}; - }, - function() { - var keyCodes = { - 37: 1, - 38: 1, - 39: 1, - 40: 1, - 13: 1, - 32: 1 - }; - function checkIsCludeLink(node) { - if (node.nodeType == 3) { - return null; - } - if (node.nodeName == "A") { - return node; - } - var lastChild = node.lastChild; - - while (lastChild) { - if (lastChild.nodeName == "A") { - return lastChild; - } - if (lastChild.nodeType == 3) { - if (domUtils.isWhitespace(lastChild)) { - lastChild = lastChild.previousSibling; - continue; - } - return null; - } - lastChild = lastChild.lastChild; - } - } - browser.ie && - this.addListener("keyup", function(cmd, evt) { - var me = this, - keyCode = evt.keyCode; - if (keyCodes[keyCode]) { - var rng = me.selection.getRange(); - var start = rng.startContainer; - - if (keyCode == 13) { - while ( - start && - !domUtils.isBody(start) && - !domUtils.isBlockElm(start) - ) { - start = start.parentNode; - } - if (start && !domUtils.isBody(start) && start.nodeName == "P") { - var pre = start.previousSibling; - if (pre && pre.nodeType == 1) { - var pre = checkIsCludeLink(pre); - if (pre && !pre.getAttribute("_href")) { - domUtils.remove(pre, true); - } - } - } - } else if (keyCode == 32) { - if (start.nodeType == 3 && /^\s$/.test(start.nodeValue)) { - start = start.previousSibling; - if ( - start && - start.nodeName == "A" && - !start.getAttribute("_href") - ) { - domUtils.remove(start, true); - } - } - } else { - start = domUtils.findParentByTagName(start, "a", true); - if (start && !start.getAttribute("_href")) { - var bk = rng.createBookmark(); - - domUtils.remove(start, true); - rng.moveToBookmark(bk).select(true); - } - } - } - }); - } -); - - -// plugins/autoheight.js -///import core -///commands 当输入内容超过编辑器高度时,编辑器自动增高 -///commandsName AutoHeight,autoHeightEnabled -///commandsTitle 自动增高 -/** - * @description 自动伸展 - * @author zhanyi - */ -UE.plugins["autoheight"] = function() { - var me = this; - //提供开关,就算加载也可以关闭 - me.autoHeightEnabled = me.options.autoHeightEnabled !== false; - if (!me.autoHeightEnabled) { - return; - } - - var bakOverflow, - lastHeight = 0, - options = me.options, - currentHeight, - timer; - - function adjustHeight() { - var me = this; - clearTimeout(timer); - if (isFullscreen) return; - if ( - !me.queryCommandState || - (me.queryCommandState && me.queryCommandState("source") != 1) - ) { - timer = setTimeout(function() { - var node = me.body.lastChild; - while (node && node.nodeType != 1) { - node = node.previousSibling; - } - if (node && node.nodeType == 1) { - node.style.clear = "both"; - currentHeight = Math.max( - domUtils.getXY(node).y + node.offsetHeight + 25, - Math.max(options.minFrameHeight, options.initialFrameHeight) - ); - if (currentHeight != lastHeight) { - if (currentHeight !== parseInt(me.iframe.parentNode.style.height)) { - me.iframe.parentNode.style.height = currentHeight + "px"; - } - me.body.style.height = currentHeight + "px"; - lastHeight = currentHeight; - } - domUtils.removeStyle(node, "clear"); - } - }, 50); - } - } - var isFullscreen; - me.addListener("fullscreenchanged", function(cmd, f) { - isFullscreen = f; - }); - me.addListener("destroy", function() { - domUtils.un(me.window, "scroll", fixedScrollTop); - me.removeListener( - "contentchange afterinserthtml keyup mouseup", - adjustHeight - ); - }); - me.enableAutoHeight = function() { - var me = this; - if (!me.autoHeightEnabled) { - return; - } - var doc = me.document; - me.autoHeightEnabled = true; - bakOverflow = doc.body.style.overflowY; - doc.body.style.overflowY = "hidden"; - me.addListener("contentchange afterinserthtml keyup mouseup", adjustHeight); - //ff不给事件算得不对 - - setTimeout(function() { - adjustHeight.call(me); - }, browser.gecko ? 100 : 0); - me.fireEvent("autoheightchanged", me.autoHeightEnabled); - }; - me.disableAutoHeight = function() { - me.body.style.overflowY = bakOverflow || ""; - - me.removeListener("contentchange", adjustHeight); - me.removeListener("keyup", adjustHeight); - me.removeListener("mouseup", adjustHeight); - me.autoHeightEnabled = false; - me.fireEvent("autoheightchanged", me.autoHeightEnabled); - }; - - me.on("setHeight", function() { - me.disableAutoHeight(); - }); - me.addListener("ready", function() { - me.enableAutoHeight(); - //trace:1764 - var timer; - domUtils.on( - browser.ie ? me.body : me.document, - browser.webkit ? "dragover" : "drop", - function() { - clearTimeout(timer); - timer = setTimeout(function() { - //trace:3681 - adjustHeight.call(me); - }, 100); - } - ); - //修复内容过多时,回到顶部,顶部内容被工具栏遮挡问题 - domUtils.on(me.window, "scroll", fixedScrollTop); - }); - - var lastScrollY; - - function fixedScrollTop() { - if (!me.window) return; - if (lastScrollY === null) { - lastScrollY = me.window.scrollY; - } else if (me.window.scrollY == 0 && lastScrollY != 0) { - me.window.scrollTo(0, 0); - lastScrollY = null; - } - } -}; - - -// plugins/autofloat.js -///import core -///commands 悬浮工具栏 -///commandsName AutoFloat,autoFloatEnabled -///commandsTitle 悬浮工具栏 -/** - * modified by chengchao01 - * 注意: 引入此功能后,在IE6下会将body的背景图片覆盖掉! - */ -UE.plugins["autofloat"] = function() { - var me = this, - lang = me.getLang(); - me.setOpt({ - topOffset: 0 - }); - var optsAutoFloatEnabled = me.options.autoFloatEnabled !== false, - topOffset = me.options.topOffset; - - //如果不固定toolbar的位置,则直接退出 - if (!optsAutoFloatEnabled) { - return; - } - var uiUtils = UE.ui.uiUtils, - LteIE6 = browser.ie && browser.version <= 6, - quirks = browser.quirks; - - function checkHasUI() { - if (!UE.ui) { - alert(lang.autofloatMsg); - return 0; - } - return 1; - } - function fixIE6FixedPos() { - var docStyle = document.body.style; - docStyle.backgroundImage = 'url("about:blank")'; - docStyle.backgroundAttachment = "fixed"; - } - var bakCssText, - placeHolder = document.createElement("div"), - toolbarBox, - orgTop, - getPosition, - flag = true; //ie7模式下需要偏移 - function setFloating() { - var toobarBoxPos = domUtils.getXY(toolbarBox), - origalFloat = domUtils.getComputedStyle(toolbarBox, "position"), - origalLeft = domUtils.getComputedStyle(toolbarBox, "left"); - toolbarBox.style.width = toolbarBox.offsetWidth + "px"; - toolbarBox.style.zIndex = me.options.zIndex * 1 + 1; - toolbarBox.parentNode.insertBefore(placeHolder, toolbarBox); - if (LteIE6 || (quirks && browser.ie)) { - if (toolbarBox.style.position != "absolute") { - toolbarBox.style.position = "absolute"; - } - toolbarBox.style.top = - (document.body.scrollTop || document.documentElement.scrollTop) - - orgTop + - topOffset + - "px"; - } else { - if (browser.ie7Compat && flag) { - flag = false; - toolbarBox.style.left = - domUtils.getXY(toolbarBox).x - - document.documentElement.getBoundingClientRect().left + - 2 + - "px"; - } - if (toolbarBox.style.position != "fixed") { - toolbarBox.style.position = "fixed"; - toolbarBox.style.top = topOffset + "px"; - (origalFloat == "absolute" || origalFloat == "relative") && - parseFloat(origalLeft) && - (toolbarBox.style.left = toobarBoxPos.x + "px"); - } - } - } - function unsetFloating() { - flag = true; - if (placeHolder.parentNode) { - placeHolder.parentNode.removeChild(placeHolder); - } - - toolbarBox.style.cssText = bakCssText; - } - - function updateFloating() { - var rect3 = getPosition(me.container); - var offset = me.options.toolbarTopOffset || 0; - if (rect3.top < 0 && rect3.bottom - toolbarBox.offsetHeight > offset) { - setFloating(); - } else { - unsetFloating(); - } - } - var defer_updateFloating = utils.defer( - function() { - updateFloating(); - }, - browser.ie ? 200 : 100, - true - ); - - me.addListener("destroy", function() { - domUtils.un(window, ["scroll", "resize"], updateFloating); - me.removeListener("keydown", defer_updateFloating); - }); - - me.addListener("ready", function() { - if (checkHasUI(me)) { - //加载了ui组件,但在new时,没有加载ui,导致编辑器实例上没有ui类,所以这里做判断 - if (!me.ui) { - return; - } - getPosition = uiUtils.getClientRect; - toolbarBox = me.ui.getDom("toolbarbox"); - orgTop = getPosition(toolbarBox).top; - bakCssText = toolbarBox.style.cssText; - placeHolder.style.height = toolbarBox.offsetHeight + "px"; - if (LteIE6) { - fixIE6FixedPos(); - } - domUtils.on(window, ["scroll", "resize"], updateFloating); - me.addListener("keydown", defer_updateFloating); - - me.addListener("beforefullscreenchange", function(t, enabled) { - if (enabled) { - unsetFloating(); - } - }); - me.addListener("fullscreenchanged", function(t, enabled) { - if (!enabled) { - updateFloating(); - } - }); - me.addListener("sourcemodechanged", function(t, enabled) { - setTimeout(function() { - updateFloating(); - }, 0); - }); - me.addListener("clearDoc", function() { - setTimeout(function() { - updateFloating(); - }, 0); - }); - } - }); -}; - - -// plugins/video.js -/** - * video插件, 为UEditor提供视频插入支持 - * @file - * @since 1.2.6.1 - */ - -UE.plugins["video"] = function() { - var me = this; - - /** - * 创建插入视频字符窜 - * @param url 视频地址 - * @param width 视频宽度 - * @param height 视频高度 - * @param align 视频对齐 - * @param toEmbed 是否以flash代替显示 - * @param addParagraph 是否需要添加P 标签 - */ - function creatInsertStr(url, width, height, id, align, classname, type) { - var str; - switch (type) { - case "image": - str = - "'; - break; - case "embed": - str = - ''; - break; - case "video": - var ext = url.substr(url.lastIndexOf(".") + 1); - if (ext == "ogv") ext = "ogg"; - str = - "' + - ''; - break; - } - return str; - } - - function switchImgAndVideo(root, img2video) { - utils.each( - root.getNodesByTagName(img2video ? "img" : "embed video"), - function(node) { - var className = node.getAttr("class"); - if (className && className.indexOf("edui-faked-video") != -1) { - var html = creatInsertStr( - img2video ? node.getAttr("_url") : node.getAttr("src"), - node.getAttr("width"), - node.getAttr("height"), - null, - node.getStyle("float") || "", - className, - img2video ? "embed" : "image" - ); - node.parentNode.replaceChild(UE.uNode.createElement(html), node); - } - if (className && className.indexOf("edui-upload-video") != -1) { - var html = creatInsertStr( - img2video ? node.getAttr("_url") : node.getAttr("src"), - node.getAttr("width"), - node.getAttr("height"), - null, - node.getStyle("float") || "", - className, - img2video ? "video" : "image" - ); - node.parentNode.replaceChild(UE.uNode.createElement(html), node); - } - } - ); - } - - me.addOutputRule(function(root) { - switchImgAndVideo(root, true); - }); - me.addInputRule(function(root) { - switchImgAndVideo(root); - }); - - /** - * 插入视频 - * @command insertvideo - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Object } videoAttr 键值对对象, 描述一个视频的所有属性 - * @example - * ```javascript - * - * var videoAttr = { - * //视频地址 - * url: 'http://www.youku.com/xxx', - * //视频宽高值, 单位px - * width: 200, - * height: 100 - * }; - * - * //editor 是编辑器实例 - * //向编辑器插入单个视频 - * editor.execCommand( 'insertvideo', videoAttr ); - * ``` - */ - - /** - * 插入视频 - * @command insertvideo - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Array } videoArr 需要插入的视频的数组, 其中的每一个元素都是一个键值对对象, 描述了一个视频的所有属性 - * @example - * ```javascript - * - * var videoAttr1 = { - * //视频地址 - * url: 'http://www.youku.com/xxx', - * //视频宽高值, 单位px - * width: 200, - * height: 100 - * }, - * videoAttr2 = { - * //视频地址 - * url: 'http://www.youku.com/xxx', - * //视频宽高值, 单位px - * width: 200, - * height: 100 - * } - * - * //editor 是编辑器实例 - * //该方法将会向编辑器内插入两个视频 - * editor.execCommand( 'insertvideo', [ videoAttr1, videoAttr2 ] ); - * ``` - */ - - /** - * 查询当前光标所在处是否是一个视频 - * @command insertvideo - * @method queryCommandState - * @param { String } cmd 需要查询的命令字符串 - * @return { int } 如果当前光标所在处的元素是一个视频对象, 则返回1,否则返回0 - * @example - * ```javascript - * - * //editor 是编辑器实例 - * editor.queryCommandState( 'insertvideo' ); - * ``` - */ - me.commands["insertvideo"] = { - execCommand: function(cmd, videoObjs, type) { - videoObjs = utils.isArray(videoObjs) ? videoObjs : [videoObjs]; - - if (me.fireEvent("beforeinsertvideo", videoObjs) === true) { - return; - } - - var html = [], - id = "tmpVedio", - cl; - for (var i = 0, vi, len = videoObjs.length; i < len; i++) { - vi = videoObjs[i]; - cl = type == "upload" - ? "edui-upload-video video-js vjs-default-skin" - : "edui-faked-video"; - html.push( - creatInsertStr( - vi.url, - vi.width || 420, - vi.height || 280, - id + i, - null, - cl, - "image" - ) - ); - } - me.execCommand("inserthtml", html.join(""), true); - var rng = this.selection.getRange(); - for (var i = 0, len = videoObjs.length; i < len; i++) { - var img = this.document.getElementById("tmpVedio" + i); - domUtils.removeAttributes(img, "id"); - rng.selectNode(img).select(); - me.execCommand("imagefloat", videoObjs[i].align); - } - - me.fireEvent("afterinsertvideo", videoObjs); - }, - queryCommandState: function() { - var img = me.selection.getRange().getClosedNode(), - flag = - img && - (img.className == "edui-faked-video" || - img.className.indexOf("edui-upload-video") != -1); - return flag ? 1 : 0; - } - }; -}; - - -// plugins/table.core.js -/** - * Created with JetBrains WebStorm. - * User: taoqili - * Date: 13-1-18 - * Time: 上午11:09 - * To change this template use File | Settings | File Templates. - */ -/** - * UE表格操作类 - * @param table - * @constructor - */ -(function() { - var UETable = (UE.UETable = function(table) { - this.table = table; - this.indexTable = []; - this.selectedTds = []; - this.cellsRange = {}; - this.update(table); - }); - - //===以下为静态工具方法=== - UETable.removeSelectedClass = function(cells) { - utils.each(cells, function(cell) { - domUtils.removeClasses(cell, "selectTdClass"); - }); - }; - UETable.addSelectedClass = function(cells) { - utils.each(cells, function(cell) { - domUtils.addClass(cell, "selectTdClass"); - }); - }; - UETable.isEmptyBlock = function(node) { - var reg = new RegExp(domUtils.fillChar, "g"); - if ( - node[browser.ie ? "innerText" : "textContent"] - .replace(/^\s*$/, "") - .replace(reg, "").length > 0 - ) { - return 0; - } - for (var i in dtd.$isNotEmpty) - if (dtd.$isNotEmpty.hasOwnProperty(i)) { - if (node.getElementsByTagName(i).length) { - return 0; - } - } - return 1; - }; - UETable.getWidth = function(cell) { - if (!cell) return 0; - return parseInt(domUtils.getComputedStyle(cell, "width"), 10); - }; - - /** - * 获取单元格或者单元格组的“对齐”状态。 如果当前的检测对象是一个单元格组, 只有在满足所有单元格的 水平和竖直 对齐属性都相同的 - * 条件时才会返回其状态值,否则将返回null; 如果当前只检测了一个单元格, 则直接返回当前单元格的对齐状态; - * @param table cell or table cells , 支持单个单元格dom对象 或者 单元格dom对象数组 - * @return { align: 'left' || 'right' || 'center', valign: 'top' || 'middle' || 'bottom' } 或者 null - */ - UETable.getTableCellAlignState = function(cells) { - !utils.isArray(cells) && (cells = [cells]); - - var result = {}, - status = ["align", "valign"], - tempStatus = null, - isSame = true; //状态是否相同 - - utils.each(cells, function(cellNode) { - utils.each(status, function(currentState) { - tempStatus = cellNode.getAttribute(currentState); - - if (!result[currentState] && tempStatus) { - result[currentState] = tempStatus; - } else if ( - !result[currentState] || - tempStatus !== result[currentState] - ) { - isSame = false; - return false; - } - }); - - return isSame; - }); - - return isSame ? result : null; - }; - - /** - * 根据当前选区获取相关的table信息 - * @return {Object} - */ - UETable.getTableItemsByRange = function(editor) { - var start = editor.selection.getStart(); - - //ff下会选中bookmark - if ( - start && - start.id && - start.id.indexOf("_baidu_bookmark_start_") === 0 && - start.nextSibling - ) { - start = start.nextSibling; - } - - //在table或者td边缘有可能存在选中tr的情况 - var cell = start && domUtils.findParentByTagName(start, ["td", "th"], true), - tr = cell && cell.parentNode, - table = tr && domUtils.findParentByTagName(tr, ["table"]), - caption = table && table.getElementsByTagName("caption")[0]; - - return { - cell: cell, - tr: tr, - table: table, - caption: caption - }; - }; - UETable.getUETableBySelected = function(editor) { - var table = UETable.getTableItemsByRange(editor).table; - if (table && table.ueTable && table.ueTable.selectedTds.length) { - return table.ueTable; - } - return null; - }; - - UETable.getDefaultValue = function(editor, table) { - var borderMap = { - thin: "0px", - medium: "1px", - thick: "2px" - }, - tableBorder, - tdPadding, - tdBorder, - tmpValue; - if (!table) { - table = editor.document.createElement("table"); - table.insertRow(0).insertCell(0).innerHTML = "xxx"; - editor.body.appendChild(table); - var td = table.getElementsByTagName("td")[0]; - tmpValue = domUtils.getComputedStyle(table, "border-left-width"); - tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); - tmpValue = domUtils.getComputedStyle(td, "padding-left"); - tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10); - tmpValue = domUtils.getComputedStyle(td, "border-left-width"); - tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); - domUtils.remove(table); - return { - tableBorder: tableBorder, - tdPadding: tdPadding, - tdBorder: tdBorder - }; - } else { - td = table.getElementsByTagName("td")[0]; - tmpValue = domUtils.getComputedStyle(table, "border-left-width"); - tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); - tmpValue = domUtils.getComputedStyle(td, "padding-left"); - tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10); - tmpValue = domUtils.getComputedStyle(td, "border-left-width"); - tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); - return { - tableBorder: tableBorder, - tdPadding: tdPadding, - tdBorder: tdBorder - }; - } - }; - /** - * 根据当前点击的td或者table获取索引对象 - * @param tdOrTable - */ - UETable.getUETable = function(tdOrTable) { - var tag = tdOrTable.tagName.toLowerCase(); - tdOrTable = tag == "td" || tag == "th" || tag == "caption" - ? domUtils.findParentByTagName(tdOrTable, "table", true) - : tdOrTable; - if (!tdOrTable.ueTable) { - tdOrTable.ueTable = new UETable(tdOrTable); - } - return tdOrTable.ueTable; - }; - - UETable.cloneCell = function(cell, ignoreMerge, keepPro) { - if (!cell || utils.isString(cell)) { - return this.table.ownerDocument.createElement(cell || "td"); - } - var flag = domUtils.hasClass(cell, "selectTdClass"); - flag && domUtils.removeClasses(cell, "selectTdClass"); - var tmpCell = cell.cloneNode(true); - if (ignoreMerge) { - tmpCell.rowSpan = tmpCell.colSpan = 1; - } - //去掉宽高 - !keepPro && domUtils.removeAttributes(tmpCell, "width height"); - !keepPro && domUtils.removeAttributes(tmpCell, "style"); - - tmpCell.style.borderLeftStyle = ""; - tmpCell.style.borderTopStyle = ""; - tmpCell.style.borderLeftColor = cell.style.borderRightColor; - tmpCell.style.borderLeftWidth = cell.style.borderRightWidth; - tmpCell.style.borderTopColor = cell.style.borderBottomColor; - tmpCell.style.borderTopWidth = cell.style.borderBottomWidth; - flag && domUtils.addClass(cell, "selectTdClass"); - return tmpCell; - }; - - UETable.prototype = { - getMaxRows: function() { - var rows = this.table.rows, - maxLen = 1; - for (var i = 0, row; (row = rows[i]); i++) { - var currentMax = 1; - for (var j = 0, cj; (cj = row.cells[j++]); ) { - currentMax = Math.max(cj.rowSpan || 1, currentMax); - } - maxLen = Math.max(currentMax + i, maxLen); - } - return maxLen; - }, - /** - * 获取当前表格的最大列数 - */ - getMaxCols: function() { - var rows = this.table.rows, - maxLen = 0, - cellRows = {}; - for (var i = 0, row; (row = rows[i]); i++) { - var cellsNum = 0; - for (var j = 0, cj; (cj = row.cells[j++]); ) { - cellsNum += cj.colSpan || 1; - if (cj.rowSpan && cj.rowSpan > 1) { - for (var k = 1; k < cj.rowSpan; k++) { - if (!cellRows["row_" + (i + k)]) { - cellRows["row_" + (i + k)] = cj.colSpan || 1; - } else { - cellRows["row_" + (i + k)]++; - } - } - } - } - cellsNum += cellRows["row_" + i] || 0; - maxLen = Math.max(cellsNum, maxLen); - } - return maxLen; - }, - getCellColIndex: function(cell) {}, - /** - * 获取当前cell旁边的单元格, - * @param cell - * @param right - */ - getHSideCell: function(cell, right) { - try { - var cellInfo = this.getCellInfo(cell), - previewRowIndex, - previewColIndex; - var len = this.selectedTds.length, - range = this.cellsRange; - //首行或者首列没有前置单元格 - if ( - (!right && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || - (right && - (!len - ? cellInfo.colIndex == this.colsNum - 1 - : range.endColIndex == this.colsNum - 1)) - ) - return null; - - previewRowIndex = !len ? cellInfo.rowIndex : range.beginRowIndex; - previewColIndex = !right - ? !len - ? cellInfo.colIndex < 1 ? 0 : cellInfo.colIndex - 1 - : range.beginColIndex - 1 - : !len ? cellInfo.colIndex + 1 : range.endColIndex + 1; - return this.getCell( - this.indexTable[previewRowIndex][previewColIndex].rowIndex, - this.indexTable[previewRowIndex][previewColIndex].cellIndex - ); - } catch (e) { - showError(e); - } - }, - getTabNextCell: function(cell, preRowIndex) { - var cellInfo = this.getCellInfo(cell), - rowIndex = preRowIndex || cellInfo.rowIndex, - colIndex = cellInfo.colIndex + 1 + (cellInfo.colSpan - 1), - nextCell; - try { - nextCell = this.getCell( - this.indexTable[rowIndex][colIndex].rowIndex, - this.indexTable[rowIndex][colIndex].cellIndex - ); - } catch (e) { - try { - rowIndex = rowIndex * 1 + 1; - colIndex = 0; - nextCell = this.getCell( - this.indexTable[rowIndex][colIndex].rowIndex, - this.indexTable[rowIndex][colIndex].cellIndex - ); - } catch (e) {} - } - return nextCell; - }, - /** - * 获取视觉上的后置单元格 - * @param cell - * @param bottom - */ - getVSideCell: function(cell, bottom, ignoreRange) { - try { - var cellInfo = this.getCellInfo(cell), - nextRowIndex, - nextColIndex; - var len = this.selectedTds.length && !ignoreRange, - range = this.cellsRange; - //末行或者末列没有后置单元格 - if ( - (!bottom && cellInfo.rowIndex == 0) || - (bottom && - (!len - ? cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1 - : range.endRowIndex == this.rowsNum - 1)) - ) - return null; - - nextRowIndex = !bottom - ? !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1 - : !len ? cellInfo.rowIndex + cellInfo.rowSpan : range.endRowIndex + 1; - nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex; - return this.getCell( - this.indexTable[nextRowIndex][nextColIndex].rowIndex, - this.indexTable[nextRowIndex][nextColIndex].cellIndex - ); - } catch (e) { - showError(e); - } - }, - /** - * 获取相同结束位置的单元格,xOrY指代了是获取x轴相同还是y轴相同 - */ - getSameEndPosCells: function(cell, xOrY) { - try { - var flag = xOrY.toLowerCase() === "x", - end = - domUtils.getXY(cell)[flag ? "x" : "y"] + - cell["offset" + (flag ? "Width" : "Height")], - rows = this.table.rows, - cells = null, - returns = []; - for (var i = 0; i < this.rowsNum; i++) { - cells = rows[i].cells; - for (var j = 0, tmpCell; (tmpCell = cells[j++]); ) { - var tmpEnd = - domUtils.getXY(tmpCell)[flag ? "x" : "y"] + - tmpCell["offset" + (flag ? "Width" : "Height")]; - //对应行的td已经被上面行rowSpan了 - if (tmpEnd > end && flag) break; - if (cell == tmpCell || end == tmpEnd) { - //只获取单一的单元格 - //todo 仅获取单一单元格在特定情况下会造成returns为空,从而影响后续的拖拽实现,修正这个。需考虑性能 - if (tmpCell[flag ? "colSpan" : "rowSpan"] == 1) { - returns.push(tmpCell); - } - if (flag) break; - } - } - } - return returns; - } catch (e) { - showError(e); - } - }, - setCellContent: function(cell, content) { - cell.innerHTML = content || (browser.ie ? domUtils.fillChar : "
    "); - }, - cloneCell: UETable.cloneCell, - /** - * 获取跟当前单元格的右边竖线为左边的所有未合并单元格 - */ - getSameStartPosXCells: function(cell) { - try { - var start = domUtils.getXY(cell).x + cell.offsetWidth, - rows = this.table.rows, - cells, - returns = []; - for (var i = 0; i < this.rowsNum; i++) { - cells = rows[i].cells; - for (var j = 0, tmpCell; (tmpCell = cells[j++]); ) { - var tmpStart = domUtils.getXY(tmpCell).x; - if (tmpStart > start) break; - if (tmpStart == start && tmpCell.colSpan == 1) { - returns.push(tmpCell); - break; - } - } - } - return returns; - } catch (e) { - showError(e); - } - }, - /** - * 更新table对应的索引表 - */ - update: function(table) { - this.table = table || this.table; - this.selectedTds = []; - this.cellsRange = {}; - this.indexTable = []; - var rows = this.table.rows, - rowsNum = this.getMaxRows(), - dNum = rowsNum - rows.length, - colsNum = this.getMaxCols(); - while (dNum--) { - this.table.insertRow(rows.length); - } - this.rowsNum = rowsNum; - this.colsNum = colsNum; - for (var i = 0, len = rows.length; i < len; i++) { - this.indexTable[i] = new Array(colsNum); - } - //填充索引表 - for (var rowIndex = 0, row; (row = rows[rowIndex]); rowIndex++) { - for ( - var cellIndex = 0, cell, cells = row.cells; - (cell = cells[cellIndex]); - cellIndex++ - ) { - //修正整行被rowSpan时导致的行数计算错误 - if (cell.rowSpan > rowsNum) { - cell.rowSpan = rowsNum; - } - var colIndex = cellIndex, - rowSpan = cell.rowSpan || 1, - colSpan = cell.colSpan || 1; - //当已经被上一行rowSpan或者被前一列colSpan了,则跳到下一个单元格进行 - while (this.indexTable[rowIndex][colIndex]) colIndex++; - for (var j = 0; j < rowSpan; j++) { - for (var k = 0; k < colSpan; k++) { - this.indexTable[rowIndex + j][colIndex + k] = { - rowIndex: rowIndex, - cellIndex: cellIndex, - colIndex: colIndex, - rowSpan: rowSpan, - colSpan: colSpan - }; - } - } - } - } - //修复残缺td - for (j = 0; j < rowsNum; j++) { - for (k = 0; k < colsNum; k++) { - if (this.indexTable[j][k] === undefined) { - row = rows[j]; - cell = row.cells[row.cells.length - 1]; - cell = cell - ? cell.cloneNode(true) - : this.table.ownerDocument.createElement("td"); - this.setCellContent(cell); - if (cell.colSpan !== 1) cell.colSpan = 1; - if (cell.rowSpan !== 1) cell.rowSpan = 1; - row.appendChild(cell); - this.indexTable[j][k] = { - rowIndex: j, - cellIndex: cell.cellIndex, - colIndex: k, - rowSpan: 1, - colSpan: 1 - }; - } - } - } - //当框选后删除行或者列后撤销,需要重建选区。 - var tds = domUtils.getElementsByTagName(this.table, "td"), - selectTds = []; - utils.each(tds, function(td) { - if (domUtils.hasClass(td, "selectTdClass")) { - selectTds.push(td); - } - }); - if (selectTds.length) { - var start = selectTds[0], - end = selectTds[selectTds.length - 1], - startInfo = this.getCellInfo(start), - endInfo = this.getCellInfo(end); - this.selectedTds = selectTds; - this.cellsRange = { - beginRowIndex: startInfo.rowIndex, - beginColIndex: startInfo.colIndex, - endRowIndex: endInfo.rowIndex + endInfo.rowSpan - 1, - endColIndex: endInfo.colIndex + endInfo.colSpan - 1 - }; - } - //给第一行设置firstRow的样式名称,在排序图标的样式上使用到 - if (!domUtils.hasClass(this.table.rows[0], "firstRow")) { - domUtils.addClass(this.table.rows[0], "firstRow"); - for (var i = 1; i < this.table.rows.length; i++) { - domUtils.removeClasses(this.table.rows[i], "firstRow"); - } - } - }, - /** - * 获取单元格的索引信息 - */ - getCellInfo: function(cell) { - if (!cell) return; - var cellIndex = cell.cellIndex, - rowIndex = cell.parentNode.rowIndex, - rowInfo = this.indexTable[rowIndex], - numCols = this.colsNum; - for (var colIndex = cellIndex; colIndex < numCols; colIndex++) { - var cellInfo = rowInfo[colIndex]; - if ( - cellInfo.rowIndex === rowIndex && - cellInfo.cellIndex === cellIndex - ) { - return cellInfo; - } - } - }, - /** - * 根据行列号获取单元格 - */ - getCell: function(rowIndex, cellIndex) { - return ( - (rowIndex < this.rowsNum && - this.table.rows[rowIndex].cells[cellIndex]) || - null - ); - }, - /** - * 删除单元格 - */ - deleteCell: function(cell, rowIndex) { - rowIndex = typeof rowIndex == "number" - ? rowIndex - : cell.parentNode.rowIndex; - var row = this.table.rows[rowIndex]; - row.deleteCell(cell.cellIndex); - }, - /** - * 根据始末两个单元格获取被框选的所有单元格范围 - */ - getCellsRange: function(cellA, cellB) { - function checkRange( - beginRowIndex, - beginColIndex, - endRowIndex, - endColIndex - ) { - var tmpBeginRowIndex = beginRowIndex, - tmpBeginColIndex = beginColIndex, - tmpEndRowIndex = endRowIndex, - tmpEndColIndex = endColIndex, - cellInfo, - colIndex, - rowIndex; - // 通过indexTable检查是否存在超出TableRange上边界的情况 - if (beginRowIndex > 0) { - for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { - cellInfo = me.indexTable[beginRowIndex][colIndex]; - rowIndex = cellInfo.rowIndex; - if (rowIndex < beginRowIndex) { - tmpBeginRowIndex = Math.min(rowIndex, tmpBeginRowIndex); - } - } - } - // 通过indexTable检查是否存在超出TableRange右边界的情况 - if (endColIndex < me.colsNum) { - for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { - cellInfo = me.indexTable[rowIndex][endColIndex]; - colIndex = cellInfo.colIndex + cellInfo.colSpan - 1; - if (colIndex > endColIndex) { - tmpEndColIndex = Math.max(colIndex, tmpEndColIndex); - } - } - } - // 检查是否有超出TableRange下边界的情况 - if (endRowIndex < me.rowsNum) { - for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { - cellInfo = me.indexTable[endRowIndex][colIndex]; - rowIndex = cellInfo.rowIndex + cellInfo.rowSpan - 1; - if (rowIndex > endRowIndex) { - tmpEndRowIndex = Math.max(rowIndex, tmpEndRowIndex); - } - } - } - // 检查是否有超出TableRange左边界的情况 - if (beginColIndex > 0) { - for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { - cellInfo = me.indexTable[rowIndex][beginColIndex]; - colIndex = cellInfo.colIndex; - if (colIndex < beginColIndex) { - tmpBeginColIndex = Math.min(cellInfo.colIndex, tmpBeginColIndex); - } - } - } - //递归调用直至所有完成所有框选单元格的扩展 - if ( - tmpBeginRowIndex != beginRowIndex || - tmpBeginColIndex != beginColIndex || - tmpEndRowIndex != endRowIndex || - tmpEndColIndex != endColIndex - ) { - return checkRange( - tmpBeginRowIndex, - tmpBeginColIndex, - tmpEndRowIndex, - tmpEndColIndex - ); - } else { - // 不需要扩展TableRange的情况 - return { - beginRowIndex: beginRowIndex, - beginColIndex: beginColIndex, - endRowIndex: endRowIndex, - endColIndex: endColIndex - }; - } - } - - try { - var me = this, - cellAInfo = me.getCellInfo(cellA); - if (cellA === cellB) { - return { - beginRowIndex: cellAInfo.rowIndex, - beginColIndex: cellAInfo.colIndex, - endRowIndex: cellAInfo.rowIndex + cellAInfo.rowSpan - 1, - endColIndex: cellAInfo.colIndex + cellAInfo.colSpan - 1 - }; - } - var cellBInfo = me.getCellInfo(cellB); - // 计算TableRange的四个边 - var beginRowIndex = Math.min(cellAInfo.rowIndex, cellBInfo.rowIndex), - beginColIndex = Math.min(cellAInfo.colIndex, cellBInfo.colIndex), - endRowIndex = Math.max( - cellAInfo.rowIndex + cellAInfo.rowSpan - 1, - cellBInfo.rowIndex + cellBInfo.rowSpan - 1 - ), - endColIndex = Math.max( - cellAInfo.colIndex + cellAInfo.colSpan - 1, - cellBInfo.colIndex + cellBInfo.colSpan - 1 - ); - - return checkRange( - beginRowIndex, - beginColIndex, - endRowIndex, - endColIndex - ); - } catch (e) { - //throw e; - } - }, - /** - * 依据cellsRange获取对应的单元格集合 - */ - getCells: function(range) { - //每次获取cells之前必须先清除上次的选择,否则会对后续获取操作造成影响 - this.clearSelected(); - var beginRowIndex = range.beginRowIndex, - beginColIndex = range.beginColIndex, - endRowIndex = range.endRowIndex, - endColIndex = range.endColIndex, - cellInfo, - rowIndex, - colIndex, - tdHash = {}, - returnTds = []; - for (var i = beginRowIndex; i <= endRowIndex; i++) { - for (var j = beginColIndex; j <= endColIndex; j++) { - cellInfo = this.indexTable[i][j]; - rowIndex = cellInfo.rowIndex; - colIndex = cellInfo.colIndex; - // 如果Cells里已经包含了此Cell则跳过 - var key = rowIndex + "|" + colIndex; - if (tdHash[key]) continue; - tdHash[key] = 1; - if ( - rowIndex < i || - colIndex < j || - rowIndex + cellInfo.rowSpan - 1 > endRowIndex || - colIndex + cellInfo.colSpan - 1 > endColIndex - ) { - return null; - } - returnTds.push(this.getCell(rowIndex, cellInfo.cellIndex)); - } - } - return returnTds; - }, - /** - * 清理已经选中的单元格 - */ - clearSelected: function() { - UETable.removeSelectedClass(this.selectedTds); - this.selectedTds = []; - this.cellsRange = {}; - }, - /** - * 根据range设置已经选中的单元格 - */ - setSelected: function(range) { - var cells = this.getCells(range); - UETable.addSelectedClass(cells); - this.selectedTds = cells; - this.cellsRange = range; - }, - isFullRow: function() { - var range = this.cellsRange; - return range.endColIndex - range.beginColIndex + 1 == this.colsNum; - }, - isFullCol: function() { - var range = this.cellsRange, - table = this.table, - ths = table.getElementsByTagName("th"), - rows = range.endRowIndex - range.beginRowIndex + 1; - return !ths.length - ? rows == this.rowsNum - : rows == this.rowsNum || rows == this.rowsNum - 1; - }, - /** - * 获取视觉上的前置单元格,默认是左边,top传入时 - * @param cell - * @param top - */ - getNextCell: function(cell, bottom, ignoreRange) { - try { - var cellInfo = this.getCellInfo(cell), - nextRowIndex, - nextColIndex; - var len = this.selectedTds.length && !ignoreRange, - range = this.cellsRange; - //末行或者末列没有后置单元格 - if ( - (!bottom && cellInfo.rowIndex == 0) || - (bottom && - (!len - ? cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1 - : range.endRowIndex == this.rowsNum - 1)) - ) - return null; - - nextRowIndex = !bottom - ? !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1 - : !len ? cellInfo.rowIndex + cellInfo.rowSpan : range.endRowIndex + 1; - nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex; - return this.getCell( - this.indexTable[nextRowIndex][nextColIndex].rowIndex, - this.indexTable[nextRowIndex][nextColIndex].cellIndex - ); - } catch (e) { - showError(e); - } - }, - getPreviewCell: function(cell, top) { - try { - var cellInfo = this.getCellInfo(cell), - previewRowIndex, - previewColIndex; - var len = this.selectedTds.length, - range = this.cellsRange; - //首行或者首列没有前置单元格 - if ( - (!top && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || - (top && - (!len - ? cellInfo.rowIndex > this.colsNum - 1 - : range.endColIndex == this.colsNum - 1)) - ) - return null; - - previewRowIndex = !top - ? !len ? cellInfo.rowIndex : range.beginRowIndex - : !len - ? cellInfo.rowIndex < 1 ? 0 : cellInfo.rowIndex - 1 - : range.beginRowIndex; - previewColIndex = !top - ? !len - ? cellInfo.colIndex < 1 ? 0 : cellInfo.colIndex - 1 - : range.beginColIndex - 1 - : !len ? cellInfo.colIndex : range.endColIndex + 1; - return this.getCell( - this.indexTable[previewRowIndex][previewColIndex].rowIndex, - this.indexTable[previewRowIndex][previewColIndex].cellIndex - ); - } catch (e) { - showError(e); - } - }, - /** - * 移动单元格中的内容 - */ - moveContent: function(cellTo, cellFrom) { - if (UETable.isEmptyBlock(cellFrom)) return; - if (UETable.isEmptyBlock(cellTo)) { - cellTo.innerHTML = cellFrom.innerHTML; - return; - } - var child = cellTo.lastChild; - if (child.nodeType == 3 || !dtd.$block[child.tagName]) { - cellTo.appendChild(cellTo.ownerDocument.createElement("br")); - } - while ((child = cellFrom.firstChild)) { - cellTo.appendChild(child); - } - }, - /** - * 向右合并单元格 - */ - mergeRight: function(cell) { - var cellInfo = this.getCellInfo(cell), - rightColIndex = cellInfo.colIndex + cellInfo.colSpan, - rightCellInfo = this.indexTable[cellInfo.rowIndex][rightColIndex], - rightCell = this.getCell( - rightCellInfo.rowIndex, - rightCellInfo.cellIndex - ); - //合并 - cell.colSpan = cellInfo.colSpan + rightCellInfo.colSpan; - //被合并的单元格不应存在宽度属性 - cell.removeAttribute("width"); - //移动内容 - this.moveContent(cell, rightCell); - //删掉被合并的Cell - this.deleteCell(rightCell, rightCellInfo.rowIndex); - this.update(); - }, - /** - * 向下合并单元格 - */ - mergeDown: function(cell) { - var cellInfo = this.getCellInfo(cell), - downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan, - downCellInfo = this.indexTable[downRowIndex][cellInfo.colIndex], - downCell = this.getCell(downCellInfo.rowIndex, downCellInfo.cellIndex); - cell.rowSpan = cellInfo.rowSpan + downCellInfo.rowSpan; - cell.removeAttribute("height"); - this.moveContent(cell, downCell); - this.deleteCell(downCell, downCellInfo.rowIndex); - this.update(); - }, - /** - * 合并整个range中的内容 - */ - mergeRange: function() { - //由于合并操作可以在任意时刻进行,所以无法通过鼠标位置等信息实时生成range,只能通过缓存实例中的cellsRange对象来访问 - var range = this.cellsRange, - leftTopCell = this.getCell( - range.beginRowIndex, - this.indexTable[range.beginRowIndex][range.beginColIndex].cellIndex - ); - - // 这段关于行表头或者列表头的特殊处理会导致表头合并范围错误 - // 为什么有这段代码的原因未明,暂且注释掉,希望原作者看到后出面说明下 - // if ( - // leftTopCell.tagName == "TH" && - // range.endRowIndex !== range.beginRowIndex - // ) { - // var index = this.indexTable, - // info = this.getCellInfo(leftTopCell); - // leftTopCell = this.getCell(1, index[1][info.colIndex].cellIndex); - // range = this.getCellsRange( - // leftTopCell, - // this.getCell( - // index[this.rowsNum - 1][info.colIndex].rowIndex, - // index[this.rowsNum - 1][info.colIndex].cellIndex - // ) - // ); - // } - - // 删除剩余的Cells - var cells = this.getCells(range); - for (var i = 0, ci; (ci = cells[i++]); ) { - if (ci !== leftTopCell) { - this.moveContent(leftTopCell, ci); - this.deleteCell(ci); - } - } - // 修改左上角Cell的rowSpan和colSpan,并调整宽度属性设置 - leftTopCell.rowSpan = range.endRowIndex - range.beginRowIndex + 1; - leftTopCell.rowSpan > 1 && leftTopCell.removeAttribute("height"); - leftTopCell.colSpan = range.endColIndex - range.beginColIndex + 1; - leftTopCell.colSpan > 1 && leftTopCell.removeAttribute("width"); - if (leftTopCell.rowSpan == this.rowsNum && leftTopCell.colSpan != 1) { - leftTopCell.colSpan = 1; - } - - if (leftTopCell.colSpan == this.colsNum && leftTopCell.rowSpan != 1) { - var rowIndex = leftTopCell.parentNode.rowIndex; - //解决IE下的表格操作问题 - if (this.table.deleteRow) { - for ( - var i = rowIndex + 1, - curIndex = rowIndex + 1, - len = leftTopCell.rowSpan; - i < len; - i++ - ) { - this.table.deleteRow(curIndex); - } - } else { - for (var i = 0, len = leftTopCell.rowSpan - 1; i < len; i++) { - var row = this.table.rows[rowIndex + 1]; - row.parentNode.removeChild(row); - } - } - leftTopCell.rowSpan = 1; - } - this.update(); - }, - /** - * 插入一行单元格 - */ - insertRow: function(rowIndex, sourceCell) { - var numCols = this.colsNum, - table = this.table, - row = table.insertRow(rowIndex), - cell, - thead = null, - isInsertTitle = - typeof sourceCell == "string" && sourceCell.toUpperCase() == "TH"; - - function replaceTdToTh(colIndex, cell, tableRow) { - if (colIndex == 0) { - var tr = tableRow.nextSibling || tableRow.previousSibling, - th = tr.cells[colIndex]; - if (th.tagName == "TH") { - th = cell.ownerDocument.createElement("th"); - th.appendChild(cell.firstChild); - tableRow.insertBefore(th, cell); - domUtils.remove(cell); - } - } else { - if (cell.tagName == "TH") { - var td = cell.ownerDocument.createElement("td"); - td.appendChild(cell.firstChild); - tableRow.insertBefore(td, cell); - domUtils.remove(cell); - } - } - } - - //首行直接插入,无需考虑部分单元格被rowspan的情况 - if (rowIndex == 0 || rowIndex == this.rowsNum) { - for (var colIndex = 0; colIndex < numCols; colIndex++) { - cell = this.cloneCell(sourceCell, true); - this.setCellContent(cell); - cell.getAttribute("vAlign") && - cell.setAttribute("vAlign", cell.getAttribute("vAlign")); - row.appendChild(cell); - if (!isInsertTitle) replaceTdToTh(colIndex, cell, row); - } - - if (isInsertTitle) { - thead = table.createTHead(); - thead.insertBefore(row, thead.firstChild); - } - } else { - var infoRow = this.indexTable[rowIndex], - cellIndex = 0; - for (colIndex = 0; colIndex < numCols; colIndex++) { - var cellInfo = infoRow[colIndex]; - //如果存在某个单元格的rowspan穿过待插入行的位置,则修改该单元格的rowspan即可,无需插入单元格 - if (cellInfo.rowIndex < rowIndex) { - cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); - cell.rowSpan = cellInfo.rowSpan + 1; - } else { - cell = this.cloneCell(sourceCell, true); - this.setCellContent(cell); - row.appendChild(cell); - } - if (!isInsertTitle) replaceTdToTh(colIndex, cell, row); - } - } - //框选时插入不触发contentchange,需要手动更新索引。 - this.update(); - return row; - }, - /** - * 删除一行单元格 - * @param rowIndex - */ - deleteRow: function(rowIndex) { - var row = this.table.rows[rowIndex], - infoRow = this.indexTable[rowIndex], - colsNum = this.colsNum, - count = 0; //处理计数 - for (var colIndex = 0; colIndex < colsNum; ) { - var cellInfo = infoRow[colIndex], - cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); - if (cell.rowSpan > 1) { - if (cellInfo.rowIndex == rowIndex) { - var clone = cell.cloneNode(true); - clone.rowSpan = cell.rowSpan - 1; - clone.innerHTML = ""; - cell.rowSpan = 1; - var nextRowIndex = rowIndex + 1, - nextRow = this.table.rows[nextRowIndex], - insertCellIndex, - preMerged = - this.getPreviewMergedCellsNum(nextRowIndex, colIndex) - count; - if (preMerged < colIndex) { - insertCellIndex = colIndex - preMerged - 1; - //nextRow.insertCell(insertCellIndex); - domUtils.insertAfter(nextRow.cells[insertCellIndex], clone); - } else { - if (nextRow.cells.length) - nextRow.insertBefore(clone, nextRow.cells[0]); - } - count += 1; - //cell.parentNode.removeChild(cell); - } - } - colIndex += cell.colSpan || 1; - } - var deleteTds = [], - cacheMap = {}; - for (colIndex = 0; colIndex < colsNum; colIndex++) { - var tmpRowIndex = infoRow[colIndex].rowIndex, - tmpCellIndex = infoRow[colIndex].cellIndex, - key = tmpRowIndex + "_" + tmpCellIndex; - if (cacheMap[key]) continue; - cacheMap[key] = 1; - cell = this.getCell(tmpRowIndex, tmpCellIndex); - deleteTds.push(cell); - } - var mergeTds = []; - utils.each(deleteTds, function(td) { - if (td.rowSpan == 1) { - td.parentNode.removeChild(td); - } else { - mergeTds.push(td); - } - }); - utils.each(mergeTds, function(td) { - td.rowSpan--; - }); - row.parentNode.removeChild(row); - //浏览器方法本身存在bug,采用自定义方法删除 - //this.table.deleteRow(rowIndex); - this.update(); - }, - insertCol: function(colIndex, sourceCell, defaultValue) { - var rowsNum = this.rowsNum, - rowIndex = 0, - tableRow, - cell, - backWidth = parseInt( - (this.table.offsetWidth - - (this.colsNum + 1) * 20 - - (this.colsNum + 1)) / - (this.colsNum + 1), - 10 - ), - isInsertTitleCol = - typeof sourceCell == "string" && sourceCell.toUpperCase() == "TH"; - - function replaceTdToTh(rowIndex, cell, tableRow) { - if (rowIndex == 0) { - var th = cell.nextSibling || cell.previousSibling; - if (th.tagName == "TH") { - th = cell.ownerDocument.createElement("th"); - th.appendChild(cell.firstChild); - tableRow.insertBefore(th, cell); - domUtils.remove(cell); - } - } else { - if (cell.tagName == "TH") { - var td = cell.ownerDocument.createElement("td"); - td.appendChild(cell.firstChild); - tableRow.insertBefore(td, cell); - domUtils.remove(cell); - } - } - } - - var preCell; - if (colIndex == 0 || colIndex == this.colsNum) { - for (; rowIndex < rowsNum; rowIndex++) { - tableRow = this.table.rows[rowIndex]; - preCell = - tableRow.cells[colIndex == 0 ? colIndex : tableRow.cells.length]; - cell = this.cloneCell(sourceCell, true); //tableRow.insertCell(colIndex == 0 ? colIndex : tableRow.cells.length); - this.setCellContent(cell); - cell.setAttribute("vAlign", cell.getAttribute("vAlign")); - preCell && cell.setAttribute("width", preCell.getAttribute("width")); - if (!colIndex) { - tableRow.insertBefore(cell, tableRow.cells[0]); - } else { - domUtils.insertAfter( - tableRow.cells[tableRow.cells.length - 1], - cell - ); - } - if (!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow); - } - } else { - for (; rowIndex < rowsNum; rowIndex++) { - var cellInfo = this.indexTable[rowIndex][colIndex]; - if (cellInfo.colIndex < colIndex) { - cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); - cell.colSpan = cellInfo.colSpan + 1; - } else { - tableRow = this.table.rows[rowIndex]; - preCell = tableRow.cells[cellInfo.cellIndex]; - - cell = this.cloneCell(sourceCell, true); //tableRow.insertCell(cellInfo.cellIndex); - this.setCellContent(cell); - cell.setAttribute("vAlign", cell.getAttribute("vAlign")); - preCell && - cell.setAttribute("width", preCell.getAttribute("width")); - //防止IE下报错 - preCell - ? tableRow.insertBefore(cell, preCell) - : tableRow.appendChild(cell); - } - if (!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow); - } - } - //框选时插入不触发contentchange,需要手动更新索引 - this.update(); - this.updateWidth( - backWidth, - defaultValue || { tdPadding: 10, tdBorder: 1 } - ); - }, - updateWidth: function(width, defaultValue) { - var table = this.table, - tmpWidth = - UETable.getWidth(table) - - defaultValue.tdPadding * 2 - - defaultValue.tdBorder + - width; - if (tmpWidth < table.ownerDocument.body.offsetWidth) { - table.setAttribute("width", tmpWidth); - return; - } - var tds = domUtils.getElementsByTagName(this.table, "td th"); - utils.each(tds, function(td) { - td.setAttribute("width", width); - }); - }, - deleteCol: function(colIndex) { - var indexTable = this.indexTable, - tableRows = this.table.rows, - backTableWidth = this.table.getAttribute("width"), - backTdWidth = 0, - rowsNum = this.rowsNum, - cacheMap = {}; - for (var rowIndex = 0; rowIndex < rowsNum; ) { - var infoRow = indexTable[rowIndex], - cellInfo = infoRow[colIndex], - key = cellInfo.rowIndex + "_" + cellInfo.colIndex; - // 跳过已经处理过的Cell - if (cacheMap[key]) continue; - cacheMap[key] = 1; - var cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); - if (!backTdWidth) - backTdWidth = - cell && parseInt(cell.offsetWidth / cell.colSpan, 10).toFixed(0); - // 如果Cell的colSpan大于1, 就修改colSpan, 否则就删掉这个Cell - if (cell.colSpan > 1) { - cell.colSpan--; - } else { - tableRows[rowIndex].deleteCell(cellInfo.cellIndex); - } - rowIndex += cellInfo.rowSpan || 1; - } - this.table.setAttribute("width", backTableWidth - backTdWidth); - this.update(); - }, - splitToCells: function(cell) { - var me = this, - cells = this.splitToRows(cell); - utils.each(cells, function(cell) { - me.splitToCols(cell); - }); - }, - splitToRows: function(cell) { - var cellInfo = this.getCellInfo(cell), - rowIndex = cellInfo.rowIndex, - colIndex = cellInfo.colIndex, - results = []; - // 修改Cell的rowSpan - cell.rowSpan = 1; - results.push(cell); - // 补齐单元格 - for ( - var i = rowIndex, endRow = rowIndex + cellInfo.rowSpan; - i < endRow; - i++ - ) { - if (i == rowIndex) continue; - var tableRow = this.table.rows[i], - tmpCell = tableRow.insertCell( - colIndex - this.getPreviewMergedCellsNum(i, colIndex) - ); - tmpCell.colSpan = cellInfo.colSpan; - this.setCellContent(tmpCell); - tmpCell.setAttribute("vAlign", cell.getAttribute("vAlign")); - tmpCell.setAttribute("align", cell.getAttribute("align")); - if (cell.style.cssText) { - tmpCell.style.cssText = cell.style.cssText; - } - results.push(tmpCell); - } - this.update(); - return results; - }, - getPreviewMergedCellsNum: function(rowIndex, colIndex) { - var indexRow = this.indexTable[rowIndex], - num = 0; - for (var i = 0; i < colIndex; ) { - var colSpan = indexRow[i].colSpan, - tmpRowIndex = indexRow[i].rowIndex; - num += colSpan - (tmpRowIndex == rowIndex ? 1 : 0); - i += colSpan; - } - return num; - }, - splitToCols: function(cell) { - var backWidth = (cell.offsetWidth / cell.colSpan - 22).toFixed(0), - cellInfo = this.getCellInfo(cell), - rowIndex = cellInfo.rowIndex, - colIndex = cellInfo.colIndex, - results = []; - // 修改Cell的rowSpan - cell.colSpan = 1; - cell.setAttribute("width", backWidth); - results.push(cell); - // 补齐单元格 - for ( - var j = colIndex, endCol = colIndex + cellInfo.colSpan; - j < endCol; - j++ - ) { - if (j == colIndex) continue; - var tableRow = this.table.rows[rowIndex], - tmpCell = tableRow.insertCell( - this.indexTable[rowIndex][j].cellIndex + 1 - ); - tmpCell.rowSpan = cellInfo.rowSpan; - this.setCellContent(tmpCell); - tmpCell.setAttribute("vAlign", cell.getAttribute("vAlign")); - tmpCell.setAttribute("align", cell.getAttribute("align")); - tmpCell.setAttribute("width", backWidth); - if (cell.style.cssText) { - tmpCell.style.cssText = cell.style.cssText; - } - //处理th的情况 - if (cell.tagName == "TH") { - var th = cell.ownerDocument.createElement("th"); - th.appendChild(tmpCell.firstChild); - th.setAttribute("vAlign", cell.getAttribute("vAlign")); - th.rowSpan = tmpCell.rowSpan; - tableRow.insertBefore(th, tmpCell); - domUtils.remove(tmpCell); - } - results.push(tmpCell); - } - this.update(); - return results; - }, - isLastCell: function(cell, rowsNum, colsNum) { - rowsNum = rowsNum || this.rowsNum; - colsNum = colsNum || this.colsNum; - var cellInfo = this.getCellInfo(cell); - return ( - cellInfo.rowIndex + cellInfo.rowSpan == rowsNum && - cellInfo.colIndex + cellInfo.colSpan == colsNum - ); - }, - getLastCell: function(cells) { - cells = cells || this.table.getElementsByTagName("td"); - var firstInfo = this.getCellInfo(cells[0]); - var me = this, - last = cells[0], - tr = last.parentNode, - cellsNum = 0, - cols = 0, - rows; - utils.each(cells, function(cell) { - if (cell.parentNode == tr) cols += cell.colSpan || 1; - cellsNum += cell.rowSpan * cell.colSpan || 1; - }); - rows = cellsNum / cols; - utils.each(cells, function(cell) { - if (me.isLastCell(cell, rows, cols)) { - last = cell; - return false; - } - }); - return last; - }, - selectRow: function(rowIndex) { - var indexRow = this.indexTable[rowIndex], - start = this.getCell(indexRow[0].rowIndex, indexRow[0].cellIndex), - end = this.getCell( - indexRow[this.colsNum - 1].rowIndex, - indexRow[this.colsNum - 1].cellIndex - ), - range = this.getCellsRange(start, end); - this.setSelected(range); - }, - selectTable: function() { - var tds = this.table.getElementsByTagName("td"), - range = this.getCellsRange(tds[0], tds[tds.length - 1]); - this.setSelected(range); - }, - setBackground: function(cells, value) { - if (typeof value === "string") { - utils.each(cells, function(cell) { - cell.style.backgroundColor = value; - }); - } else if (typeof value === "object") { - value = utils.extend( - { - repeat: true, - colorList: ["#ddd", "#fff"] - }, - value - ); - var rowIndex = this.getCellInfo(cells[0]).rowIndex, - count = 0, - colors = value.colorList, - getColor = function(list, index, repeat) { - return list[index] - ? list[index] - : repeat ? list[index % list.length] : ""; - }; - for (var i = 0, cell; (cell = cells[i++]); ) { - var cellInfo = this.getCellInfo(cell); - cell.style.backgroundColor = getColor( - colors, - rowIndex + count == cellInfo.rowIndex ? count : ++count, - value.repeat - ); - } - } - }, - removeBackground: function(cells) { - utils.each(cells, function(cell) { - cell.style.backgroundColor = ""; - }); - } - }; - function showError(e) {} -})(); - - -// plugins/table.cmds.js -/** - * Created with JetBrains PhpStorm. - * User: taoqili - * Date: 13-2-20 - * Time: 下午6:25 - * To change this template use File | Settings | File Templates. - */ -(function() { - var UT = UE.UETable, - getTableItemsByRange = function(editor) { - return UT.getTableItemsByRange(editor); - }, - getUETableBySelected = function(editor) { - return UT.getUETableBySelected(editor); - }, - getDefaultValue = function(editor, table) { - return UT.getDefaultValue(editor, table); - }, - getUETable = function(tdOrTable) { - return UT.getUETable(tdOrTable); - }; - - UE.commands["inserttable"] = { - queryCommandState: function() { - return getTableItemsByRange(this).table ? -1 : 0; - }, - execCommand: function(cmd, opt) { - function createTable(opt, tdWidth) { - var html = [], - rowsNum = opt.numRows, - colsNum = opt.numCols; - for (var r = 0; r < rowsNum; r++) { - html.push(""); - for (var c = 0; c < colsNum; c++) { - html.push( - '
  • ' + - (browser.ie && browser.version < 11 - ? domUtils.fillChar - : "
    ") + - "
    " + html.join("") + "
    "; - } - - if (!opt) { - opt = utils.extend( - {}, - { - numCols: this.options.defaultCols, - numRows: this.options.defaultRows, - tdvalign: this.options.tdvalign - } - ); - } - var me = this; - var range = this.selection.getRange(), - start = range.startContainer, - firstParentBlock = - domUtils.findParent( - start, - function(node) { - return domUtils.isBlockElm(node); - }, - true - ) || me.body; - - var defaultValue = getDefaultValue(me), - tableWidth = firstParentBlock.offsetWidth, - tdWidth = Math.floor( - tableWidth / opt.numCols - - defaultValue.tdPadding * 2 - - defaultValue.tdBorder - ); - - //todo其他属性 - !opt.tdvalign && (opt.tdvalign = me.options.tdvalign); - me.execCommand("inserthtml", createTable(opt, tdWidth)); - } - }; - - UE.commands["insertparagraphbeforetable"] = { - queryCommandState: function() { - return getTableItemsByRange(this).cell ? 0 : -1; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var p = this.document.createElement("p"); - p.innerHTML = browser.ie ? " " : "
    "; - table.parentNode.insertBefore(p, table); - this.selection.getRange().setStart(p, 0).setCursor(); - } - } - }; - - UE.commands["deletetable"] = { - queryCommandState: function() { - var rng = this.selection.getRange(); - return domUtils.findParentByTagName(rng.startContainer, "table", true) - ? 0 - : -1; - }, - execCommand: function(cmd, table) { - var rng = this.selection.getRange(); - table = - table || - domUtils.findParentByTagName(rng.startContainer, "table", true); - if (table) { - var next = table.nextSibling; - if (!next) { - next = domUtils.createElement(this.document, "p", { - innerHTML: browser.ie ? domUtils.fillChar : "
    " - }); - table.parentNode.insertBefore(next, table); - } - domUtils.remove(table); - rng = this.selection.getRange(); - if (next.nodeType == 3) { - rng.setStartBefore(next); - } else { - rng.setStart(next, 0); - } - rng.setCursor(false, true); - this.fireEvent("tablehasdeleted"); - } - } - }; - UE.commands["cellalign"] = { - queryCommandState: function() { - return getSelectedArr(this).length ? 0 : -1; - }, - execCommand: function(cmd, align) { - var selectedTds = getSelectedArr(this); - if (selectedTds.length) { - for (var i = 0, ci; (ci = selectedTds[i++]); ) { - ci.setAttribute("align", align); - } - } - } - }; - UE.commands["cellvalign"] = { - queryCommandState: function() { - return getSelectedArr(this).length ? 0 : -1; - }, - execCommand: function(cmd, valign) { - var selectedTds = getSelectedArr(this); - if (selectedTds.length) { - for (var i = 0, ci; (ci = selectedTds[i++]); ) { - ci.setAttribute("vAlign", valign); - } - } - } - }; - UE.commands["insertcaption"] = { - queryCommandState: function() { - var table = getTableItemsByRange(this).table; - if (table) { - return table.getElementsByTagName("caption").length == 0 ? 1 : -1; - } - return -1; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var caption = this.document.createElement("caption"); - caption.innerHTML = browser.ie ? domUtils.fillChar : "
    "; - table.insertBefore(caption, table.firstChild); - var range = this.selection.getRange(); - range.setStart(caption, 0).setCursor(); - } - } - }; - UE.commands["deletecaption"] = { - queryCommandState: function() { - var rng = this.selection.getRange(), - table = domUtils.findParentByTagName(rng.startContainer, "table"); - if (table) { - return table.getElementsByTagName("caption").length == 0 ? -1 : 1; - } - return -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - table = domUtils.findParentByTagName(rng.startContainer, "table"); - if (table) { - domUtils.remove(table.getElementsByTagName("caption")[0]); - var range = this.selection.getRange(); - range.setStart(table.rows[0].cells[0], 0).setCursor(); - } - } - }; - UE.commands["inserttitle"] = { - queryCommandState: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var firstRow = table.rows[0]; - return firstRow.cells[ - firstRow.cells.length - 1 - ].tagName.toLowerCase() != "th" - ? 0 - : -1; - } - return -1; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - if (table) { - getUETable(table).insertRow(0, "th"); - } - var th = table.getElementsByTagName("th")[0]; - this.selection.getRange().setStart(th, 0).setCursor(false, true); - } - }; - UE.commands["deletetitle"] = { - queryCommandState: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var firstRow = table.rows[0]; - return firstRow.cells[ - firstRow.cells.length - 1 - ].tagName.toLowerCase() == "th" - ? 0 - : -1; - } - return -1; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - if (table) { - domUtils.remove(table.rows[0]); - } - var td = table.getElementsByTagName("td")[0]; - this.selection.getRange().setStart(td, 0).setCursor(false, true); - } - }; - UE.commands["inserttitlecol"] = { - queryCommandState: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var lastRow = table.rows[table.rows.length - 1]; - return lastRow.getElementsByTagName("th").length ? -1 : 0; - } - return -1; - }, - execCommand: function(cmd) { - var table = getTableItemsByRange(this).table; - if (table) { - getUETable(table).insertCol(0, "th"); - } - resetTdWidth(table, this); - var th = table.getElementsByTagName("th")[0]; - this.selection.getRange().setStart(th, 0).setCursor(false, true); - } - }; - UE.commands["deletetitlecol"] = { - queryCommandState: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var lastRow = table.rows[table.rows.length - 1]; - return lastRow.getElementsByTagName("th").length ? 0 : -1; - } - return -1; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - if (table) { - for (var i = 0; i < table.rows.length; i++) { - domUtils.remove(table.rows[i].children[0]); - } - } - resetTdWidth(table, this); - var td = table.getElementsByTagName("td")[0]; - this.selection.getRange().setStart(td, 0).setCursor(false, true); - } - }; - - UE.commands["mergeright"] = { - queryCommandState: function(cmd) { - var tableItems = getTableItemsByRange(this), - table = tableItems.table, - cell = tableItems.cell; - - if (!table || !cell) return -1; - var ut = getUETable(table); - if (ut.selectedTds.length) return -1; - - var cellInfo = ut.getCellInfo(cell), - rightColIndex = cellInfo.colIndex + cellInfo.colSpan; - if (rightColIndex >= ut.colsNum) return -1; // 如果处于最右边则不能向右合并 - - var rightCellInfo = ut.indexTable[cellInfo.rowIndex][rightColIndex], - rightCell = - table.rows[rightCellInfo.rowIndex].cells[rightCellInfo.cellIndex]; - if (!rightCell || cell.tagName != rightCell.tagName) return -1; // TH和TD不能相互合并 - - // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并 - return rightCellInfo.rowIndex == cellInfo.rowIndex && - rightCellInfo.rowSpan == cellInfo.rowSpan - ? 0 - : -1; - }, - execCommand: function(cmd) { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell); - ut.mergeRight(cell); - rng.moveToBookmark(bk).select(); - } - }; - UE.commands["mergedown"] = { - queryCommandState: function(cmd) { - var tableItems = getTableItemsByRange(this), - table = tableItems.table, - cell = tableItems.cell; - - if (!table || !cell) return -1; - var ut = getUETable(table); - if (ut.selectedTds.length) return -1; - - var cellInfo = ut.getCellInfo(cell), - downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan; - if (downRowIndex >= ut.rowsNum) return -1; // 如果处于最下边则不能向下合并 - - var downCellInfo = ut.indexTable[downRowIndex][cellInfo.colIndex], - downCell = - table.rows[downCellInfo.rowIndex].cells[downCellInfo.cellIndex]; - if (!downCell || cell.tagName != downCell.tagName) return -1; // TH和TD不能相互合并 - - // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并 - return downCellInfo.colIndex == cellInfo.colIndex && - downCellInfo.colSpan == cellInfo.colSpan - ? 0 - : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell); - ut.mergeDown(cell); - rng.moveToBookmark(bk).select(); - } - }; - UE.commands["mergecells"] = { - queryCommandState: function() { - return getUETableBySelected(this) ? 0 : -1; - }, - execCommand: function() { - var ut = getUETableBySelected(this); - if (ut && ut.selectedTds.length) { - var cell = ut.selectedTds[0]; - ut.mergeRange(); - var rng = this.selection.getRange(); - if (domUtils.isEmptyBlock(cell)) { - rng.setStart(cell, 0).collapse(true); - } else { - rng.selectNodeContents(cell); - } - rng.select(); - } - } - }; - UE.commands["insertrow"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - return cell && - (cell.tagName == "TD" || - (cell.tagName == "TH" && - tableItems.tr !== tableItems.table.rows[0])) && - getUETable(tableItems.table).rowsNum < this.options.maxRowNum - ? 0 - : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell, - table = tableItems.table, - ut = getUETable(table), - cellInfo = ut.getCellInfo(cell); - //ut.insertRow(!ut.selectedTds.length ? cellInfo.rowIndex:ut.cellsRange.beginRowIndex,''); - if (!ut.selectedTds.length) { - ut.insertRow(cellInfo.rowIndex, cell); - } else { - var range = ut.cellsRange; - for ( - var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; - i < len; - i++ - ) { - ut.insertRow(range.beginRowIndex, cell); - } - } - rng.moveToBookmark(bk).select(); - if (table.getAttribute("interlaced") === "enabled") - this.fireEvent("interlacetable", table); - } - }; - //后插入行 - UE.commands["insertrownext"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - return cell && - cell.tagName == "TD" && - getUETable(tableItems.table).rowsNum < this.options.maxRowNum - ? 0 - : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell, - table = tableItems.table, - ut = getUETable(table), - cellInfo = ut.getCellInfo(cell); - //ut.insertRow(!ut.selectedTds.length? cellInfo.rowIndex + cellInfo.rowSpan : ut.cellsRange.endRowIndex + 1,''); - if (!ut.selectedTds.length) { - ut.insertRow(cellInfo.rowIndex + cellInfo.rowSpan, cell); - } else { - var range = ut.cellsRange; - for ( - var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; - i < len; - i++ - ) { - ut.insertRow(range.endRowIndex + 1, cell); - } - } - rng.moveToBookmark(bk).select(); - if (table.getAttribute("interlaced") === "enabled") - this.fireEvent("interlacetable", table); - } - }; - UE.commands["deleterow"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this); - return tableItems.cell ? 0 : -1; - }, - execCommand: function() { - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell), - cellsRange = ut.cellsRange, - cellInfo = ut.getCellInfo(cell), - preCell = ut.getVSideCell(cell), - nextCell = ut.getVSideCell(cell, true), - rng = this.selection.getRange(); - if (utils.isEmptyObject(cellsRange)) { - ut.deleteRow(cellInfo.rowIndex); - } else { - for ( - var i = cellsRange.beginRowIndex; - i < cellsRange.endRowIndex + 1; - i++ - ) { - ut.deleteRow(cellsRange.beginRowIndex); - } - } - var table = ut.table; - if (!table.getElementsByTagName("td").length) { - var nextSibling = table.nextSibling; - domUtils.remove(table); - if (nextSibling) { - rng.setStart(nextSibling, 0).setCursor(false, true); - } - } else { - if ( - cellInfo.rowSpan == 1 || - cellInfo.rowSpan == - cellsRange.endRowIndex - cellsRange.beginRowIndex + 1 - ) { - if (nextCell || preCell) - rng.selectNodeContents(nextCell || preCell).setCursor(false, true); - } else { - var newCell = ut.getCell( - cellInfo.rowIndex, - ut.indexTable[cellInfo.rowIndex][cellInfo.colIndex].cellIndex - ); - if (newCell) rng.selectNodeContents(newCell).setCursor(false, true); - } - } - if (table.getAttribute("interlaced") === "enabled") - this.fireEvent("interlacetable", table); - } - }; - UE.commands["insertcol"] = { - queryCommandState: function(cmd) { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - return cell && - (cell.tagName == "TD" || - (cell.tagName == "TH" && cell !== tableItems.tr.cells[0])) && - getUETable(tableItems.table).colsNum < this.options.maxColNum - ? 0 - : -1; - }, - execCommand: function(cmd) { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - if (this.queryCommandState(cmd) == -1) return; - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell), - cellInfo = ut.getCellInfo(cell); - - //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex:ut.cellsRange.beginColIndex); - if (!ut.selectedTds.length) { - ut.insertCol(cellInfo.colIndex, cell); - } else { - var range = ut.cellsRange; - for ( - var i = 0, len = range.endColIndex - range.beginColIndex + 1; - i < len; - i++ - ) { - ut.insertCol(range.beginColIndex, cell); - } - } - rng.moveToBookmark(bk).select(true); - } - }; - UE.commands["insertcolnext"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - return cell && - getUETable(tableItems.table).colsNum < this.options.maxColNum - ? 0 - : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell), - cellInfo = ut.getCellInfo(cell); - //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex + cellInfo.colSpan:ut.cellsRange.endColIndex +1); - if (!ut.selectedTds.length) { - ut.insertCol(cellInfo.colIndex + cellInfo.colSpan, cell); - } else { - var range = ut.cellsRange; - for ( - var i = 0, len = range.endColIndex - range.beginColIndex + 1; - i < len; - i++ - ) { - ut.insertCol(range.endColIndex + 1, cell); - } - } - rng.moveToBookmark(bk).select(); - } - }; - - UE.commands["deletecol"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this); - return tableItems.cell ? 0 : -1; - }, - execCommand: function() { - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell), - range = ut.cellsRange, - cellInfo = ut.getCellInfo(cell), - preCell = ut.getHSideCell(cell), - nextCell = ut.getHSideCell(cell, true); - if (utils.isEmptyObject(range)) { - ut.deleteCol(cellInfo.colIndex); - } else { - for (var i = range.beginColIndex; i < range.endColIndex + 1; i++) { - ut.deleteCol(range.beginColIndex); - } - } - var table = ut.table, - rng = this.selection.getRange(); - - if (!table.getElementsByTagName("td").length) { - var nextSibling = table.nextSibling; - domUtils.remove(table); - if (nextSibling) { - rng.setStart(nextSibling, 0).setCursor(false, true); - } - } else { - if (domUtils.inDoc(cell, this.document)) { - rng.setStart(cell, 0).setCursor(false, true); - } else { - if (nextCell && domUtils.inDoc(nextCell, this.document)) { - rng.selectNodeContents(nextCell).setCursor(false, true); - } else { - if (preCell && domUtils.inDoc(preCell, this.document)) { - rng.selectNodeContents(preCell).setCursor(true, true); - } - } - } - } - } - }; - UE.commands["splittocells"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - if (!cell) return -1; - var ut = getUETable(tableItems.table); - if (ut.selectedTds.length > 0) return -1; - return cell && (cell.colSpan > 1 || cell.rowSpan > 1) ? 0 : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell); - ut.splitToCells(cell); - rng.moveToBookmark(bk).select(); - } - }; - UE.commands["splittorows"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - if (!cell) return -1; - var ut = getUETable(tableItems.table); - if (ut.selectedTds.length > 0) return -1; - return cell && cell.rowSpan > 1 ? 0 : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell); - ut.splitToRows(cell); - rng.moveToBookmark(bk).select(); - } - }; - UE.commands["splittocols"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - if (!cell) return -1; - var ut = getUETable(tableItems.table); - if (ut.selectedTds.length > 0) return -1; - return cell && cell.colSpan > 1 ? 0 : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell); - ut.splitToCols(cell); - rng.moveToBookmark(bk).select(); - } - }; - - UE.commands["adaptbytext"] = UE.commands["adaptbywindow"] = { - queryCommandState: function() { - return getTableItemsByRange(this).table ? 0 : -1; - }, - execCommand: function(cmd) { - var tableItems = getTableItemsByRange(this), - table = tableItems.table; - if (table) { - if (cmd == "adaptbywindow") { - resetTdWidth(table, this); - } else { - var cells = domUtils.getElementsByTagName(table, "td th"); - utils.each(cells, function(cell) { - cell.removeAttribute("width"); - }); - table.removeAttribute("width"); - } - } - } - }; - - //平均分配各列 - UE.commands["averagedistributecol"] = { - queryCommandState: function() { - var ut = getUETableBySelected(this); - if (!ut) return -1; - return ut.isFullRow() || ut.isFullCol() ? 0 : -1; - }, - execCommand: function(cmd) { - var me = this, - ut = getUETableBySelected(me); - - function getAverageWidth() { - var tb = ut.table, - averageWidth, - sumWidth = 0, - colsNum = 0, - tbAttr = getDefaultValue(me, tb); - - if (ut.isFullRow()) { - sumWidth = tb.offsetWidth; - colsNum = ut.colsNum; - } else { - var begin = ut.cellsRange.beginColIndex, - end = ut.cellsRange.endColIndex, - node; - for (var i = begin; i <= end; ) { - node = ut.selectedTds[i]; - sumWidth += node.offsetWidth; - i += node.colSpan; - colsNum += 1; - } - } - averageWidth = - Math.ceil(sumWidth / colsNum) - - tbAttr.tdBorder * 2 - - tbAttr.tdPadding * 2; - return averageWidth; - } - - function setAverageWidth(averageWidth) { - utils.each(domUtils.getElementsByTagName(ut.table, "th"), function( - node - ) { - node.setAttribute("width", ""); - }); - var cells = ut.isFullRow() - ? domUtils.getElementsByTagName(ut.table, "td") - : ut.selectedTds; - - utils.each(cells, function(node) { - if (node.colSpan == 1) { - node.setAttribute("width", averageWidth); - } - }); - } - - if (ut && ut.selectedTds.length) { - setAverageWidth(getAverageWidth()); - } - } - }; - //平均分配各行 - UE.commands["averagedistributerow"] = { - queryCommandState: function() { - var ut = getUETableBySelected(this); - if (!ut) return -1; - if (ut.selectedTds && /th/gi.test(ut.selectedTds[0].tagName)) return -1; - return ut.isFullRow() || ut.isFullCol() ? 0 : -1; - }, - execCommand: function(cmd) { - var me = this, - ut = getUETableBySelected(me); - - function getAverageHeight() { - var averageHeight, - rowNum, - sumHeight = 0, - tb = ut.table, - tbAttr = getDefaultValue(me, tb), - tdpadding = parseInt( - domUtils.getComputedStyle( - tb.getElementsByTagName("td")[0], - "padding-top" - ) - ); - - if (ut.isFullCol()) { - var captionArr = domUtils.getElementsByTagName(tb, "caption"), - thArr = domUtils.getElementsByTagName(tb, "th"), - captionHeight, - thHeight; - - if (captionArr.length > 0) { - captionHeight = captionArr[0].offsetHeight; - } - if (thArr.length > 0) { - thHeight = thArr[0].offsetHeight; - } - - sumHeight = tb.offsetHeight - (captionHeight || 0) - (thHeight || 0); - rowNum = thArr.length == 0 ? ut.rowsNum : ut.rowsNum - 1; - } else { - var begin = ut.cellsRange.beginRowIndex, - end = ut.cellsRange.endRowIndex, - count = 0, - trs = domUtils.getElementsByTagName(tb, "tr"); - for (var i = begin; i <= end; i++) { - sumHeight += trs[i].offsetHeight; - count += 1; - } - rowNum = count; - } - //ie8下是混杂模式 - if (browser.ie && browser.version < 9) { - averageHeight = Math.ceil(sumHeight / rowNum); - } else { - averageHeight = - Math.ceil(sumHeight / rowNum) - tbAttr.tdBorder * 2 - tdpadding * 2; - } - return averageHeight; - } - - function setAverageHeight(averageHeight) { - var cells = ut.isFullCol() - ? domUtils.getElementsByTagName(ut.table, "td") - : ut.selectedTds; - utils.each(cells, function(node) { - if (node.rowSpan == 1) { - node.setAttribute("height", averageHeight); - } - }); - } - - if (ut && ut.selectedTds.length) { - setAverageHeight(getAverageHeight()); - } - } - }; - - //单元格对齐方式 - UE.commands["cellalignment"] = { - queryCommandState: function() { - return getTableItemsByRange(this).table ? 0 : -1; - }, - execCommand: function(cmd, data) { - var me = this, - ut = getUETableBySelected(me); - - if (!ut) { - var start = me.selection.getStart(), - cell = - start && - domUtils.findParentByTagName(start, ["td", "th", "caption"], true); - if (!/caption/gi.test(cell.tagName)) { - domUtils.setAttributes(cell, data); - } else { - cell.style.textAlign = data.align; - cell.style.verticalAlign = data.vAlign; - } - me.selection.getRange().setCursor(true); - } else { - utils.each(ut.selectedTds, function(cell) { - domUtils.setAttributes(cell, data); - }); - } - }, - /** - * 查询当前点击的单元格的对齐状态, 如果当前已经选择了多个单元格, 则会返回所有单元格经过统一协调过后的状态 - * @see UE.UETable.getTableCellAlignState - */ - queryCommandValue: function(cmd) { - var activeMenuCell = getTableItemsByRange(this).cell; - - if (!activeMenuCell) { - activeMenuCell = getSelectedArr(this)[0]; - } - - if (!activeMenuCell) { - return null; - } else { - //获取同时选中的其他单元格 - var cells = UE.UETable.getUETable(activeMenuCell).selectedTds; - - !cells.length && (cells = activeMenuCell); - - return UE.UETable.getTableCellAlignState(cells); - } - } - }; - //表格对齐方式 - UE.commands["tablealignment"] = { - queryCommandState: function() { - if (browser.ie && browser.version < 8) { - return -1; - } - return getTableItemsByRange(this).table ? 0 : -1; - }, - execCommand: function(cmd, value) { - var me = this, - start = me.selection.getStart(), - table = start && domUtils.findParentByTagName(start, ["table"], true); - - if (table) { - table.setAttribute("align", value); - } - } - }; - - //表格属性 - UE.commands["edittable"] = { - queryCommandState: function() { - return getTableItemsByRange(this).table ? 0 : -1; - }, - execCommand: function(cmd, color) { - var rng = this.selection.getRange(), - table = domUtils.findParentByTagName(rng.startContainer, "table"); - if (table) { - var arr = domUtils - .getElementsByTagName(table, "td") - .concat( - domUtils.getElementsByTagName(table, "th"), - domUtils.getElementsByTagName(table, "caption") - ); - utils.each(arr, function(node) { - node.style.borderColor = color; - }); - } - } - }; - //单元格属性 - UE.commands["edittd"] = { - queryCommandState: function() { - return getTableItemsByRange(this).table ? 0 : -1; - }, - execCommand: function(cmd, bkColor) { - var me = this, - ut = getUETableBySelected(me); - - if (!ut) { - var start = me.selection.getStart(), - cell = - start && - domUtils.findParentByTagName(start, ["td", "th", "caption"], true); - if (cell) { - cell.style.backgroundColor = bkColor; - } - } else { - utils.each(ut.selectedTds, function(cell) { - cell.style.backgroundColor = bkColor; - }); - } - } - }; - - UE.commands["settablebackground"] = { - queryCommandState: function() { - return getSelectedArr(this).length > 1 ? 0 : -1; - }, - execCommand: function(cmd, value) { - var cells, ut; - cells = getSelectedArr(this); - ut = getUETable(cells[0]); - ut.setBackground(cells, value); - } - }; - - UE.commands["cleartablebackground"] = { - queryCommandState: function() { - var cells = getSelectedArr(this); - if (!cells.length) return -1; - for (var i = 0, cell; (cell = cells[i++]); ) { - if (cell.style.backgroundColor !== "") return 0; - } - return -1; - }, - execCommand: function() { - var cells = getSelectedArr(this), - ut = getUETable(cells[0]); - ut.removeBackground(cells); - } - }; - - UE.commands["interlacetable"] = UE.commands["uninterlacetable"] = { - queryCommandState: function(cmd) { - var table = getTableItemsByRange(this).table; - if (!table) return -1; - var interlaced = table.getAttribute("interlaced"); - if (cmd == "interlacetable") { - //TODO 待定 - //是否需要待定,如果设置,则命令只能单次执行成功,但反射具备toggle效果;否则可以覆盖前次命令,但反射将不存在toggle效果 - return interlaced === "enabled" ? -1 : 0; - } else { - return !interlaced || interlaced === "disabled" ? -1 : 0; - } - }, - execCommand: function(cmd, classList) { - var table = getTableItemsByRange(this).table; - if (cmd == "interlacetable") { - table.setAttribute("interlaced", "enabled"); - this.fireEvent("interlacetable", table, classList); - } else { - table.setAttribute("interlaced", "disabled"); - this.fireEvent("uninterlacetable", table); - } - } - }; - UE.commands["setbordervisible"] = { - queryCommandState: function(cmd) { - var table = getTableItemsByRange(this).table; - if (!table) return -1; - return 0; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - utils.each(domUtils.getElementsByTagName(table, "td"), function(td) { - td.style.borderWidth = "1px"; - td.style.borderStyle = "solid"; - }); - } - }; - function resetTdWidth(table, editor) { - var tds = domUtils.getElementsByTagName(table, "td th"); - utils.each(tds, function(td) { - td.removeAttribute("width"); - }); - table.setAttribute( - "width", - getTableWidth(editor, true, getDefaultValue(editor, table)) - ); - var tdsWidths = []; - setTimeout(function() { - utils.each(tds, function(td) { - td.colSpan == 1 && tdsWidths.push(td.offsetWidth); - }); - utils.each(tds, function(td, i) { - td.colSpan == 1 && td.setAttribute("width", tdsWidths[i] + ""); - }); - }, 0); - } - - function getTableWidth(editor, needIEHack, defaultValue) { - var body = editor.body; - return ( - body.offsetWidth - - (needIEHack - ? parseInt(domUtils.getComputedStyle(body, "margin-left"), 10) * 2 - : 0) - - defaultValue.tableBorder * 2 - - (editor.options.offsetWidth || 0) - ); - } - - function getSelectedArr(editor) { - var cell = getTableItemsByRange(editor).cell; - if (cell) { - var ut = getUETable(cell); - return ut.selectedTds.length ? ut.selectedTds : [cell]; - } else { - return []; - } - } -})(); - - -// plugins/table.action.js -/** - * Created with JetBrains PhpStorm. - * User: taoqili - * Date: 12-10-12 - * Time: 上午10:05 - * To change this template use File | Settings | File Templates. - */ -UE.plugins["table"] = function() { - var me = this, - tabTimer = null, - //拖动计时器 - tableDragTimer = null, - //双击计时器 - tableResizeTimer = null, - //单元格最小宽度 - cellMinWidth = 5, - isInResizeBuffer = false, - //单元格边框大小 - cellBorderWidth = 5, - //鼠标偏移距离 - offsetOfTableCell = 10, - //记录在有限时间内的点击状态, 共有3个取值, 0, 1, 2。 0代表未初始化, 1代表单击了1次,2代表2次 - singleClickState = 0, - userActionStatus = null, - //双击允许的时间范围 - dblclickTime = 360, - UT = UE.UETable, - getUETable = function(tdOrTable) { - return UT.getUETable(tdOrTable); - }, - getUETableBySelected = function(editor) { - return UT.getUETableBySelected(editor); - }, - getDefaultValue = function(editor, table) { - return UT.getDefaultValue(editor, table); - }, - removeSelectedClass = function(cells) { - return UT.removeSelectedClass(cells); - }; - - function showError(e) { - // throw e; - } - me.ready(function() { - var me = this; - var orgGetText = me.selection.getText; - me.selection.getText = function() { - var table = getUETableBySelected(me); - if (table) { - var str = ""; - utils.each(table.selectedTds, function(td) { - str += td[browser.ie ? "innerText" : "textContent"]; - }); - return str; - } else { - return orgGetText.call(me.selection); - } - }; - }); - - //处理拖动及框选相关方法 - var startTd = null, //鼠标按下时的锚点td - currentTd = null, //当前鼠标经过时的td - onDrag = "", //指示当前拖动状态,其值可为"","h","v" ,分别表示未拖动状态,横向拖动状态,纵向拖动状态,用于鼠标移动过程中的判断 - onBorder = false, //检测鼠标按下时是否处在单元格边缘位置 - dragButton = null, - dragOver = false, - dragLine = null, //模拟的拖动线 - dragTd = null; //发生拖动的目标td - - var mousedown = false, - //todo 判断混乱模式 - needIEHack = true; - - me.setOpt({ - maxColNum: 20, - maxRowNum: 100, - defaultCols: 5, - defaultRows: 5, - tdvalign: "top", - cursorpath: me.options.UEDITOR_HOME_URL + "themes/default/images/cursor_", - tableDragable: false, - classList: [ - "ue-table-interlace-color-single", - "ue-table-interlace-color-double" - ] - }); - me.getUETable = getUETable; - var commands = { - deletetable: 1, - inserttable: 1, - cellvalign: 1, - insertcaption: 1, - deletecaption: 1, - inserttitle: 1, - deletetitle: 1, - mergeright: 1, - mergedown: 1, - mergecells: 1, - insertrow: 1, - insertrownext: 1, - deleterow: 1, - insertcol: 1, - insertcolnext: 1, - deletecol: 1, - splittocells: 1, - splittorows: 1, - splittocols: 1, - adaptbytext: 1, - adaptbywindow: 1, - adaptbycustomer: 1, - insertparagraph: 1, - insertparagraphbeforetable: 1, - averagedistributecol: 1, - averagedistributerow: 1 - }; - me.ready(function() { - utils.cssRule( - "table", - //选中的td上的样式 - ".selectTdClass{background-color:#edf5fa !important}" + - "table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}" + - //插入的表格的默认样式 - "table{margin-bottom:10px;border-collapse:collapse;display:table;}" + - "td,th{padding: 5px 10px;border: 1px solid #DDD;}" + - "caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}" + - "th{border-top:1px solid #BBB;background-color:#F7F7F7;}" + - "table tr.firstRow th{border-top-width:2px;}" + - ".ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }" + - "td p{margin:0;padding:0;}", - me.document - ); - - var tableCopyList, isFullCol, isFullRow; - //注册del/backspace事件 - me.addListener("keydown", function(cmd, evt) { - var me = this; - var keyCode = evt.keyCode || evt.which; - - if (keyCode == 8) { - var ut = getUETableBySelected(me); - if (ut && ut.selectedTds.length) { - if (ut.isFullCol()) { - me.execCommand("deletecol"); - } else if (ut.isFullRow()) { - me.execCommand("deleterow"); - } else { - me.fireEvent("delcells"); - } - domUtils.preventDefault(evt); - } - - var caption = domUtils.findParentByTagName( - me.selection.getStart(), - "caption", - true - ), - range = me.selection.getRange(); - if (range.collapsed && caption && isEmptyBlock(caption)) { - me.fireEvent("saveScene"); - var table = caption.parentNode; - domUtils.remove(caption); - if (table) { - range.setStart(table.rows[0].cells[0], 0).setCursor(false, true); - } - me.fireEvent("saveScene"); - } - } - - if (keyCode == 46) { - ut = getUETableBySelected(me); - if (ut) { - me.fireEvent("saveScene"); - for (var i = 0, ci; (ci = ut.selectedTds[i++]); ) { - domUtils.fillNode(me.document, ci); - } - me.fireEvent("saveScene"); - domUtils.preventDefault(evt); - } - } - if (keyCode == 13) { - var rng = me.selection.getRange(), - caption = domUtils.findParentByTagName( - rng.startContainer, - "caption", - true - ); - if (caption) { - var table = domUtils.findParentByTagName(caption, "table"); - if (!rng.collapsed) { - rng.deleteContents(); - me.fireEvent("saveScene"); - } else { - if (caption) { - rng.setStart(table.rows[0].cells[0], 0).setCursor(false, true); - } - } - domUtils.preventDefault(evt); - return; - } - if (rng.collapsed) { - var table = domUtils.findParentByTagName(rng.startContainer, "table"); - if (table) { - var cell = table.rows[0].cells[0], - start = domUtils.findParentByTagName( - me.selection.getStart(), - ["td", "th"], - true - ), - preNode = table.previousSibling; - if ( - cell === start && - (!preNode || - (preNode.nodeType == 1 && preNode.tagName == "TABLE")) && - domUtils.isStartInblock(rng) - ) { - var first = domUtils.findParent( - me.selection.getStart(), - function(n) { - return domUtils.isBlockElm(n); - }, - true - ); - if ( - first && - (/t(h|d)/i.test(first.tagName) || first === start.firstChild) - ) { - me.execCommand("insertparagraphbeforetable"); - domUtils.preventDefault(evt); - } - } - } - } - } - - if ((evt.ctrlKey || evt.metaKey) && evt.keyCode == "67") { - tableCopyList = null; - var ut = getUETableBySelected(me); - if (ut) { - var tds = ut.selectedTds; - isFullCol = ut.isFullCol(); - isFullRow = ut.isFullRow(); - tableCopyList = [[ut.cloneCell(tds[0], null, true)]]; - for (var i = 1, ci; (ci = tds[i]); i++) { - if (ci.parentNode !== tds[i - 1].parentNode) { - tableCopyList.push([ut.cloneCell(ci, null, true)]); - } else { - tableCopyList[tableCopyList.length - 1].push( - ut.cloneCell(ci, null, true) - ); - } - } - } - } - }); - me.addListener("tablehasdeleted", function() { - toggleDraggableState(this, false, "", null); - if (dragButton) domUtils.remove(dragButton); - }); - - me.addListener("beforepaste", function(cmd, html) { - var me = this; - var rng = me.selection.getRange(); - if (domUtils.findParentByTagName(rng.startContainer, "caption", true)) { - var div = me.document.createElement("div"); - div.innerHTML = html.html; - //trace:3729 - html.html = div[browser.ie9below ? "innerText" : "textContent"]; - return; - } - var table = getUETableBySelected(me); - if (tableCopyList) { - me.fireEvent("saveScene"); - var rng = me.selection.getRange(); - var td = domUtils.findParentByTagName( - rng.startContainer, - ["td", "th"], - true - ), - tmpNode, - preNode; - if (td) { - var ut = getUETable(td); - if (isFullRow) { - var rowIndex = ut.getCellInfo(td).rowIndex; - if (td.tagName == "TH") { - rowIndex++; - } - for (var i = 0, ci; (ci = tableCopyList[i++]); ) { - var tr = ut.insertRow(rowIndex++, "td"); - for (var j = 0, cj; (cj = ci[j]); j++) { - var cell = tr.cells[j]; - if (!cell) { - cell = tr.insertCell(j); - } - cell.innerHTML = cj.innerHTML; - cj.getAttribute("width") && - cell.setAttribute("width", cj.getAttribute("width")); - cj.getAttribute("vAlign") && - cell.setAttribute("vAlign", cj.getAttribute("vAlign")); - cj.getAttribute("align") && - cell.setAttribute("align", cj.getAttribute("align")); - cj.style.cssText && (cell.style.cssText = cj.style.cssText); - } - for (var j = 0, cj; (cj = tr.cells[j]); j++) { - if (!ci[j]) break; - cj.innerHTML = ci[j].innerHTML; - ci[j].getAttribute("width") && - cj.setAttribute("width", ci[j].getAttribute("width")); - ci[j].getAttribute("vAlign") && - cj.setAttribute("vAlign", ci[j].getAttribute("vAlign")); - ci[j].getAttribute("align") && - cj.setAttribute("align", ci[j].getAttribute("align")); - ci[j].style.cssText && (cj.style.cssText = ci[j].style.cssText); - } - } - } else { - if (isFullCol) { - cellInfo = ut.getCellInfo(td); - var maxColNum = 0; - for (var j = 0, ci = tableCopyList[0], cj; (cj = ci[j++]); ) { - maxColNum += cj.colSpan || 1; - } - me.__hasEnterExecCommand = true; - for (i = 0; i < maxColNum; i++) { - me.execCommand("insertcol"); - } - me.__hasEnterExecCommand = false; - td = ut.table.rows[0].cells[cellInfo.cellIndex]; - if (td.tagName == "TH") { - td = ut.table.rows[1].cells[cellInfo.cellIndex]; - } - } - for (var i = 0, ci; (ci = tableCopyList[i++]); ) { - tmpNode = td; - for (var j = 0, cj; (cj = ci[j++]); ) { - if (td) { - td.innerHTML = cj.innerHTML; - //todo 定制处理 - cj.getAttribute("width") && - td.setAttribute("width", cj.getAttribute("width")); - cj.getAttribute("vAlign") && - td.setAttribute("vAlign", cj.getAttribute("vAlign")); - cj.getAttribute("align") && - td.setAttribute("align", cj.getAttribute("align")); - cj.style.cssText && (td.style.cssText = cj.style.cssText); - preNode = td; - td = td.nextSibling; - } else { - var cloneTd = cj.cloneNode(true); - domUtils.removeAttributes(cloneTd, [ - "class", - "rowSpan", - "colSpan" - ]); - - preNode.parentNode.appendChild(cloneTd); - } - } - td = ut.getNextCell(tmpNode, true, true); - if (!tableCopyList[i]) break; - if (!td) { - var cellInfo = ut.getCellInfo(tmpNode); - ut.table.insertRow(ut.table.rows.length); - ut.update(); - td = ut.getVSideCell(tmpNode, true); - } - } - } - ut.update(); - } else { - table = me.document.createElement("table"); - for (var i = 0, ci; (ci = tableCopyList[i++]); ) { - var tr = table.insertRow(table.rows.length); - for (var j = 0, cj; (cj = ci[j++]); ) { - cloneTd = UT.cloneCell(cj, null, true); - domUtils.removeAttributes(cloneTd, ["class"]); - tr.appendChild(cloneTd); - } - if (j == 2 && cloneTd.rowSpan > 1) { - cloneTd.rowSpan = 1; - } - } - - var defaultValue = getDefaultValue(me), - width = - me.body.offsetWidth - - (needIEHack - ? parseInt( - domUtils.getComputedStyle(me.body, "margin-left"), - 10 - ) * 2 - : 0) - - defaultValue.tableBorder * 2 - - (me.options.offsetWidth || 0); - me.execCommand( - "insertHTML", - "" + - table.innerHTML - .replace(/>\s*<") - .replace(/\bth\b/gi, "td") + - "
    " - ); - } - me.fireEvent("contentchange"); - me.fireEvent("saveScene"); - html.html = ""; - return true; - } else { - var div = me.document.createElement("div"), - tables; - div.innerHTML = html.html; - tables = div.getElementsByTagName("table"); - if (domUtils.findParentByTagName(me.selection.getStart(), "table")) { - utils.each(tables, function(t) { - domUtils.remove(t); - }); - if ( - domUtils.findParentByTagName( - me.selection.getStart(), - "caption", - true - ) - ) { - div.innerHTML = div[browser.ie ? "innerText" : "textContent"]; - } - } else { - utils.each(tables, function(table) { - removeStyleSize(table, true); - domUtils.removeAttributes(table, ["style", "border"]); - utils.each(domUtils.getElementsByTagName(table, "td"), function( - td - ) { - if (isEmptyBlock(td)) { - domUtils.fillNode(me.document, td); - } - removeStyleSize(td, true); - // domUtils.removeAttributes(td, ['style']) - }); - }); - } - html.html = div.innerHTML; - } - }); - - me.addListener("afterpaste", function() { - utils.each(domUtils.getElementsByTagName(me.body, "table"), function( - table - ) { - if (table.offsetWidth > me.body.offsetWidth) { - var defaultValue = getDefaultValue(me, table); - table.style.width = - me.body.offsetWidth - - (needIEHack - ? parseInt( - domUtils.getComputedStyle(me.body, "margin-left"), - 10 - ) * 2 - : 0) - - defaultValue.tableBorder * 2 - - (me.options.offsetWidth || 0) + - "px"; - } - }); - }); - me.addListener("blur", function() { - tableCopyList = null; - }); - var timer; - me.addListener("keydown", function() { - clearTimeout(timer); - timer = setTimeout(function() { - var rng = me.selection.getRange(), - cell = domUtils.findParentByTagName( - rng.startContainer, - ["th", "td"], - true - ); - if (cell) { - var table = cell.parentNode.parentNode.parentNode; - if (table.offsetWidth > table.getAttribute("width")) { - cell.style.wordBreak = "break-all"; - } - } - }, 100); - }); - me.addListener("selectionchange", function() { - toggleDraggableState(me, false, "", null); - }); - - //内容变化时触发索引更新 - //todo 可否考虑标记检测,如果不涉及表格的变化就不进行索引重建和更新 - me.addListener("contentchange", function() { - var me = this; - //尽可能排除一些不需要更新的状况 - hideDragLine(me); - if (getUETableBySelected(me)) return; - var rng = me.selection.getRange(); - var start = rng.startContainer; - start = domUtils.findParentByTagName(start, ["td", "th"], true); - utils.each(domUtils.getElementsByTagName(me.document, "table"), function( - table - ) { - if (me.fireEvent("excludetable", table) === true) return; - table.ueTable = new UT(table); - //trace:3742 - // utils.each(domUtils.getElementsByTagName(me.document, 'td'), function (td) { - // - // if (domUtils.isEmptyBlock(td) && td !== start) { - // domUtils.fillNode(me.document, td); - // if (browser.ie && browser.version == 6) { - // td.innerHTML = ' ' - // } - // } - // }); - // utils.each(domUtils.getElementsByTagName(me.document, 'th'), function (th) { - // if (domUtils.isEmptyBlock(th) && th !== start) { - // domUtils.fillNode(me.document, th); - // if (browser.ie && browser.version == 6) { - // th.innerHTML = ' ' - // } - // } - // }); - table.onmouseover = function() { - me.fireEvent("tablemouseover", table); - }; - table.onmousemove = function() { - me.fireEvent("tablemousemove", table); - me.options.tableDragable && toggleDragButton(true, this, me); - utils.defer(function() { - me.fireEvent("contentchange", 50); - }, true); - }; - table.onmouseout = function() { - me.fireEvent("tablemouseout", table); - toggleDraggableState(me, false, "", null); - hideDragLine(me); - }; - table.onclick = function(evt) { - evt = me.window.event || evt; - var target = getParentTdOrTh(evt.target || evt.srcElement); - if (!target) return; - var ut = getUETable(target), - table = ut.table, - cellInfo = ut.getCellInfo(target), - cellsRange, - rng = me.selection.getRange(); - // if ("topLeft" == inPosition(table, mouseCoords(evt))) { - // cellsRange = ut.getCellsRange(ut.table.rows[0].cells[0], ut.getLastCell()); - // ut.setSelected(cellsRange); - // return; - // } - // if ("bottomRight" == inPosition(table, mouseCoords(evt))) { - // - // return; - // } - if (inTableSide(table, target, evt, true)) { - var endTdCol = ut.getCell( - ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].rowIndex, - ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].cellIndex - ); - if (evt.shiftKey && ut.selectedTds.length) { - if (ut.selectedTds[0] !== endTdCol) { - cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdCol); - ut.setSelected(cellsRange); - } else { - rng && rng.selectNodeContents(endTdCol).select(); - } - } else { - if (target !== endTdCol) { - cellsRange = ut.getCellsRange(target, endTdCol); - ut.setSelected(cellsRange); - } else { - rng && rng.selectNodeContents(endTdCol).select(); - } - } - return; - } - if (inTableSide(table, target, evt)) { - var endTdRow = ut.getCell( - ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].rowIndex, - ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].cellIndex - ); - if (evt.shiftKey && ut.selectedTds.length) { - if (ut.selectedTds[0] !== endTdRow) { - cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdRow); - ut.setSelected(cellsRange); - } else { - rng && rng.selectNodeContents(endTdRow).select(); - } - } else { - if (target !== endTdRow) { - cellsRange = ut.getCellsRange(target, endTdRow); - ut.setSelected(cellsRange); - } else { - rng && rng.selectNodeContents(endTdRow).select(); - } - } - } - }; - }); - - switchBorderColor(me, true); - }); - - domUtils.on(me.document, "mousemove", mouseMoveEvent); - - domUtils.on(me.document, "mouseout", function(evt) { - var target = evt.target || evt.srcElement; - if (target.tagName == "TABLE") { - toggleDraggableState(me, false, "", null); - } - }); - /** - * 表格隔行变色 - */ - me.addListener("interlacetable", function(type, table, classList) { - if (!table) return; - var me = this, - rows = table.rows, - len = rows.length, - getClass = function(list, index, repeat) { - return list[index] - ? list[index] - : repeat ? list[index % list.length] : ""; - }; - for (var i = 0; i < len; i++) { - rows[i].className = getClass( - classList || me.options.classList, - i, - true - ); - } - }); - me.addListener("uninterlacetable", function(type, table) { - if (!table) return; - var me = this, - rows = table.rows, - classList = me.options.classList, - len = rows.length; - for (var i = 0; i < len; i++) { - domUtils.removeClasses(rows[i], classList); - } - }); - - me.addListener("mousedown", mouseDownEvent); - me.addListener("mouseup", mouseUpEvent); - //拖动的时候触发mouseup - domUtils.on(me.body, "dragstart", function(evt) { - mouseUpEvent.call(me, "dragstart", evt); - }); - me.addOutputRule(function(root) { - utils.each(root.getNodesByTagName("div"), function(n) { - if (n.getAttr("id") == "ue_tableDragLine") { - n.parentNode.removeChild(n); - } - }); - }); - - var currentRowIndex = 0; - me.addListener("mousedown", function() { - currentRowIndex = 0; - }); - me.addListener("tabkeydown", function() { - var range = this.selection.getRange(), - common = range.getCommonAncestor(true, true), - table = domUtils.findParentByTagName(common, "table"); - if (table) { - if (domUtils.findParentByTagName(common, "caption", true)) { - var cell = domUtils.getElementsByTagName(table, "th td"); - if (cell && cell.length) { - range.setStart(cell[0], 0).setCursor(false, true); - } - } else { - var cell = domUtils.findParentByTagName(common, ["td", "th"], true), - ua = getUETable(cell); - currentRowIndex = cell.rowSpan > 1 - ? currentRowIndex - : ua.getCellInfo(cell).rowIndex; - var nextCell = ua.getTabNextCell(cell, currentRowIndex); - if (nextCell) { - if (isEmptyBlock(nextCell)) { - range.setStart(nextCell, 0).setCursor(false, true); - } else { - range.selectNodeContents(nextCell).select(); - } - } else { - me.fireEvent("saveScene"); - me.__hasEnterExecCommand = true; - this.execCommand("insertrownext"); - me.__hasEnterExecCommand = false; - range = this.selection.getRange(); - range - .setStart(table.rows[table.rows.length - 1].cells[0], 0) - .setCursor(); - me.fireEvent("saveScene"); - } - } - return true; - } - }); - browser.ie && - me.addListener("selectionchange", function() { - toggleDraggableState(this, false, "", null); - }); - me.addListener("keydown", function(type, evt) { - var me = this; - //处理在表格的最后一个输入tab产生新的表格 - var keyCode = evt.keyCode || evt.which; - if (keyCode == 8 || keyCode == 46) { - return; - } - var notCtrlKey = - !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey; - notCtrlKey && - removeSelectedClass(domUtils.getElementsByTagName(me.body, "td")); - var ut = getUETableBySelected(me); - if (!ut) return; - notCtrlKey && ut.clearSelected(); - }); - - me.addListener("beforegetcontent", function() { - switchBorderColor(this, false); - browser.ie && - utils.each(this.document.getElementsByTagName("caption"), function(ci) { - if (domUtils.isEmptyNode(ci)) { - ci.innerHTML = " "; - } - }); - }); - me.addListener("aftergetcontent", function() { - switchBorderColor(this, true); - }); - me.addListener("getAllHtml", function() { - removeSelectedClass(me.document.getElementsByTagName("td")); - }); - //修正全屏状态下插入的表格宽度在非全屏状态下撑开编辑器的情况 - me.addListener("fullscreenchanged", function(type, fullscreen) { - if (!fullscreen) { - var ratio = this.body.offsetWidth / document.body.offsetWidth, - tables = domUtils.getElementsByTagName(this.body, "table"); - utils.each(tables, function(table) { - if (table.offsetWidth < me.body.offsetWidth) return false; - var tds = domUtils.getElementsByTagName(table, "td"), - backWidths = []; - utils.each(tds, function(td) { - backWidths.push(td.offsetWidth); - }); - for (var i = 0, td; (td = tds[i]); i++) { - td.setAttribute("width", Math.floor(backWidths[i] * ratio)); - } - table.setAttribute( - "width", - Math.floor(getTableWidth(me, needIEHack, getDefaultValue(me))) - ); - }); - } - }); - - //重写execCommand命令,用于处理框选时的处理 - var oldExecCommand = me.execCommand; - me.execCommand = function(cmd, datatat) { - var me = this, - args = arguments; - - cmd = cmd.toLowerCase(); - var ut = getUETableBySelected(me), - tds, - range = new dom.Range(me.document), - cmdFun = me.commands[cmd] || UE.commands[cmd], - result; - if (!cmdFun) return; - if ( - ut && - !commands[cmd] && - !cmdFun.notNeedUndo && - !me.__hasEnterExecCommand - ) { - me.__hasEnterExecCommand = true; - me.fireEvent("beforeexeccommand", cmd); - tds = ut.selectedTds; - var lastState = -2, - lastValue = -2, - value, - state; - for (var i = 0, td; (td = tds[i]); i++) { - if (isEmptyBlock(td)) { - range.setStart(td, 0).setCursor(false, true); - } else { - range.selectNode(td).select(true); - } - state = me.queryCommandState(cmd); - value = me.queryCommandValue(cmd); - if (state != -1) { - if (lastState !== state || lastValue !== value) { - me._ignoreContentChange = true; - result = oldExecCommand.apply(me, arguments); - me._ignoreContentChange = false; - } - lastState = me.queryCommandState(cmd); - lastValue = me.queryCommandValue(cmd); - if (domUtils.isEmptyBlock(td)) { - domUtils.fillNode(me.document, td); - } - } - } - range.setStart(tds[0], 0).shrinkBoundary(true).setCursor(false, true); - me.fireEvent("contentchange"); - me.fireEvent("afterexeccommand", cmd); - me.__hasEnterExecCommand = false; - me._selectionChange(); - } else { - result = oldExecCommand.apply(me, arguments); - } - return result; - }; - }); - /** - * 删除obj的宽高style,改成属性宽高 - * @param obj - * @param replaceToProperty - */ - function removeStyleSize(obj, replaceToProperty) { - removeStyle(obj, "width", true); - removeStyle(obj, "height", true); - } - - function removeStyle(obj, styleName, replaceToProperty) { - if (obj.style[styleName]) { - replaceToProperty && - obj.setAttribute(styleName, parseInt(obj.style[styleName], 10)); - obj.style[styleName] = ""; - } - } - - function getParentTdOrTh(ele) { - if (ele.tagName == "TD" || ele.tagName == "TH") return ele; - var td; - if ( - (td = - domUtils.findParentByTagName(ele, "td", true) || - domUtils.findParentByTagName(ele, "th", true)) - ) - return td; - return null; - } - - function isEmptyBlock(node) { - var reg = new RegExp(domUtils.fillChar, "g"); - if ( - node[browser.ie ? "innerText" : "textContent"] - .replace(/^\s*$/, "") - .replace(reg, "").length > 0 - ) { - return 0; - } - for (var n in dtd.$isNotEmpty) { - if (node.getElementsByTagName(n).length) { - return 0; - } - } - return 1; - } - - function mouseCoords(evt) { - if (evt.pageX || evt.pageY) { - return { x: evt.pageX, y: evt.pageY }; - } - return { - x: - evt.clientX + me.document.body.scrollLeft - me.document.body.clientLeft, - y: evt.clientY + me.document.body.scrollTop - me.document.body.clientTop - }; - } - - function mouseMoveEvent(evt) { - if (isEditorDisabled()) { - return; - } - - try { - //普通状态下鼠标移动 - var target = getParentTdOrTh(evt.target || evt.srcElement), - pos; - - //区分用户的行为是拖动还是双击 - if (isInResizeBuffer) { - me.body.style.webkitUserSelect = "none"; - - if ( - Math.abs(userActionStatus.x - evt.clientX) > offsetOfTableCell || - Math.abs(userActionStatus.y - evt.clientY) > offsetOfTableCell - ) { - clearTableDragTimer(); - isInResizeBuffer = false; - singleClickState = 0; - //drag action - tableBorderDrag(evt); - } - } - - //修改单元格大小时的鼠标移动 - if (onDrag && dragTd) { - singleClickState = 0; - me.body.style.webkitUserSelect = "none"; - me.selection.getNative()[ - browser.ie9below ? "empty" : "removeAllRanges" - ](); - pos = mouseCoords(evt); - toggleDraggableState(me, true, onDrag, pos, target); - if (onDrag == "h") { - dragLine.style.left = getPermissionX(dragTd, evt) + "px"; - } else if (onDrag == "v") { - dragLine.style.top = getPermissionY(dragTd, evt) + "px"; - } - return; - } - //当鼠标处于table上时,修改移动过程中的光标状态 - if (target) { - //针对使用table作为容器的组件不触发拖拽效果 - if (me.fireEvent("excludetable", target) === true) return; - pos = mouseCoords(evt); - var state = getRelation(target, pos), - table = domUtils.findParentByTagName(target, "table", true); - - if (inTableSide(table, target, evt, true)) { - if (me.fireEvent("excludetable", table) === true) return; - me.body.style.cursor = - "url(" + me.options.cursorpath + "h.png),pointer"; - } else if (inTableSide(table, target, evt)) { - if (me.fireEvent("excludetable", table) === true) return; - me.body.style.cursor = - "url(" + me.options.cursorpath + "v.png),pointer"; - } else { - me.body.style.cursor = "text"; - var curCell = target; - if (/\d/.test(state)) { - state = state.replace(/\d/, ""); - target = getUETable(target).getPreviewCell(target, state == "v"); - } - //位于第一行的顶部或者第一列的左边时不可拖动 - toggleDraggableState( - me, - target ? !!state : false, - target ? state : "", - pos, - target - ); - } - } else { - toggleDragButton(false, table, me); - } - } catch (e) { - showError(e); - } - } - - var dragButtonTimer; - - function toggleDragButton(show, table, editor) { - if (!show) { - if (dragOver) return; - dragButtonTimer = setTimeout(function() { - !dragOver && - dragButton && - dragButton.parentNode && - dragButton.parentNode.removeChild(dragButton); - }, 2000); - } else { - createDragButton(table, editor); - } - } - - function createDragButton(table, editor) { - var pos = domUtils.getXY(table), - doc = table.ownerDocument; - if (dragButton && dragButton.parentNode) return dragButton; - dragButton = doc.createElement("div"); - dragButton.contentEditable = false; - dragButton.innerHTML = ""; - dragButton.style.cssText = - "width:15px;height:15px;background-image:url(" + - editor.options.UEDITOR_HOME_URL + - "dialogs/table/dragicon.png);position: absolute;cursor:move;top:" + - (pos.y - 15) + - "px;left:" + - pos.x + - "px;"; - domUtils.unSelectable(dragButton); - dragButton.onmouseover = function(evt) { - dragOver = true; - }; - dragButton.onmouseout = function(evt) { - dragOver = false; - }; - domUtils.on(dragButton, "click", function(type, evt) { - doClick(evt, this); - }); - domUtils.on(dragButton, "dblclick", function(type, evt) { - doDblClick(evt); - }); - domUtils.on(dragButton, "dragstart", function(type, evt) { - domUtils.preventDefault(evt); - }); - var timer; - - function doClick(evt, button) { - // 部分浏览器下需要清理 - clearTimeout(timer); - timer = setTimeout(function() { - editor.fireEvent("tableClicked", table, button); - }, 300); - } - - function doDblClick(evt) { - clearTimeout(timer); - var ut = getUETable(table), - start = table.rows[0].cells[0], - end = ut.getLastCell(), - range = ut.getCellsRange(start, end); - editor.selection.getRange().setStart(start, 0).setCursor(false, true); - ut.setSelected(range); - } - - doc.body.appendChild(dragButton); - } - - // function inPosition(table, pos) { - // var tablePos = domUtils.getXY(table), - // width = table.offsetWidth, - // height = table.offsetHeight; - // if (pos.x - tablePos.x < 5 && pos.y - tablePos.y < 5) { - // return "topLeft"; - // } else if (tablePos.x + width - pos.x < 5 && tablePos.y + height - pos.y < 5) { - // return "bottomRight"; - // } - // } - - function inTableSide(table, cell, evt, top) { - var pos = mouseCoords(evt), - state = getRelation(cell, pos); - - if (top) { - var caption = table.getElementsByTagName("caption")[0], - capHeight = caption ? caption.offsetHeight : 0; - return state == "v1" && pos.y - domUtils.getXY(table).y - capHeight < 8; - } else { - return state == "h1" && pos.x - domUtils.getXY(table).x < 8; - } - } - - /** - * 获取拖动时允许的X轴坐标 - * @param dragTd - * @param evt - */ - function getPermissionX(dragTd, evt) { - var ut = getUETable(dragTd); - if (ut) { - var preTd = ut.getSameEndPosCells(dragTd, "x")[0], - nextTd = ut.getSameStartPosXCells(dragTd)[0], - mouseX = mouseCoords(evt).x, - left = - (preTd ? domUtils.getXY(preTd).x : domUtils.getXY(ut.table).x) + 20, - right = nextTd - ? domUtils.getXY(nextTd).x + nextTd.offsetWidth - 20 - : me.body.offsetWidth + 5 || - parseInt(domUtils.getComputedStyle(me.body, "width"), 10); - - left += cellMinWidth; - right -= cellMinWidth; - - return mouseX < left ? left : mouseX > right ? right : mouseX; - } - } - - /** - * 获取拖动时允许的Y轴坐标 - */ - function getPermissionY(dragTd, evt) { - try { - var top = domUtils.getXY(dragTd).y, - mousePosY = mouseCoords(evt).y; - return mousePosY < top ? top : mousePosY; - } catch (e) { - showError(e); - } - } - - /** - * 移动状态切换 - */ - function toggleDraggableState(editor, draggable, dir, mousePos, cell) { - try { - editor.body.style.cursor = dir == "h" - ? "col-resize" - : dir == "v" ? "row-resize" : "text"; - if (browser.ie) { - if (dir && !mousedown && !getUETableBySelected(editor)) { - getDragLine(editor, editor.document); - showDragLineAt(dir, cell); - } else { - hideDragLine(editor); - } - } - onBorder = draggable; - } catch (e) { - showError(e); - } - } - - /** - * 获取与UETable相关的resize line - * @param uetable UETable对象 - */ - function getResizeLineByUETable() { - var lineId = "_UETableResizeLine", - line = this.document.getElementById(lineId); - - if (!line) { - line = this.document.createElement("div"); - line.id = lineId; - line.contnetEditable = false; - line.setAttribute("unselectable", "on"); - - var styles = { - width: 2 * cellBorderWidth + 1 + "px", - position: "absolute", - "z-index": 100000, - cursor: "col-resize", - background: "red", - display: "none" - }; - - //切换状态 - line.onmouseout = function() { - this.style.display = "none"; - }; - - utils.extend(line.style, styles); - - this.document.body.appendChild(line); - } - - return line; - } - - /** - * 更新resize-line - */ - function updateResizeLine(cell, uetable) { - var line = getResizeLineByUETable.call(this), - table = uetable.table, - styles = { - top: domUtils.getXY(table).y + "px", - left: - domUtils.getXY(cell).x + cell.offsetWidth - cellBorderWidth + "px", - display: "block", - height: table.offsetHeight + "px" - }; - - utils.extend(line.style, styles); - } - - /** - * 显示resize-line - */ - function showResizeLine(cell) { - var uetable = getUETable(cell); - - updateResizeLine.call(this, cell, uetable); - } - - /** - * 获取鼠标与当前单元格的相对位置 - * @param ele - * @param mousePos - */ - function getRelation(ele, mousePos) { - var elePos = domUtils.getXY(ele); - - if (!elePos) { - return ""; - } - - if (elePos.x + ele.offsetWidth - mousePos.x < cellBorderWidth) { - return "h"; - } - if (mousePos.x - elePos.x < cellBorderWidth) { - return "h1"; - } - if (elePos.y + ele.offsetHeight - mousePos.y < cellBorderWidth) { - return "v"; - } - if (mousePos.y - elePos.y < cellBorderWidth) { - return "v1"; - } - return ""; - } - - function mouseDownEvent(type, evt) { - if (isEditorDisabled()) { - return; - } - - userActionStatus = { - x: evt.clientX, - y: evt.clientY - }; - - //右键菜单单独处理 - if (evt.button == 2) { - var ut = getUETableBySelected(me), - flag = false; - - if (ut) { - var td = getTargetTd(me, evt); - utils.each(ut.selectedTds, function(ti) { - if (ti === td) { - flag = true; - } - }); - if (!flag) { - removeSelectedClass(domUtils.getElementsByTagName(me.body, "th td")); - ut.clearSelected(); - } else { - td = ut.selectedTds[0]; - setTimeout(function() { - me.selection.getRange().setStart(td, 0).setCursor(false, true); - }, 0); - } - } - } else { - tableClickHander(evt); - } - } - - //清除表格的计时器 - function clearTableTimer() { - tabTimer && clearTimeout(tabTimer); - tabTimer = null; - } - - //双击收缩 - function tableDbclickHandler(evt) { - singleClickState = 0; - evt = evt || me.window.event; - var target = getParentTdOrTh(evt.target || evt.srcElement); - if (target) { - var h; - if ((h = getRelation(target, mouseCoords(evt)))) { - hideDragLine(me); - - if (h == "h1") { - h = "h"; - if ( - inTableSide( - domUtils.findParentByTagName(target, "table"), - target, - evt - ) - ) { - me.execCommand("adaptbywindow"); - } else { - target = getUETable(target).getPreviewCell(target); - if (target) { - var rng = me.selection.getRange(); - rng.selectNodeContents(target).setCursor(true, true); - } - } - } - if (h == "h") { - var ut = getUETable(target), - table = ut.table, - cells = getCellsByMoveBorder(target, table, true); - - cells = extractArray(cells, "left"); - - ut.width = ut.offsetWidth; - - var oldWidth = [], - newWidth = []; - - utils.each(cells, function(cell) { - oldWidth.push(cell.offsetWidth); - }); - - utils.each(cells, function(cell) { - cell.removeAttribute("width"); - }); - - window.setTimeout(function() { - //是否允许改变 - var changeable = true; - - utils.each(cells, function(cell, index) { - var width = cell.offsetWidth; - - if (width > oldWidth[index]) { - changeable = false; - return false; - } - - newWidth.push(width); - }); - - var change = changeable ? newWidth : oldWidth; - - utils.each(cells, function(cell, index) { - cell.width = change[index] - getTabcellSpace(); - }); - }, 0); - - // minWidth -= cellMinWidth; - // - // table.removeAttribute("width"); - // utils.each(cells, function (cell) { - // cell.style.width = ""; - // cell.width -= minWidth; - // }); - } - } - } - } - - function tableClickHander(evt) { - removeSelectedClass(domUtils.getElementsByTagName(me.body, "td th")); - //trace:3113 - //选中单元格,点击table外部,不会清掉table上挂的ueTable,会引起getUETableBySelected方法返回值 - utils.each(me.document.getElementsByTagName("table"), function(t) { - t.ueTable = null; - }); - startTd = getTargetTd(me, evt); - if (!startTd) return; - var table = domUtils.findParentByTagName(startTd, "table", true); - ut = getUETable(table); - ut && ut.clearSelected(); - - //判断当前鼠标状态 - if (!onBorder) { - me.document.body.style.webkitUserSelect = ""; - mousedown = true; - me.addListener("mouseover", mouseOverEvent); - } else { - //边框上的动作处理 - borderActionHandler(evt); - } - } - - //处理表格边框上的动作, 这里做延时处理,避免两种动作互相影响 - function borderActionHandler(evt) { - if (browser.ie) { - evt = reconstruct(evt); - } - - clearTableDragTimer(); - - //是否正在等待resize的缓冲中 - isInResizeBuffer = true; - - tableDragTimer = setTimeout(function() { - tableBorderDrag(evt); - }, dblclickTime); - } - - function extractArray(originArr, key) { - var result = [], - tmp = null; - - for (var i = 0, len = originArr.length; i < len; i++) { - tmp = originArr[i][key]; - - if (tmp) { - result.push(tmp); - } - } - - return result; - } - - function clearTableDragTimer() { - tableDragTimer && clearTimeout(tableDragTimer); - tableDragTimer = null; - } - - function reconstruct(obj) { - var attrs = [ - "pageX", - "pageY", - "clientX", - "clientY", - "srcElement", - "target" - ], - newObj = {}; - - if (obj) { - for (var i = 0, key, val; (key = attrs[i]); i++) { - val = obj[key]; - val && (newObj[key] = val); - } - } - - return newObj; - } - - //边框拖动 - function tableBorderDrag(evt) { - isInResizeBuffer = false; - - startTd = evt.target || evt.srcElement; - if (!startTd) return; - var state = getRelation(startTd, mouseCoords(evt)); - if (/\d/.test(state)) { - state = state.replace(/\d/, ""); - startTd = getUETable(startTd).getPreviewCell(startTd, state == "v"); - } - hideDragLine(me); - getDragLine(me, me.document); - me.fireEvent("saveScene"); - showDragLineAt(state, startTd); - mousedown = true; - //拖动开始 - onDrag = state; - dragTd = startTd; - } - - function mouseUpEvent(type, evt) { - if (isEditorDisabled()) { - return; - } - - clearTableDragTimer(); - - isInResizeBuffer = false; - - if (onBorder) { - singleClickState = ++singleClickState % 3; - - userActionStatus = { - x: evt.clientX, - y: evt.clientY - }; - - tableResizeTimer = setTimeout(function() { - singleClickState > 0 && singleClickState--; - }, dblclickTime); - - if (singleClickState === 2) { - singleClickState = 0; - tableDbclickHandler(evt); - return; - } - } - - if (evt.button == 2) return; - var me = this; - //清除表格上原生跨选问题 - var range = me.selection.getRange(), - start = domUtils.findParentByTagName(range.startContainer, "table", true), - end = domUtils.findParentByTagName(range.endContainer, "table", true); - - if (start || end) { - if (start === end) { - start = domUtils.findParentByTagName( - range.startContainer, - ["td", "th", "caption"], - true - ); - end = domUtils.findParentByTagName( - range.endContainer, - ["td", "th", "caption"], - true - ); - if (start !== end) { - me.selection.clearRange(); - } - } else { - me.selection.clearRange(); - } - } - mousedown = false; - me.document.body.style.webkitUserSelect = ""; - //拖拽状态下的mouseUP - if (onDrag && dragTd) { - me.selection.getNative()[ - browser.ie9below ? "empty" : "removeAllRanges" - ](); - - singleClickState = 0; - dragLine = me.document.getElementById("ue_tableDragLine"); - - // trace 3973 - if (dragLine) { - var dragTdPos = domUtils.getXY(dragTd), - dragLinePos = domUtils.getXY(dragLine); - - switch (onDrag) { - case "h": - changeColWidth(dragTd, dragLinePos.x - dragTdPos.x); - break; - case "v": - changeRowHeight( - dragTd, - dragLinePos.y - dragTdPos.y - dragTd.offsetHeight - ); - break; - default: - } - onDrag = ""; - dragTd = null; - - hideDragLine(me); - me.fireEvent("saveScene"); - return; - } - } - //正常状态下的mouseup - if (!startTd) { - var target = domUtils.findParentByTagName( - evt.target || evt.srcElement, - "td", - true - ); - if (!target) - target = domUtils.findParentByTagName( - evt.target || evt.srcElement, - "th", - true - ); - if (target && (target.tagName == "TD" || target.tagName == "TH")) { - if (me.fireEvent("excludetable", target) === true) return; - range = new dom.Range(me.document); - range.setStart(target, 0).setCursor(false, true); - } - } else { - var ut = getUETable(startTd), - cell = ut ? ut.selectedTds[0] : null; - if (cell) { - range = new dom.Range(me.document); - if (domUtils.isEmptyBlock(cell)) { - range.setStart(cell, 0).setCursor(false, true); - } else { - range - .selectNodeContents(cell) - .shrinkBoundary() - .setCursor(false, true); - } - } else { - range = me.selection.getRange().shrinkBoundary(); - if (!range.collapsed) { - var start = domUtils.findParentByTagName( - range.startContainer, - ["td", "th"], - true - ), - end = domUtils.findParentByTagName( - range.endContainer, - ["td", "th"], - true - ); - //在table里边的不能清除 - if ( - (start && !end) || - (!start && end) || - (start && end && start !== end) - ) { - range.setCursor(false, true); - } - } - } - startTd = null; - me.removeListener("mouseover", mouseOverEvent); - } - me._selectionChange(250, evt); - } - - function mouseOverEvent(type, evt) { - if (isEditorDisabled()) { - return; - } - - var me = this, - tar = evt.target || evt.srcElement; - currentTd = - domUtils.findParentByTagName(tar, "td", true) || - domUtils.findParentByTagName(tar, "th", true); - //需要判断两个TD是否位于同一个表格内 - if ( - startTd && - currentTd && - ((startTd.tagName == "TD" && currentTd.tagName == "TD") || - (startTd.tagName == "TH" && currentTd.tagName == "TH")) && - domUtils.findParentByTagName(startTd, "table") == - domUtils.findParentByTagName(currentTd, "table") - ) { - var ut = getUETable(currentTd); - if (startTd != currentTd) { - me.document.body.style.webkitUserSelect = "none"; - me.selection.getNative()[ - browser.ie9below ? "empty" : "removeAllRanges" - ](); - var range = ut.getCellsRange(startTd, currentTd); - ut.setSelected(range); - } else { - me.document.body.style.webkitUserSelect = ""; - ut.clearSelected(); - } - } - evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); - } - - function setCellHeight(cell, height, backHeight) { - var lineHight = parseInt( - domUtils.getComputedStyle(cell, "line-height"), - 10 - ), - tmpHeight = backHeight + height; - height = tmpHeight < lineHight ? lineHight : tmpHeight; - if (cell.style.height) cell.style.height = ""; - cell.rowSpan == 1 - ? cell.setAttribute("height", height) - : cell.removeAttribute && cell.removeAttribute("height"); - } - - function getWidth(cell) { - if (!cell) return 0; - return parseInt(domUtils.getComputedStyle(cell, "width"), 10); - } - - function changeColWidth(cell, changeValue) { - var ut = getUETable(cell); - if (ut) { - //根据当前移动的边框获取相关的单元格 - var table = ut.table, - cells = getCellsByMoveBorder(cell, table); - - table.style.width = ""; - table.removeAttribute("width"); - - //修正改变量 - changeValue = correctChangeValue(changeValue, cell, cells); - - if (cell.nextSibling) { - var i = 0; - - utils.each(cells, function(cellGroup) { - cellGroup.left.width = +cellGroup.left.width + changeValue; - cellGroup.right && - (cellGroup.right.width = +cellGroup.right.width - changeValue); - }); - } else { - utils.each(cells, function(cellGroup) { - cellGroup.left.width -= -changeValue; - }); - } - } - } - - function isEditorDisabled() { - return me.body.contentEditable === "false"; - } - - function changeRowHeight(td, changeValue) { - if (Math.abs(changeValue) < 10) return; - var ut = getUETable(td); - if (ut) { - var cells = ut.getSameEndPosCells(td, "y"), - //备份需要连带变化的td的原始高度,否则后期无法获取正确的值 - backHeight = cells[0] ? cells[0].offsetHeight : 0; - for (var i = 0, cell; (cell = cells[i++]); ) { - setCellHeight(cell, changeValue, backHeight); - } - } - } - - /** - * 获取调整单元格大小的相关单元格 - * @isContainMergeCell 返回的结果中是否包含发生合并后的单元格 - */ - function getCellsByMoveBorder(cell, table, isContainMergeCell) { - if (!table) { - table = domUtils.findParentByTagName(cell, "table"); - } - - if (!table) { - return null; - } - - //获取到该单元格所在行的序列号 - var index = domUtils.getNodeIndex(cell), - temp = cell, - rows = table.rows, - colIndex = 0; - - while (temp) { - //获取到当前单元格在未发生单元格合并时的序列 - if (temp.nodeType === 1) { - colIndex += temp.colSpan || 1; - } - temp = temp.previousSibling; - } - - temp = null; - - //记录想关的单元格 - var borderCells = []; - - utils.each(rows, function(tabRow) { - var cells = tabRow.cells, - currIndex = 0; - - utils.each(cells, function(tabCell) { - currIndex += tabCell.colSpan || 1; - - if (currIndex === colIndex) { - borderCells.push({ - left: tabCell, - right: tabCell.nextSibling || null - }); - - return false; - } else if (currIndex > colIndex) { - if (isContainMergeCell) { - borderCells.push({ - left: tabCell - }); - } - - return false; - } - }); - }); - - return borderCells; - } - - /** - * 通过给定的单元格集合获取最小的单元格width - */ - function getMinWidthByTableCells(cells) { - var minWidth = Number.MAX_VALUE; - - for (var i = 0, curCell; (curCell = cells[i]); i++) { - minWidth = Math.min( - minWidth, - curCell.width || getTableCellWidth(curCell) - ); - } - - return minWidth; - } - - function correctChangeValue(changeValue, relatedCell, cells) { - //为单元格的paading预留空间 - changeValue -= getTabcellSpace(); - - if (changeValue < 0) { - return 0; - } - - changeValue -= getTableCellWidth(relatedCell); - - //确定方向 - var direction = changeValue < 0 ? "left" : "right"; - - changeValue = Math.abs(changeValue); - - //只关心非最后一个单元格就可以 - utils.each(cells, function(cellGroup) { - var curCell = cellGroup[direction]; - - //为单元格保留最小空间 - if (curCell) { - changeValue = Math.min( - changeValue, - getTableCellWidth(curCell) - cellMinWidth - ); - } - }); - - //修正越界 - changeValue = changeValue < 0 ? 0 : changeValue; - - return direction === "left" ? -changeValue : changeValue; - } - - function getTableCellWidth(cell) { - var width = 0, - //偏移纠正量 - offset = 0, - width = cell.offsetWidth - getTabcellSpace(); - - //最后一个节点纠正一下 - if (!cell.nextSibling) { - width -= getTableCellOffset(cell); - } - - width = width < 0 ? 0 : width; - - try { - cell.width = width; - } catch (e) {} - - return width; - } - - /** - * 获取单元格所在表格的最末单元格的偏移量 - */ - function getTableCellOffset(cell) { - tab = domUtils.findParentByTagName(cell, "table", false); - - if (tab.offsetVal === undefined) { - var prev = cell.previousSibling; - - if (prev) { - //最后一个单元格和前一个单元格的width diff结果 如果恰好为一个border width, 则条件成立 - tab.offsetVal = cell.offsetWidth - prev.offsetWidth === UT.borderWidth - ? UT.borderWidth - : 0; - } else { - tab.offsetVal = 0; - } - } - - return tab.offsetVal; - } - - function getTabcellSpace() { - if (UT.tabcellSpace === undefined) { - var cell = null, - tab = me.document.createElement("table"), - tbody = me.document.createElement("tbody"), - trow = me.document.createElement("tr"), - tabcell = me.document.createElement("td"), - mirror = null; - - tabcell.style.cssText = "border: 0;"; - tabcell.width = 1; - - trow.appendChild(tabcell); - trow.appendChild((mirror = tabcell.cloneNode(false))); - - tbody.appendChild(trow); - - tab.appendChild(tbody); - - tab.style.cssText = "visibility: hidden;"; - - me.body.appendChild(tab); - - UT.paddingSpace = tabcell.offsetWidth - 1; - - var tmpTabWidth = tab.offsetWidth; - - tabcell.style.cssText = ""; - mirror.style.cssText = ""; - - UT.borderWidth = (tab.offsetWidth - tmpTabWidth) / 3; - - UT.tabcellSpace = UT.paddingSpace + UT.borderWidth; - - me.body.removeChild(tab); - } - - getTabcellSpace = function() { - return UT.tabcellSpace; - }; - - return UT.tabcellSpace; - } - - function getDragLine(editor, doc) { - if (mousedown) return; - dragLine = editor.document.createElement("div"); - domUtils.setAttributes(dragLine, { - id: "ue_tableDragLine", - unselectable: "on", - contenteditable: false, - onresizestart: "return false", - ondragstart: "return false", - onselectstart: "return false", - style: - "background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)" - }); - editor.body.appendChild(dragLine); - } - - function hideDragLine(editor) { - if (mousedown) return; - var line; - while ((line = editor.document.getElementById("ue_tableDragLine"))) { - domUtils.remove(line); - } - } - - /** - * 依据state(v|h)在cell位置显示横线 - * @param state - * @param cell - */ - function showDragLineAt(state, cell) { - if (!cell) return; - var table = domUtils.findParentByTagName(cell, "table"), - caption = table.getElementsByTagName("caption"), - width = table.offsetWidth, - height = - table.offsetHeight - (caption.length > 0 ? caption[0].offsetHeight : 0), - tablePos = domUtils.getXY(table), - cellPos = domUtils.getXY(cell), - css; - switch (state) { - case "h": - css = - "height:" + - height + - "px;top:" + - (tablePos.y + (caption.length > 0 ? caption[0].offsetHeight : 0)) + - "px;left:" + - (cellPos.x + cell.offsetWidth); - dragLine.style.cssText = - css + - "px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)"; - break; - case "v": - css = - "width:" + - width + - "px;left:" + - tablePos.x + - "px;top:" + - (cellPos.y + cell.offsetHeight); - //必须加上border:0和color:blue,否则低版ie不支持背景色显示 - dragLine.style.cssText = - css + - "px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)"; - break; - default: - } - } - - /** - * 当表格边框颜色为白色时设置为虚线,true为添加虚线 - * @param editor - * @param flag - */ - function switchBorderColor(editor, flag) { - var tableArr = domUtils.getElementsByTagName(editor.body, "table"), - color; - for (var i = 0, node; (node = tableArr[i++]); ) { - var td = domUtils.getElementsByTagName(node, "td"); - if (td[0]) { - if (flag) { - color = td[0].style.borderColor.replace(/\s/g, ""); - if (/(#ffffff)|(rgb\(255,255,255\))/gi.test(color)) - domUtils.addClass(node, "noBorderTable"); - } else { - domUtils.removeClasses(node, "noBorderTable"); - } - } - } - } - - function getTableWidth(editor, needIEHack, defaultValue) { - var body = editor.body; - return ( - body.offsetWidth - - (needIEHack - ? parseInt(domUtils.getComputedStyle(body, "margin-left"), 10) * 2 - : 0) - - defaultValue.tableBorder * 2 - - (editor.options.offsetWidth || 0) - ); - } - - /** - * 获取当前拖动的单元格 - */ - function getTargetTd(editor, evt) { - var target = domUtils.findParentByTagName( - evt.target || evt.srcElement, - ["td", "th"], - true - ), - dir = null; - - if (!target) { - return null; - } - - dir = getRelation(target, mouseCoords(evt)); - - //如果有前一个节点, 需要做一个修正, 否则可能会得到一个错误的td - - if (!target) { - return null; - } - - if (dir === "h1" && target.previousSibling) { - var position = domUtils.getXY(target), - cellWidth = target.offsetWidth; - - if (Math.abs(position.x + cellWidth - evt.clientX) > cellWidth / 3) { - target = target.previousSibling; - } - } else if (dir === "v1" && target.parentNode.previousSibling) { - var position = domUtils.getXY(target), - cellHeight = target.offsetHeight; - - if (Math.abs(position.y + cellHeight - evt.clientY) > cellHeight / 3) { - target = target.parentNode.previousSibling.firstChild; - } - } - - //排除了非td内部以及用于代码高亮部分的td - return target && !(editor.fireEvent("excludetable", target) === true) - ? target - : null; - } -}; - - -// plugins/table.sort.js -/** - * Created with JetBrains PhpStorm. - * User: Jinqn - * Date: 13-10-12 - * Time: 上午10:20 - * To change this template use File | Settings | File Templates. - */ - -UE.UETable.prototype.sortTable = function(sortByCellIndex, compareFn) { - var table = this.table, - rows = table.rows, - trArray = [], - flag = rows[0].cells[0].tagName === "TH", - lastRowIndex = 0; - if (this.selectedTds.length) { - var range = this.cellsRange, - len = range.endRowIndex + 1; - for (var i = range.beginRowIndex; i < len; i++) { - trArray[i] = rows[i]; - } - trArray.splice(0, range.beginRowIndex); - lastRowIndex = range.endRowIndex + 1 === this.rowsNum - ? 0 - : range.endRowIndex + 1; - } else { - for (var i = 0, len = rows.length; i < len; i++) { - trArray[i] = rows[i]; - } - } - - var Fn = { - reversecurrent: function(td1, td2) { - return 1; - }, - orderbyasc: function(td1, td2) { - var value1 = td1.innerText || td1.textContent, - value2 = td2.innerText || td2.textContent; - return value1.localeCompare(value2); - }, - reversebyasc: function(td1, td2) { - var value1 = td1.innerHTML, - value2 = td2.innerHTML; - return value2.localeCompare(value1); - }, - orderbynum: function(td1, td2) { - var value1 = td1[browser.ie ? "innerText" : "textContent"].match(/\d+/), - value2 = td2[browser.ie ? "innerText" : "textContent"].match(/\d+/); - if (value1) value1 = +value1[0]; - if (value2) value2 = +value2[0]; - return (value1 || 0) - (value2 || 0); - }, - reversebynum: function(td1, td2) { - var value1 = td1[browser.ie ? "innerText" : "textContent"].match(/\d+/), - value2 = td2[browser.ie ? "innerText" : "textContent"].match(/\d+/); - if (value1) value1 = +value1[0]; - if (value2) value2 = +value2[0]; - return (value2 || 0) - (value1 || 0); - } - }; - - //对表格设置排序的标记data-sort-type - table.setAttribute( - "data-sort-type", - compareFn && typeof compareFn === "string" && Fn[compareFn] ? compareFn : "" - ); - - //th不参与排序 - flag && trArray.splice(0, 1); - trArray = utils.sort(trArray, function(tr1, tr2) { - var result; - if (compareFn && typeof compareFn === "function") { - result = compareFn.call( - this, - tr1.cells[sortByCellIndex], - tr2.cells[sortByCellIndex] - ); - } else if (compareFn && typeof compareFn === "number") { - result = 1; - } else if (compareFn && typeof compareFn === "string" && Fn[compareFn]) { - result = Fn[compareFn].call( - this, - tr1.cells[sortByCellIndex], - tr2.cells[sortByCellIndex] - ); - } else { - result = Fn["orderbyasc"].call( - this, - tr1.cells[sortByCellIndex], - tr2.cells[sortByCellIndex] - ); - } - return result; - }); - var fragment = table.ownerDocument.createDocumentFragment(); - for (var j = 0, len = trArray.length; j < len; j++) { - fragment.appendChild(trArray[j]); - } - var tbody = table.getElementsByTagName("tbody")[0]; - if (!lastRowIndex) { - tbody.appendChild(fragment); - } else { - tbody.insertBefore( - fragment, - rows[lastRowIndex - range.endRowIndex + range.beginRowIndex - 1] - ); - } -}; - -UE.plugins["tablesort"] = function() { - var me = this, - UT = UE.UETable, - getUETable = function(tdOrTable) { - return UT.getUETable(tdOrTable); - }, - getTableItemsByRange = function(editor) { - return UT.getTableItemsByRange(editor); - }; - - me.ready(function() { - //添加表格可排序的样式 - utils.cssRule( - "tablesort", - "table.sortEnabled tr.firstRow th,table.sortEnabled tr.firstRow td{padding-right:20px;background-repeat: no-repeat;background-position: center right;" + - " background-image:url(" + - me.options.themePath + - me.options.theme + - "/images/sortable.png);}", - me.document - ); - - //做单元格合并操作时,清除可排序标识 - me.addListener("afterexeccommand", function(type, cmd) { - if (cmd == "mergeright" || cmd == "mergedown" || cmd == "mergecells") { - this.execCommand("disablesort"); - } - }); - }); - - //表格排序 - UE.commands["sorttable"] = { - queryCommandState: function() { - var me = this, - tableItems = getTableItemsByRange(me); - if (!tableItems.cell) return -1; - var table = tableItems.table, - cells = table.getElementsByTagName("td"); - for (var i = 0, cell; (cell = cells[i++]); ) { - if (cell.rowSpan != 1 || cell.colSpan != 1) return -1; - } - return 0; - }, - execCommand: function(cmd, fn) { - var me = this, - range = me.selection.getRange(), - bk = range.createBookmark(true), - tableItems = getTableItemsByRange(me), - cell = tableItems.cell, - ut = getUETable(tableItems.table), - cellInfo = ut.getCellInfo(cell); - ut.sortTable(cellInfo.cellIndex, fn); - range.moveToBookmark(bk); - try { - range.select(); - } catch (e) {} - } - }; - - //设置表格可排序,清除表格可排序 - UE.commands["enablesort"] = UE.commands["disablesort"] = { - queryCommandState: function(cmd) { - var table = getTableItemsByRange(this).table; - if (table && cmd == "enablesort") { - var cells = domUtils.getElementsByTagName(table, "th td"); - for (var i = 0; i < cells.length; i++) { - if ( - cells[i].getAttribute("colspan") > 1 || - cells[i].getAttribute("rowspan") > 1 - ) - return -1; - } - } - - return !table - ? -1 - : (cmd == "enablesort") ^ - (table.getAttribute("data-sort") != "sortEnabled") - ? -1 - : 0; - }, - execCommand: function(cmd) { - var table = getTableItemsByRange(this).table; - table.setAttribute( - "data-sort", - cmd == "enablesort" ? "sortEnabled" : "sortDisabled" - ); - cmd == "enablesort" - ? domUtils.addClass(table, "sortEnabled") - : domUtils.removeClasses(table, "sortEnabled"); - } - }; -}; - - -// plugins/contextmenu.js -///import core -///commands 右键菜单 -///commandsName ContextMenu -///commandsTitle 右键菜单 -/** - * 右键菜单 - * @function - * @name baidu.editor.plugins.contextmenu - * @author zhanyi - */ - -UE.plugins["contextmenu"] = function() { - var me = this; - - me.setOpt("enableContextMenu", me.getOpt("enableContextMenu") || true); - - if (me.getOpt("enableContextMenu") === false) { - return; - } - var lang = me.getLang("contextMenu"), - menu, - items = me.options.contextMenu || [ - { label: lang["selectall"], cmdName: "selectall" }, - { - label: lang.cleardoc, - cmdName: "cleardoc", - exec: function() { - if (confirm(lang.confirmclear)) { - this.execCommand("cleardoc"); - } - } - }, - "-", - { - label: lang.unlink, - cmdName: "unlink" - }, - "-", - { - group: lang.paragraph, - icon: "justifyjustify", - subMenu: [ - { - label: lang.justifyleft, - cmdName: "justify", - value: "left" - }, - { - label: lang.justifyright, - cmdName: "justify", - value: "right" - }, - { - label: lang.justifycenter, - cmdName: "justify", - value: "center" - }, - { - label: lang.justifyjustify, - cmdName: "justify", - value: "justify" - } - ] - }, - "-", - { - group: lang.table, - icon: "table", - subMenu: [ - { - label: lang.inserttable, - cmdName: "inserttable" - }, - { - label: lang.deletetable, - cmdName: "deletetable" - }, - "-", - { - label: lang.deleterow, - cmdName: "deleterow" - }, - { - label: lang.deletecol, - cmdName: "deletecol" - }, - { - label: lang.insertcol, - cmdName: "insertcol" - }, - { - label: lang.insertcolnext, - cmdName: "insertcolnext" - }, - { - label: lang.insertrow, - cmdName: "insertrow" - }, - { - label: lang.insertrownext, - cmdName: "insertrownext" - }, - "-", - { - label: lang.insertcaption, - cmdName: "insertcaption" - }, - { - label: lang.deletecaption, - cmdName: "deletecaption" - }, - { - label: lang.inserttitle, - cmdName: "inserttitle" - }, - { - label: lang.deletetitle, - cmdName: "deletetitle" - }, - { - label: lang.inserttitlecol, - cmdName: "inserttitlecol" - }, - { - label: lang.deletetitlecol, - cmdName: "deletetitlecol" - }, - "-", - { - label: lang.mergecells, - cmdName: "mergecells" - }, - { - label: lang.mergeright, - cmdName: "mergeright" - }, - { - label: lang.mergedown, - cmdName: "mergedown" - }, - "-", - { - label: lang.splittorows, - cmdName: "splittorows" - }, - { - label: lang.splittocols, - cmdName: "splittocols" - }, - { - label: lang.splittocells, - cmdName: "splittocells" - }, - "-", - { - label: lang.averageDiseRow, - cmdName: "averagedistributerow" - }, - { - label: lang.averageDisCol, - cmdName: "averagedistributecol" - }, - "-", - { - label: lang.edittd, - cmdName: "edittd", - exec: function() { - if (UE.ui["edittd"]) { - new UE.ui["edittd"](this); - } - this.getDialog("edittd").open(); - } - }, - { - label: lang.edittable, - cmdName: "edittable", - exec: function() { - if (UE.ui["edittable"]) { - new UE.ui["edittable"](this); - } - this.getDialog("edittable").open(); - } - }, - { - label: lang.setbordervisible, - cmdName: "setbordervisible" - } - ] - }, - { - group: lang.tablesort, - icon: "tablesort", - subMenu: [ - { - label: lang.enablesort, - cmdName: "enablesort" - }, - { - label: lang.disablesort, - cmdName: "disablesort" - }, - "-", - { - label: lang.reversecurrent, - cmdName: "sorttable", - value: "reversecurrent" - }, - { - label: lang.orderbyasc, - cmdName: "sorttable", - value: "orderbyasc" - }, - { - label: lang.reversebyasc, - cmdName: "sorttable", - value: "reversebyasc" - }, - { - label: lang.orderbynum, - cmdName: "sorttable", - value: "orderbynum" - }, - { - label: lang.reversebynum, - cmdName: "sorttable", - value: "reversebynum" - } - ] - }, - { - group: lang.borderbk, - icon: "borderBack", - subMenu: [ - { - label: lang.setcolor, - cmdName: "interlacetable", - exec: function() { - this.execCommand("interlacetable"); - } - }, - { - label: lang.unsetcolor, - cmdName: "uninterlacetable", - exec: function() { - this.execCommand("uninterlacetable"); - } - }, - { - label: lang.setbackground, - cmdName: "settablebackground", - exec: function() { - this.execCommand("settablebackground", { - repeat: true, - colorList: ["#bbb", "#ccc"] - }); - } - }, - { - label: lang.unsetbackground, - cmdName: "cleartablebackground", - exec: function() { - this.execCommand("cleartablebackground"); - } - }, - { - label: lang.redandblue, - cmdName: "settablebackground", - exec: function() { - this.execCommand("settablebackground", { - repeat: true, - colorList: ["red", "blue"] - }); - } - }, - { - label: lang.threecolorgradient, - cmdName: "settablebackground", - exec: function() { - this.execCommand("settablebackground", { - repeat: true, - colorList: ["#aaa", "#bbb", "#ccc"] - }); - } - } - ] - }, - { - group: lang.aligntd, - icon: "aligntd", - subMenu: [ - { - cmdName: "cellalignment", - value: { align: "left", vAlign: "top" } - }, - { - cmdName: "cellalignment", - value: { align: "center", vAlign: "top" } - }, - { - cmdName: "cellalignment", - value: { align: "right", vAlign: "top" } - }, - { - cmdName: "cellalignment", - value: { align: "left", vAlign: "middle" } - }, - { - cmdName: "cellalignment", - value: { align: "center", vAlign: "middle" } - }, - { - cmdName: "cellalignment", - value: { align: "right", vAlign: "middle" } - }, - { - cmdName: "cellalignment", - value: { align: "left", vAlign: "bottom" } - }, - { - cmdName: "cellalignment", - value: { align: "center", vAlign: "bottom" } - }, - { - cmdName: "cellalignment", - value: { align: "right", vAlign: "bottom" } - } - ] - }, - { - group: lang.aligntable, - icon: "aligntable", - subMenu: [ - { - cmdName: "tablealignment", - className: "left", - label: lang.tableleft, - value: "left" - }, - { - cmdName: "tablealignment", - className: "center", - label: lang.tablecenter, - value: "center" - }, - { - cmdName: "tablealignment", - className: "right", - label: lang.tableright, - value: "right" - } - ] - }, - "-", - { - label: lang.insertparagraphbefore, - cmdName: "insertparagraph", - value: true - }, - { - label: lang.insertparagraphafter, - cmdName: "insertparagraph" - }, - { - label: lang["copy"], - cmdName: "copy" - }, - { - label: lang["paste"], - cmdName: "paste" - } - ]; - if (!items.length) { - return; - } - var uiUtils = UE.ui.uiUtils; - - me.addListener("contextmenu", function(type, evt) { - var offset = uiUtils.getViewportOffsetByEvent(evt); - me.fireEvent("beforeselectionchange"); - if (menu) { - menu.destroy(); - } - for (var i = 0, ti, contextItems = []; (ti = items[i]); i++) { - var last; - (function(item) { - if (item == "-") { - if ((last = contextItems[contextItems.length - 1]) && last !== "-") { - contextItems.push("-"); - } - } else if (item.hasOwnProperty("group")) { - for (var j = 0, cj, subMenu = []; (cj = item.subMenu[j]); j++) { - (function(subItem) { - if (subItem == "-") { - if ((last = subMenu[subMenu.length - 1]) && last !== "-") { - subMenu.push("-"); - } else { - subMenu.splice(subMenu.length - 1); - } - } else { - if ( - (me.commands[subItem.cmdName] || - UE.commands[subItem.cmdName] || - subItem.query) && - (subItem.query - ? subItem.query() - : me.queryCommandState(subItem.cmdName)) > -1 - ) { - subMenu.push({ - label: - subItem.label || - me.getLang( - "contextMenu." + - subItem.cmdName + - (subItem.value || "") - ) || - "", - className: - "edui-for-" + - subItem.cmdName + - (subItem.className - ? " edui-for-" + - subItem.cmdName + - "-" + - subItem.className - : ""), - onclick: subItem.exec - ? function() { - subItem.exec.call(me); - } - : function() { - me.execCommand(subItem.cmdName, subItem.value); - } - }); - } - } - })(cj); - } - if (subMenu.length) { - function getLabel() { - switch (item.icon) { - case "table": - return me.getLang("contextMenu.table"); - case "justifyjustify": - return me.getLang("contextMenu.paragraph"); - case "aligntd": - return me.getLang("contextMenu.aligntd"); - case "aligntable": - return me.getLang("contextMenu.aligntable"); - case "tablesort": - return lang.tablesort; - case "borderBack": - return lang.borderbk; - default: - return ""; - } - } - contextItems.push({ - //todo 修正成自动获取方式 - label: getLabel(), - className: "edui-for-" + item.icon, - subMenu: { - items: subMenu, - editor: me - } - }); - } - } else { - //有可能commmand没有加载右键不能出来,或者没有command也想能展示出来添加query方法 - if ( - (me.commands[item.cmdName] || - UE.commands[item.cmdName] || - item.query) && - (item.query - ? item.query.call(me) - : me.queryCommandState(item.cmdName)) > -1 - ) { - contextItems.push({ - label: item.label || me.getLang("contextMenu." + item.cmdName), - className: - "edui-for-" + - (item.icon ? item.icon : item.cmdName + (item.value || "")), - onclick: item.exec - ? function() { - item.exec.call(me); - } - : function() { - me.execCommand(item.cmdName, item.value); - } - }); - } - } - })(ti); - } - if (contextItems[contextItems.length - 1] == "-") { - contextItems.pop(); - } - - menu = new UE.ui.Menu({ - items: contextItems, - className: "edui-contextmenu", - editor: me - }); - menu.render(); - menu.showAt(offset); - - me.fireEvent("aftershowcontextmenu", menu); - - domUtils.preventDefault(evt); - if (browser.ie) { - var ieRange; - try { - ieRange = me.selection.getNative().createRange(); - } catch (e) { - return; - } - if (ieRange.item) { - var range = new dom.Range(me.document); - range.selectNode(ieRange.item(0)).select(true, true); - } - } - }); - - // 添加复制的flash按钮 - me.addListener("aftershowcontextmenu", function(type, menu) { - if (me.zeroclipboard) { - var items = menu.items; - for (var key in items) { - if (items[key].className == "edui-for-copy") { - me.zeroclipboard.clip(items[key].getDom()); - } - } - } - }); -}; - - -// plugins/shortcutmenu.js -///import core -///commands 弹出菜单 -// commandsName popupmenu -///commandsTitle 弹出菜单 -/** - * 弹出菜单 - * @function - * @name baidu.editor.plugins.popupmenu - * @author xuheng - */ - -UE.plugins["shortcutmenu"] = function() { - var me = this, - menu, - items = me.options.shortcutMenu || []; - - if (!items.length) { - return; - } - - me.addListener("contextmenu mouseup", function(type, e) { - var me = this, - customEvt = { - type: type, - target: e.target || e.srcElement, - screenX: e.screenX, - screenY: e.screenY, - clientX: e.clientX, - clientY: e.clientY - }; - - setTimeout(function() { - var rng = me.selection.getRange(); - if (rng.collapsed === false || type == "contextmenu") { - if (!menu) { - menu = new baidu.editor.ui.ShortCutMenu({ - editor: me, - items: items, - theme: me.options.theme, - className: "edui-shortcutmenu" - }); - - menu.render(); - me.fireEvent("afterrendershortcutmenu", menu); - } - - menu.show(customEvt, !!UE.plugins["contextmenu"]); - } - }); - - if (type == "contextmenu") { - domUtils.preventDefault(e); - if (browser.ie9below) { - var ieRange; - try { - ieRange = me.selection.getNative().createRange(); - } catch (e) { - return; - } - if (ieRange.item) { - var range = new dom.Range(me.document); - range.selectNode(ieRange.item(0)).select(true, true); - } - } - } - }); - - me.addListener("keydown", function(type) { - if (type == "keydown") { - menu && !menu.isHidden && menu.hide(); - } - }); -}; - - -// plugins/basestyle.js -/** - * B、I、sub、super命令支持 - * @file - * @since 1.2.6.1 - */ - -UE.plugins["basestyle"] = function() { - /** - * 字体加粗 - * @command bold - * @param { String } cmd 命令字符串 - * @remind 对已加粗的文本内容执行该命令, 将取消加粗 - * @method execCommand - * @example - * ```javascript - * //editor是编辑器实例 - * //对当前选中的文本内容执行加粗操作 - * //第一次执行, 文本内容加粗 - * editor.execCommand( 'bold' ); - * - * //第二次执行, 文本内容取消加粗 - * editor.execCommand( 'bold' ); - * ``` - */ - - /** - * 字体倾斜 - * @command italic - * @method execCommand - * @param { String } cmd 命令字符串 - * @remind 对已倾斜的文本内容执行该命令, 将取消倾斜 - * @example - * ```javascript - * //editor是编辑器实例 - * //对当前选中的文本内容执行斜体操作 - * //第一次操作, 文本内容将变成斜体 - * editor.execCommand( 'italic' ); - * - * //再次对同一文本内容执行, 则文本内容将恢复正常 - * editor.execCommand( 'italic' ); - * ``` - */ - - /** - * 下标文本,与“superscript”命令互斥 - * @command subscript - * @method execCommand - * @remind 把选中的文本内容切换成下标文本, 如果当前选中的文本已经是下标, 则该操作会把文本内容还原成正常文本 - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * //editor是编辑器实例 - * //对当前选中的文本内容执行下标操作 - * //第一次操作, 文本内容将变成下标文本 - * editor.execCommand( 'subscript' ); - * - * //再次对同一文本内容执行, 则文本内容将恢复正常 - * editor.execCommand( 'subscript' ); - * ``` - */ - - /** - * 上标文本,与“subscript”命令互斥 - * @command superscript - * @method execCommand - * @remind 把选中的文本内容切换成上标文本, 如果当前选中的文本已经是上标, 则该操作会把文本内容还原成正常文本 - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * //editor是编辑器实例 - * //对当前选中的文本内容执行上标操作 - * //第一次操作, 文本内容将变成上标文本 - * editor.execCommand( 'superscript' ); - * - * //再次对同一文本内容执行, 则文本内容将恢复正常 - * editor.execCommand( 'superscript' ); - * ``` - */ - var basestyles = { - bold: ["strong", "b"], - italic: ["em", "i"], - subscript: ["sub"], - superscript: ["sup"] - }, - getObj = function(editor, tagNames) { - return domUtils.filterNodeList( - editor.selection.getStartElementPath(), - tagNames - ); - }, - me = this; - //添加快捷键 - me.addshortcutkey({ - Bold: "ctrl+66", //^B - Italic: "ctrl+73", //^I - Underline: "ctrl+85" //^U - }); - me.addInputRule(function(root) { - utils.each(root.getNodesByTagName("b i"), function(node) { - switch (node.tagName) { - case "b": - node.tagName = "strong"; - break; - case "i": - node.tagName = "em"; - } - }); - }); - for (var style in basestyles) { - (function(cmd, tagNames) { - me.commands[cmd] = { - execCommand: function(cmdName) { - var range = me.selection.getRange(), - obj = getObj(this, tagNames); - if (range.collapsed) { - if (obj) { - var tmpText = me.document.createTextNode(""); - range.insertNode(tmpText).removeInlineStyle(tagNames); - range.setStartBefore(tmpText); - domUtils.remove(tmpText); - } else { - var tmpNode = range.document.createElement(tagNames[0]); - if (cmdName == "superscript" || cmdName == "subscript") { - tmpText = me.document.createTextNode(""); - range - .insertNode(tmpText) - .removeInlineStyle(["sub", "sup"]) - .setStartBefore(tmpText) - .collapse(true); - } - range.insertNode(tmpNode).setStart(tmpNode, 0); - } - range.collapse(true); - } else { - if (cmdName == "superscript" || cmdName == "subscript") { - if (!obj || obj.tagName.toLowerCase() != cmdName) { - range.removeInlineStyle(["sub", "sup"]); - } - } - obj - ? range.removeInlineStyle(tagNames) - : range.applyInlineStyle(tagNames[0]); - } - range.select(); - }, - queryCommandState: function() { - return getObj(this, tagNames) ? 1 : 0; - } - }; - })(style, basestyles[style]); - } -}; - - -// plugins/elementpath.js -/** - * 选取路径命令 - * @file - */ -UE.plugins["elementpath"] = function() { - var currentLevel, - tagNames, - me = this; - me.setOpt("elementPathEnabled", true); - if (!me.options.elementPathEnabled) { - return; - } - me.commands["elementpath"] = { - execCommand: function(cmdName, level) { - var start = tagNames[level], - range = me.selection.getRange(); - currentLevel = level * 1; - range.selectNode(start).select(); - }, - queryCommandValue: function() { - //产生一个副本,不能修改原来的startElementPath; - var parents = [].concat(this.selection.getStartElementPath()).reverse(), - names = []; - tagNames = parents; - for (var i = 0, ci; (ci = parents[i]); i++) { - if (ci.nodeType == 3) { - continue; - } - var name = ci.tagName.toLowerCase(); - if (name == "img" && ci.getAttribute("anchorname")) { - name = "anchor"; - } - names[i] = name; - if (currentLevel == i) { - currentLevel = -1; - break; - } - } - return names; - } - }; -}; - - -// plugins/formatmatch.js -/** - * 格式刷,只格式inline的 - * @file - * @since 1.2.6.1 - */ - -/** - * 格式刷 - * @command formatmatch - * @method execCommand - * @remind 该操作不能复制段落格式 - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * //editor是编辑器实例 - * //获取格式刷 - * editor.execCommand( 'formatmatch' ); - * ``` - */ -UE.plugins["formatmatch"] = function() { - var me = this, - list = [], - img, - flag = 0; - - me.addListener("reset", function() { - list = []; - flag = 0; - }); - - function addList(type, evt) { - if (browser.webkit) { - var target = evt.target.tagName == "IMG" ? evt.target : null; - } - - function addFormat(range) { - if (text) { - range.selectNode(text); - } - return range.applyInlineStyle(list[list.length - 1].tagName, null, list); - } - - me.undoManger && me.undoManger.save(); - - var range = me.selection.getRange(), - imgT = target || range.getClosedNode(); - if (img && imgT && imgT.tagName == "IMG") { - //trace:964 - - imgT.style.cssText += - ";float:" + - (img.style.cssFloat || img.style.styleFloat || "none") + - ";display:" + - (img.style.display || "inline"); - - img = null; - } else { - if (!img) { - var collapsed = range.collapsed; - if (collapsed) { - var text = me.document.createTextNode("match"); - range.insertNode(text).select(); - } - me.__hasEnterExecCommand = true; - //不能把block上的属性干掉 - //trace:1553 - var removeFormatAttributes = me.options.removeFormatAttributes; - me.options.removeFormatAttributes = ""; - me.execCommand("removeformat"); - me.options.removeFormatAttributes = removeFormatAttributes; - me.__hasEnterExecCommand = false; - //trace:969 - range = me.selection.getRange(); - if (list.length) { - addFormat(range); - } - if (text) { - range.setStartBefore(text).collapse(true); - } - range.select(); - text && domUtils.remove(text); - } - } - - me.undoManger && me.undoManger.save(); - me.removeListener("mouseup", addList); - flag = 0; - } - - me.commands["formatmatch"] = { - execCommand: function(cmdName) { - if (flag) { - flag = 0; - list = []; - me.removeListener("mouseup", addList); - return; - } - - var range = me.selection.getRange(); - img = range.getClosedNode(); - if (!img || img.tagName != "IMG") { - range.collapse(true).shrinkBoundary(); - var start = range.startContainer; - list = domUtils.findParents(start, true, function(node) { - return !domUtils.isBlockElm(node) && node.nodeType == 1; - }); - //a不能加入格式刷, 并且克隆节点 - for (var i = 0, ci; (ci = list[i]); i++) { - if (ci.tagName == "A") { - list.splice(i, 1); - break; - } - } - } - - me.addListener("mouseup", addList); - flag = 1; - }, - queryCommandState: function() { - return flag; - }, - notNeedUndo: 1 - }; -}; - - -// plugins/searchreplace.js -///import core -///commands 查找替换 -///commandsName SearchReplace -///commandsTitle 查询替换 -///commandsDialog dialogs\searchreplace -/** - * @description 查找替换 - * @author zhanyi - */ - -UE.plugin.register("searchreplace", function() { - var me = this; - - var _blockElm = { table: 1, tbody: 1, tr: 1, ol: 1, ul: 1 }; - - var lastRng = null; - - function getText(node) { - var text = node.nodeType == 3 - ? node.nodeValue - : node[browser.ie ? "innerText" : "textContent"]; - return text.replace(domUtils.fillChar, ""); - } - - function findTextInString(textContent, opt, currentIndex) { - var str = opt.searchStr; - - var reg = new RegExp(str, "g" + (opt.casesensitive ? "" : "i")), - match; - - if (opt.dir == -1) { - textContent = textContent.substr(0, currentIndex); - textContent = textContent.split("").reverse().join(""); - str = str.split("").reverse().join(""); - match = reg.exec(textContent); - if (match) { - return currentIndex - match.index - str.length; - } - } else { - textContent = textContent.substr(currentIndex); - match = reg.exec(textContent); - if (match) { - return match.index + currentIndex; - } - } - - return -1; - } - function findTextBlockElm(node, currentIndex, opt) { - var textContent, - index, - methodName = opt.all || opt.dir == 1 ? "getNextDomNode" : "getPreDomNode"; - if (domUtils.isBody(node)) { - node = node.firstChild; - } - var first = 1; - while (node) { - textContent = getText(node); - index = findTextInString(textContent, opt, currentIndex); - first = 0; - if (index != -1) { - return { - node: node, - index: index - }; - } - node = domUtils[methodName](node); - while (node && _blockElm[node.nodeName.toLowerCase()]) { - node = domUtils[methodName](node, true); - } - if (node) { - currentIndex = opt.dir == -1 ? getText(node).length : 0; - } - } - } - function findNTextInBlockElm(node, index, str) { - var currentIndex = 0, - currentNode = node.firstChild, - currentNodeLength = 0, - result; - while (currentNode) { - if (currentNode.nodeType == 3) { - currentNodeLength = getText(currentNode).replace( - /(^[\t\r\n]+)|([\t\r\n]+$)/, - "" - ).length; - currentIndex += currentNodeLength; - if (currentIndex >= index) { - return { - node: currentNode, - index: currentNodeLength - (currentIndex - index) - }; - } - } else if (!dtd.$empty[currentNode.tagName]) { - currentNodeLength = getText(currentNode).replace( - /(^[\t\r\n]+)|([\t\r\n]+$)/, - "" - ).length; - currentIndex += currentNodeLength; - if (currentIndex >= index) { - result = findNTextInBlockElm( - currentNode, - currentNodeLength - (currentIndex - index), - str - ); - if (result) { - return result; - } - } - } - currentNode = domUtils.getNextDomNode(currentNode); - } - } - - function searchReplace(me, opt) { - var rng = lastRng || me.selection.getRange(), - startBlockNode, - searchStr = opt.searchStr, - span = me.document.createElement("span"); - span.innerHTML = "$$ueditor_searchreplace_key$$"; - - rng.shrinkBoundary(true); - - //判断是不是第一次选中 - if (!rng.collapsed) { - rng.select(); - var rngText = me.selection.getText(); - if ( - new RegExp( - "^" + opt.searchStr + "$", - opt.casesensitive ? "" : "i" - ).test(rngText) - ) { - if (opt.replaceStr != undefined) { - replaceText(rng, opt.replaceStr); - rng.select(); - return true; - } else { - rng.collapse(opt.dir == -1); - } - } - } - - rng.insertNode(span); - rng.enlargeToBlockElm(true); - startBlockNode = rng.startContainer; - var currentIndex = getText(startBlockNode).indexOf( - "$$ueditor_searchreplace_key$$" - ); - rng.setStartBefore(span); - domUtils.remove(span); - var result = findTextBlockElm(startBlockNode, currentIndex, opt); - if (result) { - var rngStart = findNTextInBlockElm(result.node, result.index, searchStr); - var rngEnd = findNTextInBlockElm( - result.node, - result.index + searchStr.length, - searchStr - ); - rng - .setStart(rngStart.node, rngStart.index) - .setEnd(rngEnd.node, rngEnd.index); - - if (opt.replaceStr !== undefined) { - replaceText(rng, opt.replaceStr); - } - rng.select(); - return true; - } else { - rng.setCursor(); - } - } - function replaceText(rng, str) { - str = me.document.createTextNode(str); - rng.deleteContents().insertNode(str); - } - return { - commands: { - searchreplace: { - execCommand: function(cmdName, opt) { - utils.extend( - opt, - { - all: false, - casesensitive: false, - dir: 1 - }, - true - ); - var num = 0; - if (opt.all) { - lastRng = null; - var rng = me.selection.getRange(), - first = me.body.firstChild; - if (first && first.nodeType == 1) { - rng.setStart(first, 0); - rng.shrinkBoundary(true); - } else if (first.nodeType == 3) { - rng.setStartBefore(first); - } - rng.collapse(true).select(true); - if (opt.replaceStr !== undefined) { - me.fireEvent("saveScene"); - } - while (searchReplace(this, opt)) { - num++; - lastRng = me.selection.getRange(); - lastRng.collapse(opt.dir == -1); - } - if (num) { - me.fireEvent("saveScene"); - } - } else { - if (opt.replaceStr !== undefined) { - me.fireEvent("saveScene"); - } - if (searchReplace(this, opt)) { - num++; - lastRng = me.selection.getRange(); - lastRng.collapse(opt.dir == -1); - } - if (num) { - me.fireEvent("saveScene"); - } - } - - return num; - }, - notNeedUndo: 1 - } - }, - bindEvents: { - clearlastSearchResult: function() { - lastRng = null; - } - } - }; -}); - - -// plugins/customstyle.js -/** - * 自定义样式 - * @file - * @since 1.2.6.1 - */ - -/** - * 根据config配置文件里“customstyle”选项的值对匹配的标签执行样式替换。 - * @command customstyle - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'customstyle' ); - * ``` - */ -UE.plugins["customstyle"] = function() { - var me = this; - me.setOpt({ - customstyle: [ - { - tag: "h1", - name: "tc", - style: - "font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;" - }, - { - tag: "h1", - name: "tl", - style: - "font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;" - }, - { - tag: "span", - name: "im", - style: - "font-size:16px;font-style:italic;font-weight:bold;line-height:18px;" - }, - { - tag: "span", - name: "hi", - style: - "font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;" - } - ] - }); - me.commands["customstyle"] = { - execCommand: function(cmdName, obj) { - var me = this, - tagName = obj.tag, - node = domUtils.findParent( - me.selection.getStart(), - function(node) { - return node.getAttribute("label"); - }, - true - ), - range, - bk, - tmpObj = {}; - for (var p in obj) { - if (obj[p] !== undefined) tmpObj[p] = obj[p]; - } - delete tmpObj.tag; - if (node && node.getAttribute("label") == obj.label) { - range = this.selection.getRange(); - bk = range.createBookmark(); - if (range.collapsed) { - //trace:1732 删掉自定义标签,要有p来回填站位 - if (dtd.$block[node.tagName]) { - var fillNode = me.document.createElement("p"); - domUtils.moveChild(node, fillNode); - node.parentNode.insertBefore(fillNode, node); - domUtils.remove(node); - } else { - domUtils.remove(node, true); - } - } else { - var common = domUtils.getCommonAncestor(bk.start, bk.end), - nodes = domUtils.getElementsByTagName(common, tagName); - if (new RegExp(tagName, "i").test(common.tagName)) { - nodes.push(common); - } - for (var i = 0, ni; (ni = nodes[i++]); ) { - if (ni.getAttribute("label") == obj.label) { - var ps = domUtils.getPosition(ni, bk.start), - pe = domUtils.getPosition(ni, bk.end); - if ( - (ps & domUtils.POSITION_FOLLOWING || - ps & domUtils.POSITION_CONTAINS) && - (pe & domUtils.POSITION_PRECEDING || - pe & domUtils.POSITION_CONTAINS) - ) - if (dtd.$block[tagName]) { - var fillNode = me.document.createElement("p"); - domUtils.moveChild(ni, fillNode); - ni.parentNode.insertBefore(fillNode, ni); - } - domUtils.remove(ni, true); - } - } - node = domUtils.findParent( - common, - function(node) { - return node.getAttribute("label") == obj.label; - }, - true - ); - if (node) { - domUtils.remove(node, true); - } - } - range.moveToBookmark(bk).select(); - } else { - if (dtd.$block[tagName]) { - this.execCommand("paragraph", tagName, tmpObj, "customstyle"); - range = me.selection.getRange(); - if (!range.collapsed) { - range.collapse(); - node = domUtils.findParent( - me.selection.getStart(), - function(node) { - return node.getAttribute("label") == obj.label; - }, - true - ); - var pNode = me.document.createElement("p"); - domUtils.insertAfter(node, pNode); - domUtils.fillNode(me.document, pNode); - range.setStart(pNode, 0).setCursor(); - } - } else { - range = me.selection.getRange(); - if (range.collapsed) { - node = me.document.createElement(tagName); - domUtils.setAttributes(node, tmpObj); - range.insertNode(node).setStart(node, 0).setCursor(); - - return; - } - - bk = range.createBookmark(); - range.applyInlineStyle(tagName, tmpObj).moveToBookmark(bk).select(); - } - } - }, - queryCommandValue: function() { - var parent = domUtils.filterNodeList( - this.selection.getStartElementPath(), - function(node) { - return node.getAttribute("label"); - } - ); - return parent ? parent.getAttribute("label") : ""; - } - }; - //当去掉customstyle是,如果是块元素,用p代替 - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - - if (keyCode == 32 || keyCode == 13) { - var range = me.selection.getRange(); - if (range.collapsed) { - var node = domUtils.findParent( - me.selection.getStart(), - function(node) { - return node.getAttribute("label"); - }, - true - ); - if (node && dtd.$block[node.tagName] && domUtils.isEmptyNode(node)) { - var p = me.document.createElement("p"); - domUtils.insertAfter(node, p); - domUtils.fillNode(me.document, p); - domUtils.remove(node); - range.setStart(p, 0).setCursor(); - } - } - } - }); -}; - - -// plugins/catchremoteimage.js -///import core -///commands 远程图片抓取 -///commandsName catchRemoteImage,catchremoteimageenable -///commandsTitle 远程图片抓取 -/** - * 远程图片抓取,当开启本插件时所有不符合本地域名的图片都将被抓取成为本地服务器上的图片 - */ -UE.plugins["catchremoteimage"] = function() { - var me = this, - ajax = UE.ajax; - - /* 设置默认值 */ - if (me.options.catchRemoteImageEnable === false) return; - me.setOpt({ - catchRemoteImageEnable: false - }); - - me.addListener("afterpaste", function() { - me.fireEvent("catchRemoteImage"); - }); - - me.addListener("catchRemoteImage", function() { - var catcherLocalDomain = me.getOpt("catcherLocalDomain"), - catcherActionUrl = me.getActionUrl(me.getOpt("catcherActionName")), - catcherUrlPrefix = me.getOpt("catcherUrlPrefix"), - catcherFieldName = me.getOpt("catcherFieldName"); - - var remoteImages = [], - loadingIMG = me.options.themePath + me.options.theme + '/images/spacer.gif', - imgs = me.document.querySelectorAll('[style*="url"],img'), - test = function(src, urls) { - if (src.indexOf(location.host) != -1 || /(^\.)|(^\/)/.test(src)) { - return true; - } - if (urls) { - for (var j = 0, url; (url = urls[j++]); ) { - if (src.indexOf(url) !== -1) { - return true; - } - } - } - return false; - }; - - for (var i = 0, ci; (ci = imgs[i++]); ) { - if (ci.getAttribute("word_img")) { - continue; - } - if(ci.nodeName == "IMG"){ - var src = ci.getAttribute("_src") || ci.src || ""; - if (/^(https?|ftp):/i.test(src) && !test(src, catcherLocalDomain)) { - remoteImages.push(src); - // 添加上传时的uploading动画 - domUtils.setAttributes(ci, { - class: "loadingclass", - _src: src, - src: loadingIMG - }) - } - } else { - // 获取背景图片url - var backgroundImageurl = ci.style.cssText.replace(/.*\s?url\([\'\"]?/, '').replace(/[\'\"]?\).*/, ''); - if (/^(https?|ftp):/i.test(backgroundImageurl) && !test(backgroundImageurl, catcherLocalDomain)) { - remoteImages.push(backgroundImageurl); - ci.style.cssText = ci.style.cssText.replace(backgroundImageurl, loadingIMG); - domUtils.setAttributes(ci, { - "data-background": backgroundImageurl - }) - } - } - } - - if (remoteImages.length) { - catchremoteimage(remoteImages, { - //成功抓取 - success: function(r) { - try { - var info = r.state !== undefined - ? r - : eval("(" + r.responseText + ")"); - } catch (e) { - return; - } - - /* 获取源路径和新路径 */ - var i, - j, - ci, - cj, - oldSrc, - newSrc, - list = info.list; - - /* 抓取失败统计 */ - var catchFailList = []; - /* 抓取成功统计 */ - var catchSuccessList = []; - /* 抓取失败时显示的图片 */ - var failIMG = me.options.themePath + me.options.theme + '/images/img-cracked.png'; - - for (i = 0; ci = imgs[i++];) { - oldSrc = ci.getAttribute("_src") || ci.src || ""; - oldBgIMG = ci.getAttribute("data-background") || ""; - for (j = 0; cj = list[j++];) { - if (oldSrc == cj.source && cj.state == "SUCCESS") { - newSrc = catcherUrlPrefix + cj.url; - // 上传成功是删除uploading动画 - domUtils.removeClasses( ci, "loadingclass" ); - domUtils.setAttributes(ci, { - "src": newSrc, - "_src": newSrc, - "data-catchResult":"img_catchSuccess" // 添加catch成功标记 - }); - catchSuccessList.push(ci); - break; - } else if (oldSrc == cj.source && cj.state == "FAIL") { - // 替换成统一的失败图片 - domUtils.removeClasses( ci, "loadingclass" ); - domUtils.setAttributes(ci, { - "src": failIMG, - "_src": failIMG, - "data-catchResult":"img_catchFail" // 添加catch失败标记 - }); - catchFailList.push(ci); - break; - } else if (oldBgIMG == cj.source && cj.state == "SUCCESS") { - newBgIMG = catcherUrlPrefix + cj.url; - ci.style.cssText = ci.style.cssText.replace(loadingIMG, newBgIMG); - domUtils.removeAttributes(ci,"data-background"); - domUtils.setAttributes(ci, { - "data-catchResult":"img_catchSuccess" // 添加catch成功标记 - }); - catchSuccessList.push(ci); - break; - } else if (oldBgIMG == cj.source && cj.state == "FAIL"){ - ci.style.cssText = ci.style.cssText.replace(loadingIMG, failIMG); - domUtils.removeAttributes(ci,"data-background"); - domUtils.setAttributes(ci, { - "data-catchResult":"img_catchFail" // 添加catch失败标记 - }); - catchFailList.push(ci); - break; - } - } - - } - // 监听事件添加成功抓取和抓取失败的dom列表参数 - me.fireEvent('catchremotesuccess',catchSuccessList,catchFailList); - }, - //回调失败,本次请求超时 - error: function() { - me.fireEvent("catchremoteerror"); - } - }); - } - - function catchremoteimage(imgs, callbacks) { - var params = - utils.serializeParam(me.queryCommandValue("serverparam")) || "", - url = utils.formatUrl( - catcherActionUrl + - (catcherActionUrl.indexOf("?") == -1 ? "?" : "&") + - params - ), - isJsonp = utils.isCrossDomainUrl(url), - opt = { - method: "POST", - dataType: isJsonp ? "jsonp" : "", - timeout: 60000, //单位:毫秒,回调请求超时设置。目标用户如果网速不是很快的话此处建议设置一个较大的数值 - onsuccess: callbacks["success"], - onerror: callbacks["error"] - }; - opt[catcherFieldName] = imgs; - ajax.request(url, opt); - } - }); -}; - - -// plugins/snapscreen.js -/** - * 截屏插件,为UEditor提供插入支持 - * @file - * @since 1.4.2 - */ -UE.plugin.register("snapscreen", function() { - var me = this; - var snapplugin; - - function getLocation(url) { - var search, - a = document.createElement("a"), - params = utils.serializeParam(me.queryCommandValue("serverparam")) || ""; - - a.href = url; - if (browser.ie) { - a.href = a.href; - } - - search = a.search; - if (params) { - search = search + (search.indexOf("?") == -1 ? "?" : "&") + params; - search = search.replace(/[&]+/gi, "&"); - } - return { - port: a.port, - hostname: a.hostname, - path: a.pathname + search || +a.hash - }; - } - - return { - commands: { - /** - * 字体背景颜色 - * @command snapscreen - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand('snapscreen'); - * ``` - */ - snapscreen: { - execCommand: function(cmd) { - var url, local, res; - var lang = me.getLang("snapScreen_plugin"); - - if (!snapplugin) { - var container = me.container; - var doc = me.container.ownerDocument || me.container.document; - snapplugin = doc.createElement("object"); - try { - snapplugin.type = "application/x-pluginbaidusnap"; - } catch (e) { - return; - } - snapplugin.style.cssText = - "position:absolute;left:-9999px;width:0;height:0;"; - snapplugin.setAttribute("width", "0"); - snapplugin.setAttribute("height", "0"); - container.appendChild(snapplugin); - } - - function onSuccess(rs) { - try { - rs = eval("(" + rs + ")"); - if (rs.state == "SUCCESS") { - var opt = me.options; - me.execCommand("insertimage", { - src: opt.snapscreenUrlPrefix + rs.url, - _src: opt.snapscreenUrlPrefix + rs.url, - alt: rs.title || "", - floatStyle: opt.snapscreenImgAlign - }); - } else { - alert(rs.state); - } - } catch (e) { - alert(lang.callBackErrorMsg); - } - } - url = me.getActionUrl(me.getOpt("snapscreenActionName")); - local = getLocation(url); - setTimeout(function() { - try { - res = snapplugin.saveSnapshot( - local.hostname, - local.path, - local.port - ); - } catch (e) { - me.ui._dialogs["snapscreenDialog"].open(); - return; - } - - onSuccess(res); - }, 50); - }, - queryCommandState: function() { - return navigator.userAgent.indexOf("Windows", 0) != -1 ? 0 : -1; - } - } - } - }; -}); - - -// plugins/insertparagraph.js -/** - * 插入段落 - * @file - * @since 1.2.6.1 - */ - -/** - * 插入段落 - * @command insertparagraph - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * //editor是编辑器实例 - * editor.execCommand( 'insertparagraph' ); - * ``` - */ - -UE.commands["insertparagraph"] = { - execCommand: function(cmdName, front) { - var me = this, - range = me.selection.getRange(), - start = range.startContainer, - tmpNode; - while (start) { - if (domUtils.isBody(start)) { - break; - } - tmpNode = start; - start = start.parentNode; - } - if (tmpNode) { - var p = me.document.createElement("p"); - if (front) { - tmpNode.parentNode.insertBefore(p, tmpNode); - } else { - tmpNode.parentNode.insertBefore(p, tmpNode.nextSibling); - } - domUtils.fillNode(me.document, p); - range.setStart(p, 0).setCursor(false, true); - } - } -}; - - -// plugins/webapp.js -/** - * 百度应用 - * @file - * @since 1.2.6.1 - */ - -/** - * 插入百度应用 - * @command webapp - * @method execCommand - * @remind 需要百度APPKey - * @remind 百度应用主页: http://app.baidu.com/ - * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度, - * height=>应用容器高度,logo=>应用logo,url=>应用地址 - * @example - * ```javascript - * //editor是编辑器实例 - * //在编辑器里插入一个“植物大战僵尸”的APP - * editor.execCommand( 'webapp' , { - * title: '植物大战僵尸', - * width: 560, - * height: 465, - * logo: '应用展示的图片', - * url: '百度应用的地址' - * } ); - * ``` - */ - -//UE.plugins['webapp'] = function () { -// var me = this; -// function createInsertStr( obj, toIframe, addParagraph ) { -// return !toIframe ? -// (addParagraph ? '

    ' : '') + '' + -// (addParagraph ? '

    ' : '') -// : -// ''; -// } -// -// function switchImgAndIframe( img2frame ) { -// var tmpdiv, -// nodes = domUtils.getElementsByTagName( me.document, !img2frame ? "iframe" : "img" ); -// for ( var i = 0, node; node = nodes[i++]; ) { -// if ( node.className != "edui-faked-webapp" ){ -// continue; -// } -// tmpdiv = me.document.createElement( "div" ); -// tmpdiv.innerHTML = createInsertStr( img2frame ? {url:node.getAttribute( "_url" ), width:node.width, height:node.height,title:node.title,logo:node.style.backgroundImage.replace("url(","").replace(")","")} : {url:node.getAttribute( "src", 2 ),title:node.title, width:node.width, height:node.height,logo:node.getAttribute("logo_url")}, img2frame ? true : false,false ); -// node.parentNode.replaceChild( tmpdiv.firstChild, node ); -// } -// } -// -// me.addListener( "beforegetcontent", function () { -// switchImgAndIframe( true ); -// } ); -// me.addListener( 'aftersetcontent', function () { -// switchImgAndIframe( false ); -// } ); -// me.addListener( 'aftergetcontent', function ( cmdName ) { -// if ( cmdName == 'aftergetcontent' && me.queryCommandState( 'source' ) ){ -// return; -// } -// switchImgAndIframe( false ); -// } ); -// -// me.commands['webapp'] = { -// execCommand:function ( cmd, obj ) { -// me.execCommand( "inserthtml", createInsertStr( obj, false,true ) ); -// } -// }; -//}; - -UE.plugin.register("webapp", function() { - var me = this; - function createInsertStr(obj, toEmbed) { - return !toEmbed - ? '" - : ''; - } - return { - outputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(node) { - var html; - if (node.getAttr("class") == "edui-faked-webapp") { - html = createInsertStr( - { - title: node.getAttr("title"), - width: node.getAttr("width"), - height: node.getAttr("height"), - align: node.getAttr("align"), - cssfloat: node.getStyle("float"), - url: node.getAttr("_url"), - logo: node.getAttr("_logo_url") - }, - true - ); - var embed = UE.uNode.createElement(html); - node.parentNode.replaceChild(embed, node); - } - }); - }, - inputRule: function(root) { - utils.each(root.getNodesByTagName("iframe"), function(node) { - if (node.getAttr("class") == "edui-faked-webapp") { - var img = UE.uNode.createElement( - createInsertStr({ - title: node.getAttr("title"), - width: node.getAttr("width"), - height: node.getAttr("height"), - align: node.getAttr("align"), - cssfloat: node.getStyle("float"), - url: node.getAttr("src"), - logo: node.getAttr("logo_url") - }) - ); - node.parentNode.replaceChild(img, node); - } - }); - }, - commands: { - /** - * 插入百度应用 - * @command webapp - * @method execCommand - * @remind 需要百度APPKey - * @remind 百度应用主页: http://app.baidu.com/ - * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度, - * height=>应用容器高度,logo=>应用logo,url=>应用地址 - * @example - * ```javascript - * //editor是编辑器实例 - * //在编辑器里插入一个“植物大战僵尸”的APP - * editor.execCommand( 'webapp' , { - * title: '植物大战僵尸', - * width: 560, - * height: 465, - * logo: '应用展示的图片', - * url: '百度应用的地址' - * } ); - * ``` - */ - webapp: { - execCommand: function(cmd, obj) { - var me = this, - str = createInsertStr( - utils.extend(obj, { - align: "none" - }), - false - ); - me.execCommand("inserthtml", str); - }, - queryCommandState: function() { - var me = this, - img = me.selection.getRange().getClosedNode(), - flag = img && img.className == "edui-faked-webapp"; - return flag ? 1 : 0; - } - } - } - }; -}); - - -// plugins/template.js -///import core -///import plugins\inserthtml.js -///import plugins\cleardoc.js -///commands 模板 -///commandsName template -///commandsTitle 模板 -///commandsDialog dialogs\template -UE.plugins["template"] = function() { - UE.commands["template"] = { - execCommand: function(cmd, obj) { - obj.html && this.execCommand("inserthtml", obj.html); - } - }; - this.addListener("click", function(type, evt) { - var el = evt.target || evt.srcElement, - range = this.selection.getRange(); - var tnode = domUtils.findParent( - el, - function(node) { - if (node.className && domUtils.hasClass(node, "ue_t")) { - return node; - } - }, - true - ); - tnode && range.selectNode(tnode).shrinkBoundary().select(); - }); - this.addListener("keydown", function(type, evt) { - var range = this.selection.getRange(); - if (!range.collapsed) { - if (!evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) { - var tnode = domUtils.findParent( - range.startContainer, - function(node) { - if (node.className && domUtils.hasClass(node, "ue_t")) { - return node; - } - }, - true - ); - if (tnode) { - domUtils.removeClasses(tnode, ["ue_t"]); - } - } - } - }); -}; - - -// plugins/music.js -/** - * 插入音乐命令 - * @file - */ -UE.plugin.register("music", function() { - var me = this; - function creatInsertStr(url, width, height, align, cssfloat, toEmbed) { - return !toEmbed - ? "' - : ''; - } - return { - outputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(node) { - var html; - if (node.getAttr("class") == "edui-faked-music") { - var cssfloat = node.getStyle("float"); - var align = node.getAttr("align"); - html = creatInsertStr( - node.getAttr("_url"), - node.getAttr("width"), - node.getAttr("height"), - align, - cssfloat, - true - ); - var embed = UE.uNode.createElement(html); - node.parentNode.replaceChild(embed, node); - } - }); - }, - inputRule: function(root) { - utils.each(root.getNodesByTagName("embed"), function(node) { - if (node.getAttr("class") == "edui-faked-music") { - var cssfloat = node.getStyle("float"); - var align = node.getAttr("align"); - html = creatInsertStr( - node.getAttr("src"), - node.getAttr("width"), - node.getAttr("height"), - align, - cssfloat, - false - ); - var img = UE.uNode.createElement(html); - node.parentNode.replaceChild(img, node); - } - }); - }, - commands: { - /** - * 插入音乐 - * @command music - * @method execCommand - * @param { Object } musicOptions 插入音乐的参数项, 支持的key有: url=>音乐地址; - * width=>音乐容器宽度;height=>音乐容器高度;align=>音乐文件的对齐方式, 可选值有: left, center, right, none - * @example - * ```javascript - * //editor是编辑器实例 - * //在编辑器里插入一个“植物大战僵尸”的APP - * editor.execCommand( 'music' , { - * width: 400, - * height: 95, - * align: "center", - * url: "音乐地址" - * } ); - * ``` - */ - music: { - execCommand: function(cmd, musicObj) { - var me = this, - str = creatInsertStr( - musicObj.url, - musicObj.width || 400, - musicObj.height || 95, - "none", - false - ); - me.execCommand("inserthtml", str); - }, - queryCommandState: function() { - var me = this, - img = me.selection.getRange().getClosedNode(), - flag = img && img.className == "edui-faked-music"; - return flag ? 1 : 0; - } - } - } - }; -}); - - -// plugins/autoupload.js -/** - * @description - * 1.拖放文件到编辑区域,自动上传并插入到选区 - * 2.插入粘贴板的图片,自动上传并插入到选区 - * @author Jinqn - * @date 2013-10-14 - */ -UE.plugin.register("autoupload", function() { - function sendAndInsertFile(file, editor) { - var me = editor; - //模拟数据 - var fieldName, - urlPrefix, - maxSize, - allowFiles, - actionUrl, - loadingHtml, - errorHandler, - successHandler, - filetype = /image\/\w+/i.test(file.type) ? "image" : "file", - loadingId = "loading_" + (+new Date()).toString(36); - - fieldName = me.getOpt(filetype + "FieldName"); - urlPrefix = me.getOpt(filetype + "UrlPrefix"); - maxSize = me.getOpt(filetype + "MaxSize"); - allowFiles = me.getOpt(filetype + "AllowFiles"); - actionUrl = me.getActionUrl(me.getOpt(filetype + "ActionName")); - errorHandler = function(title) { - var loader = me.document.getElementById(loadingId); - loader && domUtils.remove(loader); - me.fireEvent("showmessage", { - id: loadingId, - content: title, - type: "error", - timeout: 4000 - }); - }; - - if (filetype == "image") { - loadingHtml = - ''; - successHandler = function(data) { - var link = urlPrefix + data.url, - loader = me.document.getElementById(loadingId); - if (loader) { - domUtils.removeClasses(loader, "loadingclass"); - loader.setAttribute("src", link); - loader.setAttribute("_src", link); - loader.setAttribute("alt", data.original || ""); - loader.removeAttribute("id"); - me.trigger("contentchange", loader); - } - }; - } else { - loadingHtml = - "

    " + - '' + - "

    "; - successHandler = function(data) { - var link = urlPrefix + data.url, - loader = me.document.getElementById(loadingId); - - var rng = me.selection.getRange(), - bk = rng.createBookmark(); - rng.selectNode(loader).select(); - me.execCommand("insertfile", { url: link }); - rng.moveToBookmark(bk).select(); - }; - } - - /* 插入loading的占位符 */ - me.execCommand("inserthtml", loadingHtml); - /* 判断后端配置是否没有加载成功 */ - if (!me.getOpt(filetype + "ActionName")) { - errorHandler(me.getLang("autoupload.errorLoadConfig")); - return; - } - /* 判断文件大小是否超出限制 */ - if (file.size > maxSize) { - errorHandler(me.getLang("autoupload.exceedSizeError")); - return; - } - /* 判断文件格式是否超出允许 */ - var fileext = file.name ? file.name.substr(file.name.lastIndexOf(".")) : ""; - if ( - (fileext && filetype != "image") || - (allowFiles && - (allowFiles.join("") + ".").indexOf(fileext.toLowerCase() + ".") == -1) - ) { - errorHandler(me.getLang("autoupload.exceedTypeError")); - return; - } - - /* 创建Ajax并提交 */ - var xhr = new XMLHttpRequest(), - fd = new FormData(), - params = utils.serializeParam(me.queryCommandValue("serverparam")) || "", - url = utils.formatUrl( - actionUrl + (actionUrl.indexOf("?") == -1 ? "?" : "&") + params - ); - - fd.append( - fieldName, - file, - file.name || "blob." + file.type.substr("image/".length) - ); - fd.append("type", "ajax"); - xhr.open("post", url, true); - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - xhr.addEventListener("load", function(e) { - try { - var json = new Function("return " + utils.trim(e.target.response))(); - if (json.state == "SUCCESS" && json.url) { - successHandler(json); - } else { - errorHandler(json.state); - } - } catch (er) { - errorHandler(me.getLang("autoupload.loadError")); - } - }); - xhr.send(fd); - } - - function getPasteImage(e) { - return e.clipboardData && - e.clipboardData.items && - e.clipboardData.items.length == 1 && - /^image\//.test(e.clipboardData.items[0].type) - ? e.clipboardData.items - : null; - } - function getDropImage(e) { - return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files : null; - } - - return { - outputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(n) { - if (/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr("class"))) { - n.parentNode.removeChild(n); - } - }); - utils.each(root.getNodesByTagName("p"), function(n) { - if (/\bloadpara\b/.test(n.getAttr("class"))) { - n.parentNode.removeChild(n); - } - }); - }, - bindEvents: { - defaultOptions: { - //默认间隔时间 - enableDragUpload: true, - enablePasteUpload: true - }, - //插入粘贴板的图片,拖放插入图片 - ready: function(e) { - var me = this; - if (window.FormData && window.FileReader) { - var handler = function(e) { - var hasImg = false, - items; - //获取粘贴板文件列表或者拖放文件列表 - items = e.type == "paste" ? getPasteImage(e) : getDropImage(e); - if (items) { - var len = items.length, - file; - while (len--) { - file = items[len]; - if (file.getAsFile) file = file.getAsFile(); - if (file && file.size > 0) { - sendAndInsertFile(file, me); - hasImg = true; - } - } - hasImg && e.preventDefault(); - } - }; - - if (me.getOpt("enablePasteUpload") !== false) { - domUtils.on(me.body, "paste ", handler); - } - if (me.getOpt("enableDragUpload") !== false) { - domUtils.on(me.body, "drop", handler); - //取消拖放图片时出现的文字光标位置提示 - domUtils.on(me.body, "dragover", function(e) { - if (e.dataTransfer.types[0] == "Files") { - e.preventDefault(); - } - }); - } else { - if (browser.gecko) { - domUtils.on(me.body, "drop", function(e) { - if (getDropImage(e)) { - e.preventDefault(); - } - }); - } - } - - //设置loading的样式 - utils.cssRule( - "loading", - ".loadingclass{display:inline-block;cursor:default;background: url('" + - this.options.themePath + - this.options.theme + - "/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-left:1px;height: 22px;width: 22px;}\n" + - ".loaderrorclass{display:inline-block;cursor:default;background: url('" + - this.options.themePath + - this.options.theme + - "/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;" + - "}", - this.document - ); - } - } - } - }; -}); - - -// plugins/autosave.js -UE.plugin.register("autosave", function() { - var me = this, - //无限循环保护 - lastSaveTime = new Date(), - //最小保存间隔时间 - MIN_TIME = 20, - //auto save key - saveKey = null; - - function save(editor) { - var saveData; - - if (new Date() - lastSaveTime < MIN_TIME) { - return; - } - - if (!editor.hasContents()) { - //这里不能调用命令来删除, 会造成事件死循环 - saveKey && me.removePreferences(saveKey); - return; - } - - lastSaveTime = new Date(); - - editor._saveFlag = null; - - saveData = me.body.innerHTML; - - if ( - editor.fireEvent("beforeautosave", { - content: saveData - }) === false - ) { - return; - } - - me.setPreferences(saveKey, saveData); - - editor.fireEvent("afterautosave", { - content: saveData - }); - } - - return { - defaultOptions: { - //默认间隔时间 - saveInterval: 500, - enableAutoSave: true - }, - bindEvents: { - ready: function() { - var _suffix = "-drafts-data", - key = null; - - if (me.key) { - key = me.key + _suffix; - } else { - key = (me.container.parentNode.id || "ue-common") + _suffix; - } - - //页面地址+编辑器ID 保持唯一 - saveKey = - (location.protocol + location.host + location.pathname).replace( - /[.:\/]/g, - "_" - ) + key; - }, - - contentchange: function() { - if (!me.getOpt("enableAutoSave")) { - return; - } - - if (!saveKey) { - return; - } - - if (me._saveFlag) { - window.clearTimeout(me._saveFlag); - } - - if (me.options.saveInterval > 0) { - me._saveFlag = window.setTimeout(function() { - save(me); - }, me.options.saveInterval); - } else { - save(me); - } - } - }, - commands: { - clearlocaldata: { - execCommand: function(cmd, name) { - if (saveKey && me.getPreferences(saveKey)) { - me.removePreferences(saveKey); - } - }, - notNeedUndo: true, - ignoreContentChange: true - }, - - getlocaldata: { - execCommand: function(cmd, name) { - return saveKey ? me.getPreferences(saveKey) || "" : ""; - }, - notNeedUndo: true, - ignoreContentChange: true - }, - - drafts: { - execCommand: function(cmd, name) { - if (saveKey) { - me.body.innerHTML = - me.getPreferences(saveKey) || "

    " + domUtils.fillHtml + "

    "; - me.focus(true); - } - }, - queryCommandState: function() { - return saveKey ? (me.getPreferences(saveKey) === null ? -1 : 0) : -1; - }, - notNeedUndo: true, - ignoreContentChange: true - } - } - }; -}); - - -// plugins/charts.js -UE.plugin.register("charts", function() { - var me = this; - - return { - bindEvents: { - chartserror: function() {} - }, - commands: { - charts: { - execCommand: function(cmd, data) { - var tableNode = domUtils.findParentByTagName( - this.selection.getRange().startContainer, - "table", - true - ), - flagText = [], - config = {}; - - if (!tableNode) { - return false; - } - - if (!validData(tableNode)) { - me.fireEvent("chartserror"); - return false; - } - - config.title = data.title || ""; - config.subTitle = data.subTitle || ""; - config.xTitle = data.xTitle || ""; - config.yTitle = data.yTitle || ""; - config.suffix = data.suffix || ""; - config.tip = data.tip || ""; - //数据对齐方式 - config.dataFormat = data.tableDataFormat || ""; - //图表类型 - config.chartType = data.chartType || 0; - - for (var key in config) { - if (!config.hasOwnProperty(key)) { - continue; - } - - flagText.push(key + ":" + config[key]); - } - - tableNode.setAttribute("data-chart", flagText.join(";")); - domUtils.addClass(tableNode, "edui-charts-table"); - }, - queryCommandState: function(cmd, name) { - var tableNode = domUtils.findParentByTagName( - this.selection.getRange().startContainer, - "table", - true - ); - return tableNode && validData(tableNode) ? 0 : -1; - } - } - }, - inputRule: function(root) { - utils.each(root.getNodesByTagName("table"), function(tableNode) { - if (tableNode.getAttr("data-chart") !== undefined) { - tableNode.setAttr("style"); - } - }); - }, - outputRule: function(root) { - utils.each(root.getNodesByTagName("table"), function(tableNode) { - if (tableNode.getAttr("data-chart") !== undefined) { - tableNode.setAttr("style", "display: none;"); - } - }); - } - }; - - function validData(table) { - var firstRows = null, - cellCount = 0; - - //行数不够 - if (table.rows.length < 2) { - return false; - } - - //列数不够 - if (table.rows[0].cells.length < 2) { - return false; - } - - //第一行所有cell必须是th - firstRows = table.rows[0].cells; - cellCount = firstRows.length; - - for (var i = 0, cell; (cell = firstRows[i]); i++) { - if (cell.tagName.toLowerCase() !== "th") { - return false; - } - } - - for (var i = 1, row; (row = table.rows[i]); i++) { - //每行单元格数不匹配, 返回false - if (row.cells.length != cellCount) { - return false; - } - - //第一列不是th也返回false - if (row.cells[0].tagName.toLowerCase() !== "th") { - return false; - } - - for (var j = 1, cell; (cell = row.cells[j]); j++) { - var value = utils.trim(cell.innerText || cell.textContent || ""); - - value = value - .replace(new RegExp(UE.dom.domUtils.fillChar, "g"), "") - .replace(/^\s+|\s+$/g, ""); - - //必须是数字 - if (!/^\d*\.?\d+$/.test(value)) { - return false; - } - } - } - - return true; - } -}); - - -// plugins/section.js -/** - * 目录大纲支持插件 - * @file - * @since 1.3.0 - */ -UE.plugin.register("section", function() { - /* 目录节点对象 */ - function Section(option) { - this.tag = ""; - (this.level = -1), (this.dom = null); - this.nextSection = null; - this.previousSection = null; - this.parentSection = null; - this.startAddress = []; - this.endAddress = []; - this.children = []; - } - function getSection(option) { - var section = new Section(); - return utils.extend(section, option); - } - function getNodeFromAddress(startAddress, root) { - var current = root; - for (var i = 0; i < startAddress.length; i++) { - if (!current.childNodes) return null; - current = current.childNodes[startAddress[i]]; - } - return current; - } - - var me = this; - - return { - bindMultiEvents: { - type: "aftersetcontent afterscencerestore", - handler: function() { - me.fireEvent("updateSections"); - } - }, - bindEvents: { - /* 初始化、拖拽、粘贴、执行setcontent之后 */ - ready: function() { - me.fireEvent("updateSections"); - domUtils.on(me.body, "drop paste", function() { - me.fireEvent("updateSections"); - }); - }, - /* 执行paragraph命令之后 */ - afterexeccommand: function(type, cmd) { - if (cmd == "paragraph") { - me.fireEvent("updateSections"); - } - }, - /* 部分键盘操作,触发updateSections事件 */ - keyup: function(type, e) { - var me = this, - range = me.selection.getRange(); - if (range.collapsed != true) { - me.fireEvent("updateSections"); - } else { - var keyCode = e.keyCode || e.which; - if (keyCode == 13 || keyCode == 8 || keyCode == 46) { - me.fireEvent("updateSections"); - } - } - } - }, - commands: { - getsections: { - execCommand: function(cmd, levels) { - var levelFn = levels || ["h1", "h2", "h3", "h4", "h5", "h6"]; - - for (var i = 0; i < levelFn.length; i++) { - if (typeof levelFn[i] == "string") { - levelFn[i] = (function(fn) { - return function(node) { - return node.tagName == fn.toUpperCase(); - }; - })(levelFn[i]); - } else if (typeof levelFn[i] != "function") { - levelFn[i] = function(node) { - return null; - }; - } - } - function getSectionLevel(node) { - for (var i = 0; i < levelFn.length; i++) { - if (levelFn[i](node)) return i; - } - return -1; - } - - var me = this, - Directory = getSection({ level: -1, title: "root" }), - previous = Directory; - - function traversal(node, Directory) { - var level, - tmpSection = null, - parent, - child, - children = node.childNodes; - for (var i = 0, len = children.length; i < len; i++) { - child = children[i]; - level = getSectionLevel(child); - if (level >= 0) { - var address = me.selection - .getRange() - .selectNode(child) - .createAddress(true).startAddress, - current = getSection({ - tag: child.tagName, - title: child.innerText || child.textContent || "", - level: level, - dom: child, - startAddress: utils.clone(address, []), - endAddress: utils.clone(address, []), - children: [] - }); - previous.nextSection = current; - current.previousSection = previous; - parent = previous; - while (level <= parent.level) { - parent = parent.parentSection; - } - current.parentSection = parent; - parent.children.push(current); - tmpSection = previous = current; - } else { - child.nodeType === 1 && traversal(child, Directory); - tmpSection && - tmpSection.endAddress[tmpSection.endAddress.length - 1]++; - } - } - } - traversal(me.body, Directory); - return Directory; - }, - notNeedUndo: true - }, - movesection: { - execCommand: function(cmd, sourceSection, targetSection, isAfter) { - var me = this, - targetAddress, - target; - - if (!sourceSection || !targetSection || targetSection.level == -1) - return; - - targetAddress = isAfter - ? targetSection.endAddress - : targetSection.startAddress; - target = getNodeFromAddress(targetAddress, me.body); - - /* 判断目标地址是否被源章节包含 */ - if ( - !targetAddress || - !target || - isContainsAddress( - sourceSection.startAddress, - sourceSection.endAddress, - targetAddress - ) - ) - return; - - var startNode = getNodeFromAddress( - sourceSection.startAddress, - me.body - ), - endNode = getNodeFromAddress(sourceSection.endAddress, me.body), - current, - nextNode; - - if (isAfter) { - current = endNode; - while ( - current && - !( - domUtils.getPosition(startNode, current) & - domUtils.POSITION_FOLLOWING - ) - ) { - nextNode = current.previousSibling; - domUtils.insertAfter(target, current); - if (current == startNode) break; - current = nextNode; - } - } else { - current = startNode; - while ( - current && - !( - domUtils.getPosition(current, endNode) & - domUtils.POSITION_FOLLOWING - ) - ) { - nextNode = current.nextSibling; - target.parentNode.insertBefore(current, target); - if (current == endNode) break; - current = nextNode; - } - } - - me.fireEvent("updateSections"); - - /* 获取地址的包含关系 */ - function isContainsAddress(startAddress, endAddress, addressTarget) { - var isAfterStartAddress = false, - isBeforeEndAddress = false; - for (var i = 0; i < startAddress.length; i++) { - if (i >= addressTarget.length) break; - if (addressTarget[i] > startAddress[i]) { - isAfterStartAddress = true; - break; - } else if (addressTarget[i] < startAddress[i]) { - break; - } - } - for (var i = 0; i < endAddress.length; i++) { - if (i >= addressTarget.length) break; - if (addressTarget[i] < startAddress[i]) { - isBeforeEndAddress = true; - break; - } else if (addressTarget[i] > startAddress[i]) { - break; - } - } - return isAfterStartAddress && isBeforeEndAddress; - } - } - }, - deletesection: { - execCommand: function(cmd, section, keepChildren) { - var me = this; - - if (!section) return; - - function getNodeFromAddress(startAddress) { - var current = me.body; - for (var i = 0; i < startAddress.length; i++) { - if (!current.childNodes) return null; - current = current.childNodes[startAddress[i]]; - } - return current; - } - - var startNode = getNodeFromAddress(section.startAddress), - endNode = getNodeFromAddress(section.endAddress), - current = startNode, - nextNode; - - if (!keepChildren) { - while ( - current && - domUtils.inDoc(endNode, me.document) && - !( - domUtils.getPosition(current, endNode) & - domUtils.POSITION_FOLLOWING - ) - ) { - nextNode = current.nextSibling; - domUtils.remove(current); - current = nextNode; - } - } else { - domUtils.remove(current); - } - - me.fireEvent("updateSections"); - } - }, - selectsection: { - execCommand: function(cmd, section) { - if (!section && !section.dom) return false; - var me = this, - range = me.selection.getRange(), - address = { - startAddress: utils.clone(section.startAddress, []), - endAddress: utils.clone(section.endAddress, []) - }; - address.endAddress[address.endAddress.length - 1]++; - range.moveToAddress(address).select().scrollToView(); - return true; - }, - notNeedUndo: true - }, - scrolltosection: { - execCommand: function(cmd, section) { - if (!section && !section.dom) return false; - var me = this, - range = me.selection.getRange(), - address = { - startAddress: section.startAddress, - endAddress: section.endAddress - }; - address.endAddress[address.endAddress.length - 1]++; - range.moveToAddress(address).scrollToView(); - return true; - }, - notNeedUndo: true - } - } - }; -}); - - -// plugins/simpleupload.js -/** - * @description - * 简单上传:点击按钮,直接选择文件上传 - * @author Jinqn - * @date 2014-03-31 - */ -UE.plugin.register("simpleupload", function() { - var me = this, - isLoaded = false, - containerBtn; - - function initUploadBtn() { - var w = containerBtn.offsetWidth || 20, - h = containerBtn.offsetHeight || 20, - btnIframe = document.createElement("iframe"), - btnStyle = - "display:block;width:" + - w + - "px;height:" + - h + - "px;overflow:hidden;border:0;margin:0;padding:0;position:absolute;top:0;left:0;filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;cursor:pointer;"; - - domUtils.on(btnIframe, "load", function() { - var timestrap = (+new Date()).toString(36), - wrapper, - btnIframeDoc, - btnIframeBody; - - btnIframeDoc = - btnIframe.contentDocument || btnIframe.contentWindow.document; - btnIframeBody = btnIframeDoc.body; - wrapper = btnIframeDoc.createElement("div"); - - wrapper.innerHTML = - '
    ' + - '' + - "
    " + - ''; - - wrapper.className = "edui-" + me.options.theme; - wrapper.id = me.ui.id + "_iframeupload"; - btnIframeBody.style.cssText = btnStyle; - btnIframeBody.style.width = w + "px"; - btnIframeBody.style.height = h + "px"; - btnIframeBody.appendChild(wrapper); - - if (btnIframeBody.parentNode) { - btnIframeBody.parentNode.style.width = w + "px"; - btnIframeBody.parentNode.style.height = w + "px"; - } - - var form = btnIframeDoc.getElementById("edui_form_" + timestrap); - var input = btnIframeDoc.getElementById("edui_input_" + timestrap); - var iframe = btnIframeDoc.getElementById("edui_iframe_" + timestrap); - - domUtils.on(input, "change", function() { - if (!input.value) return; - var loadingId = "loading_" + (+new Date()).toString(36); - var params = - utils.serializeParam(me.queryCommandValue("serverparam")) || ""; - - var imageActionUrl = me.getActionUrl(me.getOpt("imageActionName")); - var allowFiles = me.getOpt("imageAllowFiles"); - - me.focus(); - me.execCommand( - "inserthtml", - '' - ); - - function callback() { - try { - var link, - json, - loader, - body = (iframe.contentDocument || iframe.contentWindow.document) - .body, - result = body.innerText || body.textContent || ""; - json = new Function("return " + result)(); - link = me.options.imageUrlPrefix + json.url; - if (json.state == "SUCCESS" && json.url) { - loader = me.document.getElementById(loadingId); - domUtils.removeClasses(loader, "loadingclass"); - loader.setAttribute("src", link); - loader.setAttribute("_src", link); - loader.setAttribute("alt", json.original || ""); - loader.removeAttribute("id"); - me.fireEvent("contentchange"); - } else { - showErrorLoader && showErrorLoader(json.state); - } - } catch (er) { - showErrorLoader && - showErrorLoader(me.getLang("simpleupload.loadError")); - } - form.reset(); - domUtils.un(iframe, "load", callback); - } - function showErrorLoader(title) { - if (loadingId) { - var loader = me.document.getElementById(loadingId); - loader && domUtils.remove(loader); - me.fireEvent("showmessage", { - id: loadingId, - content: title, - type: "error", - timeout: 4000 - }); - } - } - - /* 判断后端配置是否没有加载成功 */ - if (!me.getOpt("imageActionName")) { - errorHandler(me.getLang("autoupload.errorLoadConfig")); - return; - } - // 判断文件格式是否错误 - var filename = input.value, - fileext = filename ? filename.substr(filename.lastIndexOf(".")) : ""; - if ( - !fileext || - (allowFiles && - (allowFiles.join("") + ".").indexOf(fileext.toLowerCase() + ".") == - -1) - ) { - showErrorLoader(me.getLang("simpleupload.exceedTypeError")); - return; - } - - domUtils.on(iframe, "load", callback); - form.action = utils.formatUrl( - imageActionUrl + - (imageActionUrl.indexOf("?") == -1 ? "?" : "&") + - params - ); - form.submit(); - }); - - var stateTimer; - me.addListener("selectionchange", function() { - clearTimeout(stateTimer); - stateTimer = setTimeout(function() { - var state = me.queryCommandState("simpleupload"); - if (state == -1) { - input.disabled = "disabled"; - } else { - input.disabled = false; - } - }, 400); - }); - isLoaded = true; - }); - - btnIframe.style.cssText = btnStyle; - containerBtn.appendChild(btnIframe); - } - - return { - bindEvents: { - ready: function() { - //设置loading的样式 - utils.cssRule( - "loading", - ".loadingclass{display:inline-block;cursor:default;background: url('" + - this.options.themePath + - this.options.theme + - "/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\n" + - ".loaderrorclass{display:inline-block;cursor:default;background: url('" + - this.options.themePath + - this.options.theme + - "/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;" + - "}", - this.document - ); - }, - /* 初始化简单上传按钮 */ - simpleuploadbtnready: function(type, container) { - containerBtn = container; - me.afterConfigReady(initUploadBtn); - } - }, - outputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(n) { - if (/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr("class"))) { - n.parentNode.removeChild(n); - } - }); - }, - commands: { - simpleupload: { - queryCommandState: function() { - return isLoaded ? 0 : -1; - } - } - } - }; -}); - - -// plugins/serverparam.js -/** - * 服务器提交的额外参数列表设置插件 - * @file - * @since 1.2.6.1 - */ -UE.plugin.register("serverparam", function() { - var me = this, - serverParam = {}; - - return { - commands: { - /** - * 修改服务器提交的额外参数列表,清除所有项 - * @command serverparam - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand('serverparam'); - * editor.queryCommandValue('serverparam'); //返回空 - * ``` - */ - /** - * 修改服务器提交的额外参数列表,删除指定项 - * @command serverparam - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } key 要清除的属性 - * @example - * ```javascript - * editor.execCommand('serverparam', 'name'); //删除属性name - * ``` - */ - /** - * 修改服务器提交的额外参数列表,使用键值添加项 - * @command serverparam - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } key 要添加的属性 - * @param { String } value 要添加属性的值 - * @example - * ```javascript - * editor.execCommand('serverparam', 'name', 'hello'); - * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'} - * ``` - */ - /** - * 修改服务器提交的额外参数列表,传入键值对对象添加多项 - * @command serverparam - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Object } key 传入的键值对对象 - * @example - * ```javascript - * editor.execCommand('serverparam', {'name': 'hello'}); - * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'} - * ``` - */ - /** - * 修改服务器提交的额外参数列表,使用自定义函数添加多项 - * @command serverparam - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Function } key 自定义获取参数的函数 - * @example - * ```javascript - * editor.execCommand('serverparam', function(editor){ - * return {'key': 'value'}; - * }); - * editor.queryCommandValue('serverparam'); //返回对象 {'key': 'value'} - * ``` - */ - - /** - * 获取服务器提交的额外参数列表 - * @command serverparam - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.queryCommandValue( 'serverparam' ); //返回对象 {'key': 'value'} - * ``` - */ - serverparam: { - execCommand: function(cmd, key, value) { - if (key === undefined || key === null) { - //不传参数,清空列表 - serverParam = {}; - } else if (utils.isString(key)) { - //传入键值 - if (value === undefined || value === null) { - delete serverParam[key]; - } else { - serverParam[key] = value; - } - } else if (utils.isObject(key)) { - //传入对象,覆盖列表项 - utils.extend(serverParam, key, false); - } else if (utils.isFunction(key)) { - //传入函数,添加列表项 - utils.extend(serverParam, key(), false); - } - }, - queryCommandValue: function() { - return serverParam || {}; - } - } - } - }; -}); - - -// plugins/insertfile.js -/** - * 插入附件 - */ -UE.plugin.register("insertfile", function() { - var me = this; - - function getFileIcon(url) { - var ext = url.substr(url.lastIndexOf(".") + 1).toLowerCase(), - maps = { - rar: "icon_rar.gif", - zip: "icon_rar.gif", - tar: "icon_rar.gif", - gz: "icon_rar.gif", - bz2: "icon_rar.gif", - doc: "icon_doc.gif", - docx: "icon_doc.gif", - pdf: "icon_pdf.gif", - mp3: "icon_mp3.gif", - xls: "icon_xls.gif", - chm: "icon_chm.gif", - ppt: "icon_ppt.gif", - pptx: "icon_ppt.gif", - avi: "icon_mv.gif", - rmvb: "icon_mv.gif", - wmv: "icon_mv.gif", - flv: "icon_mv.gif", - swf: "icon_mv.gif", - rm: "icon_mv.gif", - exe: "icon_exe.gif", - psd: "icon_psd.gif", - txt: "icon_txt.gif", - jpg: "icon_jpg.gif", - png: "icon_jpg.gif", - jpeg: "icon_jpg.gif", - gif: "icon_jpg.gif", - ico: "icon_jpg.gif", - bmp: "icon_jpg.gif" - }; - return maps[ext] ? maps[ext] : maps["txt"]; - } - - return { - commands: { - insertfile: { - execCommand: function(command, filelist) { - filelist = utils.isArray(filelist) ? filelist : [filelist]; - - if (me.fireEvent("beforeinsertfile", filelist) === true) { - return; - } - - var i, - item, - icon, - title, - html = "", - URL = me.getOpt("UEDITOR_HOME_URL"), - iconDir = - URL + - (URL.substr(URL.length - 1) == "/" ? "" : "/") + - "dialogs/attachment/fileTypeImages/"; - for (i = 0; i < filelist.length; i++) { - item = filelist[i]; - icon = iconDir + getFileIcon(item.url); - title = - item.title || item.url.substr(item.url.lastIndexOf("/") + 1); - html += - '

    ' + - '' + - '' + - title + - "" + - "

    "; - } - me.execCommand("insertHtml", html); - - me.fireEvent("afterinsertfile", filelist); - } - } - } - }; -}); - - -// ui/ui.js -var baidu = baidu || {}; -baidu.editor = baidu.editor || {}; -UE.ui = baidu.editor.ui = {}; - - -// ui/uiutils.js -(function() { - var browser = baidu.editor.browser, - domUtils = baidu.editor.dom.domUtils; - - var magic = "$EDITORUI"; - var root = (window[magic] = {}); - var uidMagic = "ID" + magic; - var uidCount = 0; - - var uiUtils = (baidu.editor.ui.uiUtils = { - uid: function(obj) { - return obj ? obj[uidMagic] || (obj[uidMagic] = ++uidCount) : ++uidCount; - }, - hook: function(fn, callback) { - var dg; - if (fn && fn._callbacks) { - dg = fn; - } else { - dg = function() { - var q; - if (fn) { - q = fn.apply(this, arguments); - } - var callbacks = dg._callbacks; - var k = callbacks.length; - while (k--) { - var r = callbacks[k].apply(this, arguments); - if (q === undefined) { - q = r; - } - } - return q; - }; - dg._callbacks = []; - } - dg._callbacks.push(callback); - return dg; - }, - createElementByHtml: function(html) { - var el = document.createElement("div"); - el.innerHTML = html; - el = el.firstChild; - el.parentNode.removeChild(el); - return el; - }, - getViewportElement: function() { - return browser.ie && browser.quirks - ? document.body - : document.documentElement; - }, - getClientRect: function(element) { - var bcr; - //trace IE6下在控制编辑器显隐时可能会报错,catch一下 - try { - bcr = element.getBoundingClientRect(); - } catch (e) { - bcr = { left: 0, top: 0, height: 0, width: 0 }; - } - var rect = { - left: Math.round(bcr.left), - top: Math.round(bcr.top), - height: Math.round(bcr.bottom - bcr.top), - width: Math.round(bcr.right - bcr.left) - }; - var doc; - while ( - (doc = element.ownerDocument) !== document && - (element = domUtils.getWindow(doc).frameElement) - ) { - bcr = element.getBoundingClientRect(); - rect.left += bcr.left; - rect.top += bcr.top; - } - rect.bottom = rect.top + rect.height; - rect.right = rect.left + rect.width; - return rect; - }, - getViewportRect: function() { - var viewportEl = uiUtils.getViewportElement(); - var width = (window.innerWidth || viewportEl.clientWidth) | 0; - var height = (window.innerHeight || viewportEl.clientHeight) | 0; - return { - left: 0, - top: 0, - height: height, - width: width, - bottom: height, - right: width - }; - }, - setViewportOffset: function(element, offset) { - var rect; - var fixedLayer = uiUtils.getFixedLayer(); - if (element.parentNode === fixedLayer) { - element.style.left = offset.left + "px"; - element.style.top = offset.top + "px"; - } else { - domUtils.setViewportOffset(element, offset); - } - }, - getEventOffset: function(evt) { - var el = evt.target || evt.srcElement; - var rect = uiUtils.getClientRect(el); - var offset = uiUtils.getViewportOffsetByEvent(evt); - return { - left: offset.left - rect.left, - top: offset.top - rect.top - }; - }, - getViewportOffsetByEvent: function(evt) { - var el = evt.target || evt.srcElement; - var frameEl = domUtils.getWindow(el).frameElement; - var offset = { - left: evt.clientX, - top: evt.clientY - }; - if (frameEl && el.ownerDocument !== document) { - var rect = uiUtils.getClientRect(frameEl); - offset.left += rect.left; - offset.top += rect.top; - } - return offset; - }, - setGlobal: function(id, obj) { - root[id] = obj; - return magic + '["' + id + '"]'; - }, - unsetGlobal: function(id) { - delete root[id]; - }, - copyAttributes: function(tgt, src) { - var attributes = src.attributes; - var k = attributes.length; - while (k--) { - var attrNode = attributes[k]; - if ( - attrNode.nodeName != "style" && - attrNode.nodeName != "class" && - (!browser.ie || attrNode.specified) - ) { - tgt.setAttribute(attrNode.nodeName, attrNode.nodeValue); - } - } - if (src.className) { - domUtils.addClass(tgt, src.className); - } - if (src.style.cssText) { - tgt.style.cssText += ";" + src.style.cssText; - } - }, - removeStyle: function(el, styleName) { - if (el.style.removeProperty) { - el.style.removeProperty(styleName); - } else if (el.style.removeAttribute) { - el.style.removeAttribute(styleName); - } else throw ""; - }, - contains: function(elA, elB) { - return ( - elA && - elB && - (elA === elB - ? false - : elA.contains - ? elA.contains(elB) - : elA.compareDocumentPosition(elB) & 16) - ); - }, - startDrag: function(evt, callbacks, doc) { - var doc = doc || document; - var startX = evt.clientX; - var startY = evt.clientY; - function handleMouseMove(evt) { - var x = evt.clientX - startX; - var y = evt.clientY - startY; - callbacks.ondragmove(x, y, evt); - if (evt.stopPropagation) { - evt.stopPropagation(); - } else { - evt.cancelBubble = true; - } - } - if (doc.addEventListener) { - function handleMouseUp(evt) { - doc.removeEventListener("mousemove", handleMouseMove, true); - doc.removeEventListener("mouseup", handleMouseUp, true); - window.removeEventListener("mouseup", handleMouseUp, true); - callbacks.ondragstop(); - } - doc.addEventListener("mousemove", handleMouseMove, true); - doc.addEventListener("mouseup", handleMouseUp, true); - window.addEventListener("mouseup", handleMouseUp, true); - - evt.preventDefault(); - } else { - var elm = evt.srcElement; - elm.setCapture(); - function releaseCaptrue() { - elm.releaseCapture(); - elm.detachEvent("onmousemove", handleMouseMove); - elm.detachEvent("onmouseup", releaseCaptrue); - elm.detachEvent("onlosecaptrue", releaseCaptrue); - callbacks.ondragstop(); - } - elm.attachEvent("onmousemove", handleMouseMove); - elm.attachEvent("onmouseup", releaseCaptrue); - elm.attachEvent("onlosecaptrue", releaseCaptrue); - evt.returnValue = false; - } - callbacks.ondragstart(); - }, - getFixedLayer: function() { - var layer = document.getElementById("edui_fixedlayer"); - if (layer == null) { - layer = document.createElement("div"); - layer.id = "edui_fixedlayer"; - document.body.appendChild(layer); - if (browser.ie && browser.version <= 8) { - layer.style.position = "absolute"; - bindFixedLayer(); - setTimeout(updateFixedOffset); - } else { - layer.style.position = "fixed"; - } - layer.style.left = "0"; - layer.style.top = "0"; - layer.style.width = "0"; - layer.style.height = "0"; - } - return layer; - }, - makeUnselectable: function(element) { - if (browser.opera || (browser.ie && browser.version < 9)) { - element.unselectable = "on"; - if (element.hasChildNodes()) { - for (var i = 0; i < element.childNodes.length; i++) { - if (element.childNodes[i].nodeType == 1) { - uiUtils.makeUnselectable(element.childNodes[i]); - } - } - } - } else { - if (element.style.MozUserSelect !== undefined) { - element.style.MozUserSelect = "none"; - } else if (element.style.WebkitUserSelect !== undefined) { - element.style.WebkitUserSelect = "none"; - } else if (element.style.KhtmlUserSelect !== undefined) { - element.style.KhtmlUserSelect = "none"; - } - } - } - }); - function updateFixedOffset() { - var layer = document.getElementById("edui_fixedlayer"); - uiUtils.setViewportOffset(layer, { - left: 0, - top: 0 - }); - // layer.style.display = 'none'; - // layer.style.display = 'block'; - - //#trace: 1354 - // setTimeout(updateFixedOffset); - } - function bindFixedLayer(adjOffset) { - domUtils.on(window, "scroll", updateFixedOffset); - domUtils.on( - window, - "resize", - baidu.editor.utils.defer(updateFixedOffset, 0, true) - ); - } -})(); - - -// ui/uibase.js -(function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - EventBase = baidu.editor.EventBase, - UIBase = (baidu.editor.ui.UIBase = function() {}); - - UIBase.prototype = { - className: "", - uiName: "", - initOptions: function(options) { - var me = this; - for (var k in options) { - me[k] = options[k]; - } - this.id = this.id || "edui" + uiUtils.uid(); - }, - initUIBase: function() { - this._globalKey = utils.unhtml(uiUtils.setGlobal(this.id, this)); - }, - render: function(holder) { - var html = this.renderHtml(); - var el = uiUtils.createElementByHtml(html); - - //by xuheng 给每个node添加class - var list = domUtils.getElementsByTagName(el, "*"); - var theme = "edui-" + (this.theme || this.editor.options.theme); - var layer = document.getElementById("edui_fixedlayer"); - for (var i = 0, node; (node = list[i++]); ) { - domUtils.addClass(node, theme); - } - domUtils.addClass(el, theme); - if (layer) { - layer.className = ""; - domUtils.addClass(layer, theme); - } - - var seatEl = this.getDom(); - if (seatEl != null) { - seatEl.parentNode.replaceChild(el, seatEl); - uiUtils.copyAttributes(el, seatEl); - } else { - if (typeof holder == "string") { - holder = document.getElementById(holder); - } - holder = holder || uiUtils.getFixedLayer(); - domUtils.addClass(holder, theme); - holder.appendChild(el); - } - this.postRender(); - }, - getDom: function(name) { - if (!name) { - return document.getElementById(this.id); - } else { - return document.getElementById(this.id + "_" + name); - } - }, - postRender: function() { - this.fireEvent("postrender"); - }, - getHtmlTpl: function() { - return ""; - }, - formatHtml: function(tpl) { - var prefix = "edui-" + this.uiName; - return tpl - .replace(/##/g, this.id) - .replace(/%%-/g, this.uiName ? prefix + "-" : "") - .replace(/%%/g, (this.uiName ? prefix : "") + " " + this.className) - .replace(/\$\$/g, this._globalKey); - }, - renderHtml: function() { - return this.formatHtml(this.getHtmlTpl()); - }, - dispose: function() { - var box = this.getDom(); - if (box) baidu.editor.dom.domUtils.remove(box); - uiUtils.unsetGlobal(this.id); - } - }; - utils.inherits(UIBase, EventBase); -})(); - - -// ui/separator.js -(function() { - var utils = baidu.editor.utils, - UIBase = baidu.editor.ui.UIBase, - Separator = (baidu.editor.ui.Separator = function(options) { - this.initOptions(options); - this.initSeparator(); - }); - Separator.prototype = { - uiName: "separator", - initSeparator: function() { - this.initUIBase(); - }, - getHtmlTpl: function() { - return '
    '; - } - }; - utils.inherits(Separator, UIBase); -})(); - - -// ui/mask.js -///import core -///import uicore -(function() { - var utils = baidu.editor.utils, - domUtils = baidu.editor.dom.domUtils, - UIBase = baidu.editor.ui.UIBase, - uiUtils = baidu.editor.ui.uiUtils; - - var Mask = (baidu.editor.ui.Mask = function(options) { - this.initOptions(options); - this.initUIBase(); - }); - Mask.prototype = { - getHtmlTpl: function() { - return '
    '; - }, - postRender: function() { - var me = this; - domUtils.on(window, "resize", function() { - setTimeout(function() { - if (!me.isHidden()) { - me._fill(); - } - }); - }); - }, - show: function(zIndex) { - this._fill(); - this.getDom().style.display = ""; - this.getDom().style.zIndex = zIndex; - }, - hide: function() { - this.getDom().style.display = "none"; - this.getDom().style.zIndex = ""; - }, - isHidden: function() { - return this.getDom().style.display == "none"; - }, - _onMouseDown: function() { - return false; - }, - _onClick: function(e, target) { - this.fireEvent("click", e, target); - }, - _fill: function() { - var el = this.getDom(); - var vpRect = uiUtils.getViewportRect(); - el.style.width = vpRect.width + "px"; - el.style.height = vpRect.height + "px"; - } - }; - utils.inherits(Mask, UIBase); -})(); - - -// ui/popup.js -///import core -///import uicore -(function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - domUtils = baidu.editor.dom.domUtils, - UIBase = baidu.editor.ui.UIBase, - Popup = (baidu.editor.ui.Popup = function(options) { - this.initOptions(options); - this.initPopup(); - }); - - var allPopups = []; - function closeAllPopup(evt, el) { - for (var i = 0; i < allPopups.length; i++) { - var pop = allPopups[i]; - if (!pop.isHidden()) { - if (pop.queryAutoHide(el) !== false) { - if ( - evt && - /scroll/gi.test(evt.type) && - pop.className == "edui-wordpastepop" - ) - return; - pop.hide(); - } - } - } - - if (allPopups.length) pop.editor.fireEvent("afterhidepop"); - } - - Popup.postHide = closeAllPopup; - - var ANCHOR_CLASSES = [ - "edui-anchor-topleft", - "edui-anchor-topright", - "edui-anchor-bottomleft", - "edui-anchor-bottomright" - ]; - Popup.prototype = { - SHADOW_RADIUS: 5, - content: null, - _hidden: false, - autoRender: true, - canSideLeft: true, - canSideUp: true, - initPopup: function() { - this.initUIBase(); - allPopups.push(this); - }, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ' + - ' ' + - '
    ' + - '
    ' + - this.getContentHtmlTpl() + - "
    " + - "
    " + - "
    " - ); - }, - getContentHtmlTpl: function() { - if (this.content) { - if (typeof this.content == "string") { - return this.content; - } - return this.content.renderHtml(); - } else { - return ""; - } - }, - _UIBase_postRender: UIBase.prototype.postRender, - postRender: function() { - if (this.content instanceof UIBase) { - this.content.postRender(); - } - - //捕获鼠标滚轮 - if (this.captureWheel && !this.captured) { - this.captured = true; - - var winHeight = - (document.documentElement.clientHeight || - document.body.clientHeight) - 80, - _height = this.getDom().offsetHeight, - _top = uiUtils.getClientRect(this.combox.getDom()).top, - content = this.getDom("content"), - ifr = this.getDom("body").getElementsByTagName("iframe"), - me = this; - - ifr.length && (ifr = ifr[0]); - - while (_top + _height > winHeight) { - _height -= 30; - } - content.style.height = _height + "px"; - //同步更改iframe高度 - ifr && (ifr.style.height = _height + "px"); - - //阻止在combox上的鼠标滚轮事件, 防止用户的正常操作被误解 - if (window.XMLHttpRequest) { - domUtils.on( - content, - "onmousewheel" in document.body ? "mousewheel" : "DOMMouseScroll", - function(e) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.returnValue = false; - } - - if (e.wheelDelta) { - content.scrollTop -= e.wheelDelta / 120 * 60; - } else { - content.scrollTop -= e.detail / -3 * 60; - } - } - ); - } else { - //ie6 - domUtils.on(this.getDom(), "mousewheel", function(e) { - e.returnValue = false; - - me.getDom("content").scrollTop -= e.wheelDelta / 120 * 60; - }); - } - } - this.fireEvent("postRenderAfter"); - this.hide(true); - this._UIBase_postRender(); - }, - _doAutoRender: function() { - if (!this.getDom() && this.autoRender) { - this.render(); - } - }, - mesureSize: function() { - var box = this.getDom("content"); - return uiUtils.getClientRect(box); - }, - fitSize: function() { - if (this.captureWheel && this.sized) { - return this.__size; - } - this.sized = true; - var popBodyEl = this.getDom("body"); - popBodyEl.style.width = ""; - popBodyEl.style.height = ""; - var size = this.mesureSize(); - if (this.captureWheel) { - popBodyEl.style.width = -(-20 - size.width) + "px"; - var height = parseInt(this.getDom("content").style.height, 10); - !window.isNaN(height) && (size.height = height); - } else { - popBodyEl.style.width = size.width + "px"; - } - popBodyEl.style.height = size.height + "px"; - this.__size = size; - this.captureWheel && (this.getDom("content").style.overflow = "auto"); - return size; - }, - showAnchor: function(element, hoz) { - this.showAnchorRect(uiUtils.getClientRect(element), hoz); - }, - showAnchorRect: function(rect, hoz, adj) { - this._doAutoRender(); - var vpRect = uiUtils.getViewportRect(); - this.getDom().style.visibility = "hidden"; - this._show(); - var popSize = this.fitSize(); - - var sideLeft, sideUp, left, top; - if (hoz) { - sideLeft = - this.canSideLeft && - (rect.right + popSize.width > vpRect.right && - rect.left > popSize.width); - sideUp = - this.canSideUp && - (rect.top + popSize.height > vpRect.bottom && - rect.bottom > popSize.height); - left = sideLeft ? rect.left - popSize.width : rect.right; - top = sideUp ? rect.bottom - popSize.height : rect.top; - } else { - sideLeft = - this.canSideLeft && - (rect.right + popSize.width > vpRect.right && - rect.left > popSize.width); - sideUp = - this.canSideUp && - (rect.top + popSize.height > vpRect.bottom && - rect.bottom > popSize.height); - left = sideLeft ? rect.right - popSize.width : rect.left; - top = sideUp ? rect.top - popSize.height : rect.bottom; - } - - var popEl = this.getDom(); - uiUtils.setViewportOffset(popEl, { - left: left, - top: top - }); - domUtils.removeClasses(popEl, ANCHOR_CLASSES); - popEl.className += - " " + ANCHOR_CLASSES[(sideUp ? 1 : 0) * 2 + (sideLeft ? 1 : 0)]; - if (this.editor) { - popEl.style.zIndex = this.editor.container.style.zIndex * 1 + 10; - baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = - popEl.style.zIndex - 1; - } - this.getDom().style.visibility = "visible"; - }, - showAt: function(offset) { - var left = offset.left; - var top = offset.top; - var rect = { - left: left, - top: top, - right: left, - bottom: top, - height: 0, - width: 0 - }; - this.showAnchorRect(rect, false, true); - }, - _show: function() { - if (this._hidden) { - var box = this.getDom(); - box.style.display = ""; - this._hidden = false; - // if (box.setActive) { - // box.setActive(); - // } - this.fireEvent("show"); - } - }, - isHidden: function() { - return this._hidden; - }, - show: function() { - this._doAutoRender(); - this._show(); - }, - hide: function(notNofity) { - if (!this._hidden && this.getDom()) { - this.getDom().style.display = "none"; - this._hidden = true; - if (!notNofity) { - this.fireEvent("hide"); - } - } - }, - queryAutoHide: function(el) { - return !el || !uiUtils.contains(this.getDom(), el); - } - }; - utils.inherits(Popup, UIBase); - - domUtils.on(document, "mousedown", function(evt) { - var el = evt.target || evt.srcElement; - closeAllPopup(evt, el); - }); - domUtils.on(window, "scroll", function(evt, el) { - closeAllPopup(evt, el); - }); -})(); - - -// ui/colorpicker.js -///import core -///import uicore -(function() { - var utils = baidu.editor.utils, - UIBase = baidu.editor.ui.UIBase, - ColorPicker = (baidu.editor.ui.ColorPicker = function(options) { - this.initOptions(options); - this.noColorText = this.noColorText || this.editor.getLang("clearColor"); - this.initUIBase(); - }); - - ColorPicker.prototype = { - getHtmlTpl: function() { - return genColorPicker(this.noColorText, this.editor); - }, - _onTableClick: function(evt) { - var tgt = evt.target || evt.srcElement; - var color = tgt.getAttribute("data-color"); - if (color) { - this.fireEvent("pickcolor", color); - } - }, - _onTableOver: function(evt) { - var tgt = evt.target || evt.srcElement; - var color = tgt.getAttribute("data-color"); - if (color) { - this.getDom("preview").style.backgroundColor = color; - } - }, - _onTableOut: function() { - this.getDom("preview").style.backgroundColor = ""; - }, - _onPickNoColor: function() { - this.fireEvent("picknocolor"); - } - }; - utils.inherits(ColorPicker, UIBase); - - var COLORS = ("ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646," + - "f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada," + - "d8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5," + - "bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f," + - "a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09," + - "7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806," + - "c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,").split( - "," - ); - - function genColorPicker(noColorText, editor) { - var html = - '
    ' + - '
    ' + - '
    ' + - '
    ' + - noColorText + - "
    " + - "
    " + - '' + - '" + - ''; - for (var i = 0; i < COLORS.length; i++) { - if (i && i % 10 === 0) { - html += - "" + - (i == 60 - ? '" - : "") + - ""; - } - html += i < 70 - ? '" - : ""; - } - html += "
    ' + - editor.getLang("themeColor") + - "
    ' + - editor.getLang("standardColor") + - "
    = 60 - ? "border-width:1px;" - : i >= 10 && i < 20 - ? "border-width:1px 1px 0 1px;" - : "border-width:0 1px 0 1px;") + - '"' + - ">
    "; - return html; - } -})(); - - -// ui/tablepicker.js -///import core -///import uicore -(function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - UIBase = baidu.editor.ui.UIBase; - - var TablePicker = (baidu.editor.ui.TablePicker = function(options) { - this.initOptions(options); - this.initTablePicker(); - }); - TablePicker.prototype = { - defaultNumRows: 10, - defaultNumCols: 10, - maxNumRows: 20, - maxNumCols: 20, - numRows: 10, - numCols: 10, - lengthOfCellSide: 22, - initTablePicker: function() { - this.initUIBase(); - }, - getHtmlTpl: function() { - var me = this; - return ( - '
    ' + - '
    ' + - '
    ' + - '' + - "
    " + - '
    " + - '
    ' + - "
    " + - "
    " + - "
    " - ); - }, - _UIBase_render: UIBase.prototype.render, - render: function(holder) { - this._UIBase_render(holder); - this.getDom("label").innerHTML = - "0" + - this.editor.getLang("t_row") + - " x 0" + - this.editor.getLang("t_col"); - }, - _track: function(numCols, numRows) { - var style = this.getDom("overlay").style; - var sideLen = this.lengthOfCellSide; - style.width = numCols * sideLen + "px"; - style.height = numRows * sideLen + "px"; - var label = this.getDom("label"); - label.innerHTML = - numCols + - this.editor.getLang("t_col") + - " x " + - numRows + - this.editor.getLang("t_row"); - this.numCols = numCols; - this.numRows = numRows; - }, - _onMouseOver: function(evt, el) { - var rel = evt.relatedTarget || evt.fromElement; - if (!uiUtils.contains(el, rel) && el !== rel) { - this.getDom("label").innerHTML = - "0" + - this.editor.getLang("t_col") + - " x 0" + - this.editor.getLang("t_row"); - this.getDom("overlay").style.visibility = ""; - } - }, - _onMouseOut: function(evt, el) { - var rel = evt.relatedTarget || evt.toElement; - if (!uiUtils.contains(el, rel) && el !== rel) { - this.getDom("label").innerHTML = - "0" + - this.editor.getLang("t_col") + - " x 0" + - this.editor.getLang("t_row"); - this.getDom("overlay").style.visibility = "hidden"; - } - }, - _onMouseMove: function(evt, el) { - var style = this.getDom("overlay").style; - var offset = uiUtils.getEventOffset(evt); - var sideLen = this.lengthOfCellSide; - var numCols = Math.ceil(offset.left / sideLen); - var numRows = Math.ceil(offset.top / sideLen); - this._track(numCols, numRows); - }, - _onClick: function() { - this.fireEvent("picktable", this.numCols, this.numRows); - } - }; - utils.inherits(TablePicker, UIBase); -})(); - - -// ui/stateful.js -(function() { - var browser = baidu.editor.browser, - domUtils = baidu.editor.dom.domUtils, - uiUtils = baidu.editor.ui.uiUtils; - - var TPL_STATEFUL = - 'onmousedown="$$.Stateful_onMouseDown(event, this);"' + - ' onmouseup="$$.Stateful_onMouseUp(event, this);"' + - (browser.ie - ? ' onmouseenter="$$.Stateful_onMouseEnter(event, this);"' + - ' onmouseleave="$$.Stateful_onMouseLeave(event, this);"' - : ' onmouseover="$$.Stateful_onMouseOver(event, this);"' + - ' onmouseout="$$.Stateful_onMouseOut(event, this);"'); - - baidu.editor.ui.Stateful = { - alwalysHoverable: false, - target: null, //目标元素和this指向dom不一样 - Stateful_init: function() { - this._Stateful_dGetHtmlTpl = this.getHtmlTpl; - this.getHtmlTpl = this.Stateful_getHtmlTpl; - }, - Stateful_getHtmlTpl: function() { - var tpl = this._Stateful_dGetHtmlTpl(); - // 使用function避免$转义 - return tpl.replace(/stateful/g, function() { - return TPL_STATEFUL; - }); - }, - Stateful_onMouseEnter: function(evt, el) { - this.target = el; - if (!this.isDisabled() || this.alwalysHoverable) { - this.addState("hover"); - this.fireEvent("over"); - } - }, - Stateful_onMouseLeave: function(evt, el) { - if (!this.isDisabled() || this.alwalysHoverable) { - this.removeState("hover"); - this.removeState("active"); - this.fireEvent("out"); - } - }, - Stateful_onMouseOver: function(evt, el) { - var rel = evt.relatedTarget; - if (!uiUtils.contains(el, rel) && el !== rel) { - this.Stateful_onMouseEnter(evt, el); - } - }, - Stateful_onMouseOut: function(evt, el) { - var rel = evt.relatedTarget; - if (!uiUtils.contains(el, rel) && el !== rel) { - this.Stateful_onMouseLeave(evt, el); - } - }, - Stateful_onMouseDown: function(evt, el) { - if (!this.isDisabled()) { - this.addState("active"); - } - }, - Stateful_onMouseUp: function(evt, el) { - if (!this.isDisabled()) { - this.removeState("active"); - } - }, - Stateful_postRender: function() { - if (this.disabled && !this.hasState("disabled")) { - this.addState("disabled"); - } - }, - hasState: function(state) { - return domUtils.hasClass(this.getStateDom(), "edui-state-" + state); - }, - addState: function(state) { - if (!this.hasState(state)) { - this.getStateDom().className += " edui-state-" + state; - } - }, - removeState: function(state) { - if (this.hasState(state)) { - domUtils.removeClasses(this.getStateDom(), ["edui-state-" + state]); - } - }, - getStateDom: function() { - return this.getDom("state"); - }, - isChecked: function() { - return this.hasState("checked"); - }, - setChecked: function(checked) { - if (!this.isDisabled() && checked) { - this.addState("checked"); - } else { - this.removeState("checked"); - } - }, - isDisabled: function() { - return this.hasState("disabled"); - }, - setDisabled: function(disabled) { - if (disabled) { - this.removeState("hover"); - this.removeState("checked"); - this.removeState("active"); - this.addState("disabled"); - } else { - this.removeState("disabled"); - } - } - }; -})(); - - -// ui/button.js -///import core -///import uicore -///import ui/stateful.js -(function() { - var utils = baidu.editor.utils, - UIBase = baidu.editor.ui.UIBase, - Stateful = baidu.editor.ui.Stateful, - Button = (baidu.editor.ui.Button = function(options) { - if (options.name) { - var btnName = options.name; - var cssRules = options.cssRules; - if (!options.className) { - options.className = "edui-for-" + btnName; - } - options.cssRules = - ".edui-" + - (options.theme || "default") + - " .edui-toolbar .edui-button.edui-for-" + - btnName + - " .edui-icon {" + - cssRules + - "}"; - } - this.initOptions(options); - this.initButton(); - }); - Button.prototype = { - uiName: "button", - label: "", - title: "", - showIcon: true, - showText: true, - cssRules: "", - initButton: function() { - this.initUIBase(); - this.Stateful_init(); - if (this.cssRules) { - utils.cssRule("edui-customize-" + this.name + "-style", this.cssRules); - } - }, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ' + - '
    ' + - (this.showIcon ? '
    ' : "") + - (this.showText - ? '
    ' + this.label + "
    " - : "") + - "
    " + - "
    " + - "
    " - ); - }, - postRender: function() { - this.Stateful_postRender(); - this.setDisabled(this.disabled); - }, - _onMouseDown: function(e) { - var target = e.target || e.srcElement, - tagName = target && target.tagName && target.tagName.toLowerCase(); - if (tagName == "input" || tagName == "object" || tagName == "object") { - return false; - } - }, - _onClick: function() { - if (!this.isDisabled()) { - this.fireEvent("click"); - } - }, - setTitle: function(text) { - var label = this.getDom("label"); - label.innerHTML = text; - } - }; - utils.inherits(Button, UIBase); - utils.extend(Button.prototype, Stateful); -})(); - - -// ui/splitbutton.js -///import core -///import uicore -///import ui/stateful.js -(function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - domUtils = baidu.editor.dom.domUtils, - UIBase = baidu.editor.ui.UIBase, - Stateful = baidu.editor.ui.Stateful, - SplitButton = (baidu.editor.ui.SplitButton = function(options) { - this.initOptions(options); - this.initSplitButton(); - }); - SplitButton.prototype = { - popup: null, - uiName: "splitbutton", - title: "", - initSplitButton: function() { - this.initUIBase(); - this.Stateful_init(); - var me = this; - if (this.popup != null) { - var popup = this.popup; - this.popup = null; - this.setPopup(popup); - } - }, - _UIBase_postRender: UIBase.prototype.postRender, - postRender: function() { - this.Stateful_postRender(); - this._UIBase_postRender(); - }, - setPopup: function(popup) { - if (this.popup === popup) return; - if (this.popup != null) { - this.popup.dispose(); - } - popup.addListener("show", utils.bind(this._onPopupShow, this)); - popup.addListener("hide", utils.bind(this._onPopupHide, this)); - popup.addListener( - "postrender", - utils.bind(function() { - popup - .getDom("body") - .appendChild( - uiUtils.createElementByHtml( - '
    ' - ) - ); - popup.getDom().className += " " + this.className; - }, this) - ); - this.popup = popup; - }, - _onPopupShow: function() { - this.addState("opened"); - }, - _onPopupHide: function() { - this.removeState("opened"); - }, - getHtmlTpl: function() { - return ( - '
    ' + - "
    ' + - '
    ' + - '
    ' + - "
    " + - '
    ' + - '
    ' + - "
    " - ); - }, - showPopup: function() { - // 当popup往上弹出的时候,做特殊处理 - var rect = uiUtils.getClientRect(this.getDom()); - rect.top -= this.popup.SHADOW_RADIUS; - rect.height += this.popup.SHADOW_RADIUS; - this.popup.showAnchorRect(rect); - }, - _onArrowClick: function(event, el) { - if (!this.isDisabled()) { - this.showPopup(); - } - }, - _onButtonClick: function() { - if (!this.isDisabled()) { - this.fireEvent("buttonclick"); - } - } - }; - utils.inherits(SplitButton, UIBase); - utils.extend(SplitButton.prototype, Stateful, true); -})(); - - -// ui/colorbutton.js -///import core -///import uicore -///import ui/colorpicker.js -///import ui/popup.js -///import ui/splitbutton.js -(function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - ColorPicker = baidu.editor.ui.ColorPicker, - Popup = baidu.editor.ui.Popup, - SplitButton = baidu.editor.ui.SplitButton, - ColorButton = (baidu.editor.ui.ColorButton = function(options) { - this.initOptions(options); - this.initColorButton(); - }); - ColorButton.prototype = { - initColorButton: function() { - var me = this; - this.popup = new Popup({ - content: new ColorPicker({ - noColorText: me.editor.getLang("clearColor"), - editor: me.editor, - onpickcolor: function(t, color) { - me._onPickColor(color); - }, - onpicknocolor: function(t, color) { - me._onPickNoColor(color); - } - }), - editor: me.editor - }); - this.initSplitButton(); - }, - _SplitButton_postRender: SplitButton.prototype.postRender, - postRender: function() { - this._SplitButton_postRender(); - this.getDom("button_body").appendChild( - uiUtils.createElementByHtml( - '
    ' - ) - ); - this.getDom().className += " edui-colorbutton"; - }, - setColor: function(color) { - this.getDom("colorlump").style.backgroundColor = color; - this.color = color; - }, - _onPickColor: function(color) { - if (this.fireEvent("pickcolor", color) !== false) { - this.setColor(color); - this.popup.hide(); - } - }, - _onPickNoColor: function(color) { - if (this.fireEvent("picknocolor") !== false) { - this.popup.hide(); - } - } - }; - utils.inherits(ColorButton, SplitButton); -})(); - - -// ui/tablebutton.js -///import core -///import uicore -///import ui/popup.js -///import ui/tablepicker.js -///import ui/splitbutton.js -(function() { - var utils = baidu.editor.utils, - Popup = baidu.editor.ui.Popup, - TablePicker = baidu.editor.ui.TablePicker, - SplitButton = baidu.editor.ui.SplitButton, - TableButton = (baidu.editor.ui.TableButton = function(options) { - this.initOptions(options); - this.initTableButton(); - }); - TableButton.prototype = { - initTableButton: function() { - var me = this; - this.popup = new Popup({ - content: new TablePicker({ - editor: me.editor, - onpicktable: function(t, numCols, numRows) { - me._onPickTable(numCols, numRows); - } - }), - editor: me.editor - }); - this.initSplitButton(); - }, - _onPickTable: function(numCols, numRows) { - if (this.fireEvent("picktable", numCols, numRows) !== false) { - this.popup.hide(); - } - } - }; - utils.inherits(TableButton, SplitButton); -})(); - - -// ui/autotypesetpicker.js -///import core -///import uicore -(function() { - var utils = baidu.editor.utils, - UIBase = baidu.editor.ui.UIBase; - - var AutoTypeSetPicker = (baidu.editor.ui.AutoTypeSetPicker = function( - options - ) { - this.initOptions(options); - this.initAutoTypeSetPicker(); - }); - AutoTypeSetPicker.prototype = { - initAutoTypeSetPicker: function() { - this.initUIBase(); - }, - getHtmlTpl: function() { - var me = this.editor, - opt = me.options.autotypeset, - lang = me.getLang("autoTypeSet"); - - var textAlignInputName = "textAlignValue" + me.uid, - imageBlockInputName = "imageBlockLineValue" + me.uid, - symbolConverInputName = "symbolConverValue" + me.uid; - - return ( - '
    ' + - '
    ' + - "" + - '" + - '" + - "" + - '" + - '" + - "" + - "" + - '" + - '" + - "" + - '" + - '" + - '" + - "" + - '" + - '" + - '" + - "" + - "
    " + - lang.mergeLine + - '" + - lang.delLine + - "
    " + - lang.removeFormat + - '" + - lang.indent + - "
    " + - lang.alignment + - "' + - '" + - me.getLang("justifyleft") + - '" + - me.getLang("justifycenter") + - '" + - me.getLang("justifyright") + - "
    " + - lang.imageFloat + - "' + - '" + - me.getLang("default") + - '" + - me.getLang("justifyleft") + - '" + - me.getLang("justifycenter") + - '" + - me.getLang("justifyright") + - "
    " + - lang.removeFontsize + - '" + - lang.removeFontFamily + - "
    " + - lang.removeHtml + - "
    " + - lang.pasteFilter + - "
    " + - lang.symbol + - "' + - '" + - lang.bdc2sb + - '" + - lang.tobdc + - "" + - "
    " + - "
    " + - "
    " - ); - }, - _UIBase_render: UIBase.prototype.render - }; - utils.inherits(AutoTypeSetPicker, UIBase); -})(); - - -// ui/autotypesetbutton.js -///import core -///import uicore -///import ui/popup.js -///import ui/autotypesetpicker.js -///import ui/splitbutton.js -(function() { - var utils = baidu.editor.utils, - Popup = baidu.editor.ui.Popup, - AutoTypeSetPicker = baidu.editor.ui.AutoTypeSetPicker, - SplitButton = baidu.editor.ui.SplitButton, - AutoTypeSetButton = (baidu.editor.ui.AutoTypeSetButton = function(options) { - this.initOptions(options); - this.initAutoTypeSetButton(); - }); - function getPara(me) { - var opt = {}, - cont = me.getDom(), - editorId = me.editor.uid, - inputType = null, - attrName = null, - ipts = domUtils.getElementsByTagName(cont, "input"); - for (var i = ipts.length - 1, ipt; (ipt = ipts[i--]); ) { - inputType = ipt.getAttribute("type"); - if (inputType == "checkbox") { - attrName = ipt.getAttribute("name"); - opt[attrName] && delete opt[attrName]; - if (ipt.checked) { - var attrValue = document.getElementById( - attrName + "Value" + editorId - ); - if (attrValue) { - if (/input/gi.test(attrValue.tagName)) { - opt[attrName] = attrValue.value; - } else { - var iptChilds = attrValue.getElementsByTagName("input"); - for ( - var j = iptChilds.length - 1, iptchild; - (iptchild = iptChilds[j--]); - - ) { - if (iptchild.checked) { - opt[attrName] = iptchild.value; - break; - } - } - } - } else { - opt[attrName] = true; - } - } else { - opt[attrName] = false; - } - } else { - opt[ipt.getAttribute("value")] = ipt.checked; - } - } - - var selects = domUtils.getElementsByTagName(cont, "select"); - for (var i = 0, si; (si = selects[i++]); ) { - var attr = si.getAttribute("name"); - opt[attr] = opt[attr] ? si.value : ""; - } - - utils.extend(me.editor.options.autotypeset, opt); - - me.editor.setPreferences("autotypeset", opt); - } - - AutoTypeSetButton.prototype = { - initAutoTypeSetButton: function() { - var me = this; - this.popup = new Popup({ - //传入配置参数 - content: new AutoTypeSetPicker({ editor: me.editor }), - editor: me.editor, - hide: function() { - if (!this._hidden && this.getDom()) { - getPara(this); - this.getDom().style.display = "none"; - this._hidden = true; - this.fireEvent("hide"); - } - } - }); - var flag = 0; - this.popup.addListener("postRenderAfter", function() { - var popupUI = this; - if (flag) return; - var cont = this.getDom(), - btn = cont.getElementsByTagName("button")[0]; - - btn.onclick = function() { - getPara(popupUI); - me.editor.execCommand("autotypeset"); - popupUI.hide(); - }; - - domUtils.on(cont, "click", function(e) { - var target = e.target || e.srcElement, - editorId = me.editor.uid; - if (target && target.tagName == "INPUT") { - // 点击图片浮动的checkbox,去除对应的radio - if ( - target.name == "imageBlockLine" || - target.name == "textAlign" || - target.name == "symbolConver" - ) { - var checked = target.checked, - radioTd = document.getElementById( - target.name + "Value" + editorId - ), - radios = radioTd.getElementsByTagName("input"), - defalutSelect = { - imageBlockLine: "none", - textAlign: "left", - symbolConver: "tobdc" - }; - - for (var i = 0; i < radios.length; i++) { - if (checked) { - if (radios[i].value == defalutSelect[target.name]) { - radios[i].checked = "checked"; - } - } else { - radios[i].checked = false; - } - } - } - // 点击radio,选中对应的checkbox - if ( - target.name == "imageBlockLineValue" + editorId || - target.name == "textAlignValue" + editorId || - target.name == "bdc" - ) { - var checkboxs = target.parentNode.previousSibling.getElementsByTagName( - "input" - ); - checkboxs && (checkboxs[0].checked = true); - } - - getPara(popupUI); - } - }); - - flag = 1; - }); - this.initSplitButton(); - } - }; - utils.inherits(AutoTypeSetButton, SplitButton); -})(); - - -// ui/cellalignpicker.js -///import core -///import uicore -(function() { - var utils = baidu.editor.utils, - Popup = baidu.editor.ui.Popup, - Stateful = baidu.editor.ui.Stateful, - UIBase = baidu.editor.ui.UIBase; - - /** - * 该参数将新增一个参数: selected, 参数类型为一个Object, 形如{ 'align': 'center', 'valign': 'top' }, 表示单元格的初始 - * 对齐状态为: 竖直居上,水平居中; 其中 align的取值为:'center', 'left', 'right'; valign的取值为: 'top', 'middle', 'bottom' - * @update 2013/4/2 hancong03@baidu.com - */ - var CellAlignPicker = (baidu.editor.ui.CellAlignPicker = function(options) { - this.initOptions(options); - this.initSelected(); - this.initCellAlignPicker(); - }); - CellAlignPicker.prototype = { - //初始化选中状态, 该方法将根据传递进来的参数获取到应该选中的对齐方式图标的索引 - initSelected: function() { - var status = { - valign: { - top: 0, - middle: 1, - bottom: 2 - }, - align: { - left: 0, - center: 1, - right: 2 - }, - count: 3 - }, - result = -1; - - if (this.selected) { - this.selectedIndex = - status.valign[this.selected.valign] * status.count + - status.align[this.selected.align]; - } - }, - initCellAlignPicker: function() { - this.initUIBase(); - this.Stateful_init(); - }, - getHtmlTpl: function() { - var alignType = ["left", "center", "right"], - COUNT = 9, - tempClassName = null, - tempIndex = -1, - tmpl = []; - - for (var i = 0; i < COUNT; i++) { - tempClassName = this.selectedIndex === i - ? ' class="edui-cellalign-selected" ' - : ""; - tempIndex = i % 3; - - tempIndex === 0 && tmpl.push(""); - - tmpl.push( - '
    ' - ); - - tempIndex === 2 && tmpl.push(""); - } - - return ( - '
    ' + - '
    ' + - '' + - tmpl.join("") + - "
    " + - "
    " + - "
    " - ); - }, - getStateDom: function() { - return this.target; - }, - _onClick: function(evt) { - var target = evt.target || evt.srcElement; - if (/icon/.test(target.className)) { - this.items[target.parentNode.getAttribute("index")].onclick(); - Popup.postHide(evt); - } - }, - _UIBase_render: UIBase.prototype.render - }; - utils.inherits(CellAlignPicker, UIBase); - utils.extend(CellAlignPicker.prototype, Stateful, true); -})(); - - -// ui/pastepicker.js -///import core -///import uicore -(function() { - var utils = baidu.editor.utils, - Stateful = baidu.editor.ui.Stateful, - uiUtils = baidu.editor.ui.uiUtils, - UIBase = baidu.editor.ui.UIBase; - - var PastePicker = (baidu.editor.ui.PastePicker = function(options) { - this.initOptions(options); - this.initPastePicker(); - }); - PastePicker.prototype = { - initPastePicker: function() { - this.initUIBase(); - this.Stateful_init(); - }, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ' + - '
    ' + - this.editor.getLang("pasteOpt") + - "
    " + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - "
    " + - "
    " + - "
    " - ); - }, - getStateDom: function() { - return this.target; - }, - format: function(param) { - this.editor.ui._isTransfer = true; - this.editor.fireEvent("pasteTransfer", param); - }, - _onClick: function(cur) { - var node = domUtils.getNextDomNode(cur), - screenHt = uiUtils.getViewportRect().height, - subPop = uiUtils.getClientRect(node); - - if (subPop.top + subPop.height > screenHt) - node.style.top = -subPop.height - cur.offsetHeight + "px"; - else node.style.top = ""; - - if (/hidden/gi.test(domUtils.getComputedStyle(node, "visibility"))) { - node.style.visibility = "visible"; - domUtils.addClass(cur, "edui-state-opened"); - } else { - node.style.visibility = "hidden"; - domUtils.removeClasses(cur, "edui-state-opened"); - } - }, - _UIBase_render: UIBase.prototype.render - }; - utils.inherits(PastePicker, UIBase); - utils.extend(PastePicker.prototype, Stateful, true); -})(); - - -// ui/toolbar.js -(function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - UIBase = baidu.editor.ui.UIBase, - Toolbar = (baidu.editor.ui.Toolbar = function(options) { - this.initOptions(options); - this.initToolbar(); - }); - Toolbar.prototype = { - items: null, - initToolbar: function() { - this.items = this.items || []; - this.initUIBase(); - }, - add: function(item, index) { - if (index === undefined) { - this.items.push(item); - } else { - this.items.splice(index, 0, item); - } - }, - getHtmlTpl: function() { - var buff = []; - for (var i = 0; i < this.items.length; i++) { - buff[i] = this.items[i].renderHtml(); - } - return ( - '
    ' + - buff.join("") + - "
    " - ); - }, - postRender: function() { - var box = this.getDom(); - for (var i = 0; i < this.items.length; i++) { - this.items[i].postRender(); - } - uiUtils.makeUnselectable(box); - }, - _onMouseDown: function(e) { - var target = e.target || e.srcElement, - tagName = target && target.tagName && target.tagName.toLowerCase(); - if (tagName == "input" || tagName == "object" || tagName == "object") { - return false; - } - } - }; - utils.inherits(Toolbar, UIBase); -})(); - - -// ui/menu.js -///import core -///import uicore -///import ui\popup.js -///import ui\stateful.js -(function() { - var utils = baidu.editor.utils, - domUtils = baidu.editor.dom.domUtils, - uiUtils = baidu.editor.ui.uiUtils, - UIBase = baidu.editor.ui.UIBase, - Popup = baidu.editor.ui.Popup, - Stateful = baidu.editor.ui.Stateful, - CellAlignPicker = baidu.editor.ui.CellAlignPicker, - Menu = (baidu.editor.ui.Menu = function(options) { - this.initOptions(options); - this.initMenu(); - }); - - var menuSeparator = { - renderHtml: function() { - return '
    '; - }, - postRender: function() {}, - queryAutoHide: function() { - return true; - } - }; - Menu.prototype = { - items: null, - uiName: "menu", - initMenu: function() { - this.items = this.items || []; - this.initPopup(); - this.initItems(); - }, - initItems: function() { - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - if (item == "-") { - this.items[i] = this.getSeparator(); - } else if (!(item instanceof MenuItem)) { - item.editor = this.editor; - item.theme = this.editor.options.theme; - this.items[i] = this.createItem(item); - } - } - }, - getSeparator: function() { - return menuSeparator; - }, - createItem: function(item) { - //新增一个参数menu, 该参数存储了menuItem所对应的menu引用 - item.menu = this; - return new MenuItem(item); - }, - _Popup_getContentHtmlTpl: Popup.prototype.getContentHtmlTpl, - getContentHtmlTpl: function() { - if (this.items.length == 0) { - return this._Popup_getContentHtmlTpl(); - } - var buff = []; - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - buff[i] = item.renderHtml(); - } - return '
    ' + buff.join("") + "
    "; - }, - _Popup_postRender: Popup.prototype.postRender, - postRender: function() { - var me = this; - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - item.ownerMenu = this; - item.postRender(); - } - domUtils.on(this.getDom(), "mouseover", function(evt) { - evt = evt || event; - var rel = evt.relatedTarget || evt.fromElement; - var el = me.getDom(); - if (!uiUtils.contains(el, rel) && el !== rel) { - me.fireEvent("over"); - } - }); - this._Popup_postRender(); - }, - queryAutoHide: function(el) { - if (el) { - if (uiUtils.contains(this.getDom(), el)) { - return false; - } - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - if (item.queryAutoHide(el) === false) { - return false; - } - } - } - }, - clearItems: function() { - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - clearTimeout(item._showingTimer); - clearTimeout(item._closingTimer); - if (item.subMenu) { - item.subMenu.destroy(); - } - } - this.items = []; - }, - destroy: function() { - if (this.getDom()) { - domUtils.remove(this.getDom()); - } - this.clearItems(); - }, - dispose: function() { - this.destroy(); - } - }; - utils.inherits(Menu, Popup); - - /** - * @update 2013/04/03 hancong03 新增一个参数menu, 该参数存储了menuItem所对应的menu引用 - * @type {Function} - */ - var MenuItem = (baidu.editor.ui.MenuItem = function(options) { - this.initOptions(options); - this.initUIBase(); - this.Stateful_init(); - if (this.subMenu && !(this.subMenu instanceof Menu)) { - if (options.className && options.className.indexOf("aligntd") != -1) { - var me = this; - - //获取单元格对齐初始状态 - this.subMenu.selected = this.editor.queryCommandValue("cellalignment"); - - this.subMenu = new Popup({ - content: new CellAlignPicker(this.subMenu), - parentMenu: me, - editor: me.editor, - destroy: function() { - if (this.getDom()) { - domUtils.remove(this.getDom()); - } - } - }); - this.subMenu.addListener("postRenderAfter", function() { - domUtils.on(this.getDom(), "mouseover", function() { - me.addState("opened"); - }); - }); - } else { - this.subMenu = new Menu(this.subMenu); - } - } - }); - MenuItem.prototype = { - label: "", - subMenu: null, - ownerMenu: null, - uiName: "menuitem", - alwalysHoverable: true, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ' + - this.renderLabelHtml() + - "
    " + - "
    " - ); - }, - postRender: function() { - var me = this; - this.addListener("over", function() { - me.ownerMenu.fireEvent("submenuover", me); - if (me.subMenu) { - me.delayShowSubMenu(); - } - }); - if (this.subMenu) { - this.getDom().className += " edui-hassubmenu"; - this.subMenu.render(); - this.addListener("out", function() { - me.delayHideSubMenu(); - }); - this.subMenu.addListener("over", function() { - clearTimeout(me._closingTimer); - me._closingTimer = null; - me.addState("opened"); - }); - this.ownerMenu.addListener("hide", function() { - me.hideSubMenu(); - }); - this.ownerMenu.addListener("submenuover", function(t, subMenu) { - if (subMenu !== me) { - me.delayHideSubMenu(); - } - }); - this.subMenu._bakQueryAutoHide = this.subMenu.queryAutoHide; - this.subMenu.queryAutoHide = function(el) { - if (el && uiUtils.contains(me.getDom(), el)) { - return false; - } - return this._bakQueryAutoHide(el); - }; - } - this.getDom().style.tabIndex = "-1"; - uiUtils.makeUnselectable(this.getDom()); - this.Stateful_postRender(); - }, - delayShowSubMenu: function() { - var me = this; - if (!me.isDisabled()) { - me.addState("opened"); - clearTimeout(me._showingTimer); - clearTimeout(me._closingTimer); - me._closingTimer = null; - me._showingTimer = setTimeout(function() { - me.showSubMenu(); - }, 250); - } - }, - delayHideSubMenu: function() { - var me = this; - if (!me.isDisabled()) { - me.removeState("opened"); - clearTimeout(me._showingTimer); - if (!me._closingTimer) { - me._closingTimer = setTimeout(function() { - if (!me.hasState("opened")) { - me.hideSubMenu(); - } - me._closingTimer = null; - }, 400); - } - } - }, - renderLabelHtml: function() { - return ( - '
    ' + - '
    ' + - '
    ' + - (this.label || "") + - "
    " - ); - }, - getStateDom: function() { - return this.getDom(); - }, - queryAutoHide: function(el) { - if (this.subMenu && this.hasState("opened")) { - return this.subMenu.queryAutoHide(el); - } - }, - _onClick: function(event, this_) { - if (this.hasState("disabled")) return; - if (this.fireEvent("click", event, this_) !== false) { - if (this.subMenu) { - this.showSubMenu(); - } else { - Popup.postHide(event); - } - } - }, - showSubMenu: function() { - var rect = uiUtils.getClientRect(this.getDom()); - rect.right -= 5; - rect.left += 2; - rect.width -= 7; - rect.top -= 4; - rect.bottom += 4; - rect.height += 8; - this.subMenu.showAnchorRect(rect, true, true); - }, - hideSubMenu: function() { - this.subMenu.hide(); - } - }; - utils.inherits(MenuItem, UIBase); - utils.extend(MenuItem.prototype, Stateful, true); -})(); - - -// ui/combox.js -///import core -///import uicore -///import ui/menu.js -///import ui/splitbutton.js -(function() { - // todo: menu和item提成通用list - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - Menu = baidu.editor.ui.Menu, - SplitButton = baidu.editor.ui.SplitButton, - Combox = (baidu.editor.ui.Combox = function(options) { - this.initOptions(options); - this.initCombox(); - }); - Combox.prototype = { - uiName: "combox", - onbuttonclick: function() { - this.showPopup(); - }, - initCombox: function() { - var me = this; - this.items = this.items || []; - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - item.uiName = "listitem"; - item.index = i; - item.onclick = function() { - me.selectByIndex(this.index); - }; - } - this.popup = new Menu({ - items: this.items, - uiName: "list", - editor: this.editor, - captureWheel: true, - combox: this - }); - - this.initSplitButton(); - }, - _SplitButton_postRender: SplitButton.prototype.postRender, - postRender: function() { - this._SplitButton_postRender(); - this.setLabel(this.label || ""); - this.setValue(this.initValue || ""); - }, - showPopup: function() { - var rect = uiUtils.getClientRect(this.getDom()); - rect.top += 1; - rect.bottom -= 1; - rect.height -= 2; - this.popup.showAnchorRect(rect); - }, - getValue: function() { - return this.value; - }, - setValue: function(value) { - var index = this.indexByValue(value); - if (index != -1) { - this.selectedIndex = index; - this.setLabel(this.items[index].label); - this.value = this.items[index].value; - } else { - this.selectedIndex = -1; - this.setLabel(this.getLabelForUnknowValue(value)); - this.value = value; - } - }, - setLabel: function(label) { - this.getDom("button_body").innerHTML = label; - this.label = label; - }, - getLabelForUnknowValue: function(value) { - return value; - }, - indexByValue: function(value) { - for (var i = 0; i < this.items.length; i++) { - if (value == this.items[i].value) { - return i; - } - } - return -1; - }, - getItem: function(index) { - return this.items[index]; - }, - selectByIndex: function(index) { - if ( - index < this.items.length && - this.fireEvent("select", index) !== false - ) { - this.selectedIndex = index; - this.value = this.items[index].value; - this.setLabel(this.items[index].label); - } - } - }; - utils.inherits(Combox, SplitButton); -})(); - - -// ui/dialog.js -///import core -///import uicore -///import ui/mask.js -///import ui/button.js -(function() { - var utils = baidu.editor.utils, - domUtils = baidu.editor.dom.domUtils, - uiUtils = baidu.editor.ui.uiUtils, - Mask = baidu.editor.ui.Mask, - UIBase = baidu.editor.ui.UIBase, - Button = baidu.editor.ui.Button, - Dialog = (baidu.editor.ui.Dialog = function(options) { - if (options.name) { - var name = options.name; - var cssRules = options.cssRules; - if (!options.className) { - options.className = "edui-for-" + name; - } - if (cssRules) { - options.cssRules = - ".edui-for-" + name + " .edui-dialog-content {" + cssRules + "}"; - } - } - this.initOptions( - utils.extend( - { - autoReset: true, - draggable: true, - onok: function() {}, - oncancel: function() {}, - onclose: function(t, ok) { - return ok ? this.onok() : this.oncancel(); - }, - //是否控制dialog中的scroll事件, 默认为不阻止 - holdScroll: false - }, - options - ) - ); - this.initDialog(); - }); - var modalMask; - var dragMask; - var activeDialog; - Dialog.prototype = { - draggable: false, - uiName: "dialog", - initDialog: function() { - var me = this, - theme = this.editor.options.theme; - if (this.cssRules) { - this.cssRules = ".edui-" + theme + " " + this.cssRules; - utils.cssRule("edui-customize-" + this.name + "-style", this.cssRules); - } - this.initUIBase(); - this.modalMask = - modalMask || - (modalMask = new Mask({ - className: "edui-dialog-modalmask", - theme: theme, - onclick: function() { - activeDialog && activeDialog.close(false); - } - })); - this.dragMask = - dragMask || - (dragMask = new Mask({ - className: "edui-dialog-dragmask", - theme: theme - })); - this.closeButton = new Button({ - className: "edui-dialog-closebutton", - title: me.closeDialog, - theme: theme, - onclick: function() { - me.close(false); - } - }); - - this.fullscreen && this.initResizeEvent(); - - if (this.buttons) { - for (var i = 0; i < this.buttons.length; i++) { - if (!(this.buttons[i] instanceof Button)) { - this.buttons[i] = new Button( - utils.extend( - this.buttons[i], - { - editor: this.editor - }, - true - ) - ); - } - } - } - }, - initResizeEvent: function() { - var me = this; - - domUtils.on(window, "resize", function() { - if (me._hidden || me._hidden === undefined) { - return; - } - - if (me.__resizeTimer) { - window.clearTimeout(me.__resizeTimer); - } - - me.__resizeTimer = window.setTimeout(function() { - me.__resizeTimer = null; - - var dialogWrapNode = me.getDom(), - contentNode = me.getDom("content"), - wrapRect = UE.ui.uiUtils.getClientRect(dialogWrapNode), - contentRect = UE.ui.uiUtils.getClientRect(contentNode), - vpRect = uiUtils.getViewportRect(); - - contentNode.style.width = - vpRect.width - wrapRect.width + contentRect.width + "px"; - contentNode.style.height = - vpRect.height - wrapRect.height + contentRect.height + "px"; - - dialogWrapNode.style.width = vpRect.width + "px"; - dialogWrapNode.style.height = vpRect.height + "px"; - - me.fireEvent("resize"); - }, 100); - }); - }, - fitSize: function() { - var popBodyEl = this.getDom("body"); - // if (!(baidu.editor.browser.ie && baidu.editor.browser.version == 7)) { - // uiUtils.removeStyle(popBodyEl, 'width'); - // uiUtils.removeStyle(popBodyEl, 'height'); - // } - var size = this.mesureSize(); - popBodyEl.style.width = size.width + "px"; - popBodyEl.style.height = size.height + "px"; - return size; - }, - safeSetOffset: function(offset) { - var me = this; - var el = me.getDom(); - var vpRect = uiUtils.getViewportRect(); - var rect = uiUtils.getClientRect(el); - var left = offset.left; - if (left + rect.width > vpRect.right) { - left = vpRect.right - rect.width; - } - var top = offset.top; - if (top + rect.height > vpRect.bottom) { - top = vpRect.bottom - rect.height; - } - el.style.left = Math.max(left, 0) + "px"; - el.style.top = Math.max(top, 0) + "px"; - }, - showAtCenter: function() { - var vpRect = uiUtils.getViewportRect(); - - if (!this.fullscreen) { - this.getDom().style.display = ""; - var popSize = this.fitSize(); - var titleHeight = this.getDom("titlebar").offsetHeight | 0; - var left = vpRect.width / 2 - popSize.width / 2; - var top = - vpRect.height / 2 - (popSize.height - titleHeight) / 2 - titleHeight; - var popEl = this.getDom(); - this.safeSetOffset({ - left: Math.max(left | 0, 0), - top: Math.max(top | 0, 0) - }); - if (!domUtils.hasClass(popEl, "edui-state-centered")) { - popEl.className += " edui-state-centered"; - } - } else { - var dialogWrapNode = this.getDom(), - contentNode = this.getDom("content"); - - dialogWrapNode.style.display = "block"; - - var wrapRect = UE.ui.uiUtils.getClientRect(dialogWrapNode), - contentRect = UE.ui.uiUtils.getClientRect(contentNode); - dialogWrapNode.style.left = "-100000px"; - - contentNode.style.width = - vpRect.width - wrapRect.width + contentRect.width + "px"; - contentNode.style.height = - vpRect.height - wrapRect.height + contentRect.height + "px"; - - dialogWrapNode.style.width = vpRect.width + "px"; - dialogWrapNode.style.height = vpRect.height + "px"; - dialogWrapNode.style.left = 0; - - //保存环境的overflow值 - this._originalContext = { - html: { - overflowX: document.documentElement.style.overflowX, - overflowY: document.documentElement.style.overflowY - }, - body: { - overflowX: document.body.style.overflowX, - overflowY: document.body.style.overflowY - } - }; - - document.documentElement.style.overflowX = "hidden"; - document.documentElement.style.overflowY = "hidden"; - document.body.style.overflowX = "hidden"; - document.body.style.overflowY = "hidden"; - } - - this._show(); - }, - getContentHtml: function() { - var contentHtml = ""; - if (typeof this.content == "string") { - contentHtml = this.content; - } else if (this.iframeUrl) { - contentHtml = - ''; - } - return contentHtml; - }, - getHtmlTpl: function() { - var footHtml = ""; - - if (this.buttons) { - var buff = []; - for (var i = 0; i < this.buttons.length; i++) { - buff[i] = this.buttons[i].renderHtml(); - } - footHtml = - '
    ' + - '
    ' + - buff.join("") + - "
    " + - "
    "; - } - - return ( - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '' + - (this.title || "") + - "" + - "
    " + - this.closeButton.renderHtml() + - "
    " + - '
    ' + - (this.autoReset ? "" : this.getContentHtml()) + - "
    " + - footHtml + - "
    " - ); - }, - postRender: function() { - // todo: 保持居中/记住上次关闭位置选项 - if (!this.modalMask.getDom()) { - this.modalMask.render(); - this.modalMask.hide(); - } - if (!this.dragMask.getDom()) { - this.dragMask.render(); - this.dragMask.hide(); - } - var me = this; - this.addListener("show", function() { - me.modalMask.show(this.getDom().style.zIndex - 2); - }); - this.addListener("hide", function() { - me.modalMask.hide(); - }); - if (this.buttons) { - for (var i = 0; i < this.buttons.length; i++) { - this.buttons[i].postRender(); - } - } - domUtils.on(window, "resize", function() { - setTimeout(function() { - if (!me.isHidden()) { - me.safeSetOffset(uiUtils.getClientRect(me.getDom())); - } - }); - }); - - //hold住scroll事件,防止dialog的滚动影响页面 - // if( this.holdScroll ) { - // - // if( !me.iframeUrl ) { - // domUtils.on( document.getElementById( me.id + "_iframe"), !browser.gecko ? "mousewheel" : "DOMMouseScroll", function(e){ - // domUtils.preventDefault(e); - // } ); - // } else { - // me.addListener('dialogafterreset', function(){ - // window.setTimeout(function(){ - // var iframeWindow = document.getElementById( me.id + "_iframe").contentWindow; - // - // if( browser.ie ) { - // - // var timer = window.setInterval(function(){ - // - // if( iframeWindow.document && iframeWindow.document.body ) { - // window.clearInterval( timer ); - // timer = null; - // domUtils.on( iframeWindow.document.body, !browser.gecko ? "mousewheel" : "DOMMouseScroll", function(e){ - // domUtils.preventDefault(e); - // } ); - // } - // - // }, 100); - // - // } else { - // domUtils.on( iframeWindow, !browser.gecko ? "mousewheel" : "DOMMouseScroll", function(e){ - // domUtils.preventDefault(e); - // } ); - // } - // - // }, 1); - // }); - // } - // - // } - this._hide(); - }, - mesureSize: function() { - var body = this.getDom("body"); - var width = uiUtils.getClientRect(this.getDom("content")).width; - var dialogBodyStyle = body.style; - dialogBodyStyle.width = width; - return uiUtils.getClientRect(body); - }, - _onTitlebarMouseDown: function(evt, el) { - if (this.draggable) { - var rect; - var vpRect = uiUtils.getViewportRect(); - var me = this; - uiUtils.startDrag(evt, { - ondragstart: function() { - rect = uiUtils.getClientRect(me.getDom()); - me.getDom("contmask").style.visibility = "visible"; - me.dragMask.show(me.getDom().style.zIndex - 1); - }, - ondragmove: function(x, y) { - var left = rect.left + x; - var top = rect.top + y; - me.safeSetOffset({ - left: left, - top: top - }); - }, - ondragstop: function() { - me.getDom("contmask").style.visibility = "hidden"; - domUtils.removeClasses(me.getDom(), ["edui-state-centered"]); - me.dragMask.hide(); - } - }); - } - }, - reset: function() { - this.getDom("content").innerHTML = this.getContentHtml(); - this.fireEvent("dialogafterreset"); - }, - _show: function() { - if (this._hidden) { - this.getDom().style.display = ""; - - //要高过编辑器的zindxe - this.editor.container.style.zIndex && - (this.getDom().style.zIndex = - this.editor.container.style.zIndex * 1 + 10); - this._hidden = false; - this.fireEvent("show"); - baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = - this.getDom().style.zIndex - 4; - } - }, - isHidden: function() { - return this._hidden; - }, - _hide: function() { - if (!this._hidden) { - var wrapNode = this.getDom(); - wrapNode.style.display = "none"; - wrapNode.style.zIndex = ""; - wrapNode.style.width = ""; - wrapNode.style.height = ""; - this._hidden = true; - this.fireEvent("hide"); - } - }, - open: function() { - if (this.autoReset) { - //有可能还没有渲染 - try { - this.reset(); - } catch (e) { - this.render(); - this.open(); - } - } - this.showAtCenter(); - if (this.iframeUrl) { - try { - this.getDom("iframe").focus(); - } catch (ex) {} - } - activeDialog = this; - }, - _onCloseButtonClick: function(evt, el) { - this.close(false); - }, - close: function(ok) { - if (this.fireEvent("close", ok) !== false) { - //还原环境 - if (this.fullscreen) { - document.documentElement.style.overflowX = this._originalContext.html.overflowX; - document.documentElement.style.overflowY = this._originalContext.html.overflowY; - document.body.style.overflowX = this._originalContext.body.overflowX; - document.body.style.overflowY = this._originalContext.body.overflowY; - delete this._originalContext; - } - this._hide(); - - //销毁content - var content = this.getDom("content"); - var iframe = this.getDom("iframe"); - if (content && iframe) { - var doc = iframe.contentDocument || iframe.contentWindow.document; - doc && (doc.body.innerHTML = ""); - domUtils.remove(content); - } - } - } - }; - utils.inherits(Dialog, UIBase); -})(); - - -// ui/menubutton.js -///import core -///import uicore -///import ui/menu.js -///import ui/splitbutton.js -(function() { - var utils = baidu.editor.utils, - Menu = baidu.editor.ui.Menu, - SplitButton = baidu.editor.ui.SplitButton, - MenuButton = (baidu.editor.ui.MenuButton = function(options) { - this.initOptions(options); - this.initMenuButton(); - }); - MenuButton.prototype = { - initMenuButton: function() { - var me = this; - this.uiName = "menubutton"; - this.popup = new Menu({ - items: me.items, - className: me.className, - editor: me.editor - }); - this.popup.addListener("show", function() { - var list = this; - for (var i = 0; i < list.items.length; i++) { - list.items[i].removeState("checked"); - if (list.items[i].value == me._value) { - list.items[i].addState("checked"); - this.value = me._value; - } - } - }); - this.initSplitButton(); - }, - setValue: function(value) { - this._value = value; - } - }; - utils.inherits(MenuButton, SplitButton); -})(); - - -// ui/multiMenu.js -///import core -///import uicore -///commands 表情 -(function() { - var utils = baidu.editor.utils, - Popup = baidu.editor.ui.Popup, - SplitButton = baidu.editor.ui.SplitButton, - MultiMenuPop = (baidu.editor.ui.MultiMenuPop = function(options) { - this.initOptions(options); - this.initMultiMenu(); - }); - - MultiMenuPop.prototype = { - initMultiMenu: function() { - var me = this; - this.popup = new Popup({ - content: "", - editor: me.editor, - iframe_rendered: false, - onshow: function() { - if (!this.iframe_rendered) { - this.iframe_rendered = true; - this.getDom("content").innerHTML = - ''; - me.editor.container.style.zIndex && - (this.getDom().style.zIndex = - me.editor.container.style.zIndex * 1 + 1); - } - } - // canSideUp:false, - // canSideLeft:false - }); - this.onbuttonclick = function() { - this.showPopup(); - }; - this.initSplitButton(); - } - }; - - utils.inherits(MultiMenuPop, SplitButton); -})(); - - -// ui/shortcutmenu.js -(function() { - var UI = baidu.editor.ui, - UIBase = UI.UIBase, - uiUtils = UI.uiUtils, - utils = baidu.editor.utils, - domUtils = baidu.editor.dom.domUtils; - - var allMenus = [], //存储所有快捷菜单 - timeID, - isSubMenuShow = false; //是否有子pop显示 - - var ShortCutMenu = (UI.ShortCutMenu = function(options) { - this.initOptions(options); - this.initShortCutMenu(); - }); - - ShortCutMenu.postHide = hideAllMenu; - - ShortCutMenu.prototype = { - isHidden: true, - SPACE: 5, - initShortCutMenu: function() { - this.items = this.items || []; - this.initUIBase(); - this.initItems(); - this.initEvent(); - allMenus.push(this); - }, - initEvent: function() { - var me = this, - doc = me.editor.document; - - domUtils.on(doc, "mousemove", function(e) { - if (me.isHidden === false) { - //有pop显示就不隐藏快捷菜单 - if (me.getSubMenuMark() || me.eventType == "contextmenu") return; - - var flag = true, - el = me.getDom(), - wt = el.offsetWidth, - ht = el.offsetHeight, - distanceX = wt / 2 + me.SPACE, //距离中心X标准 - distanceY = ht / 2, //距离中心Y标准 - x = Math.abs(e.screenX - me.left), //离中心距离横坐标 - y = Math.abs(e.screenY - me.top); //离中心距离纵坐标 - - clearTimeout(timeID); - timeID = setTimeout(function() { - if (y > 0 && y < distanceY) { - me.setOpacity(el, "1"); - } else if (y > distanceY && y < distanceY + 70) { - me.setOpacity(el, "0.5"); - flag = false; - } else if (y > distanceY + 70 && y < distanceY + 140) { - me.hide(); - } - - if (flag && x > 0 && x < distanceX) { - me.setOpacity(el, "1"); - } else if (x > distanceX && x < distanceX + 70) { - me.setOpacity(el, "0.5"); - } else if (x > distanceX + 70 && x < distanceX + 140) { - me.hide(); - } - }); - } - }); - - //ie\ff下 mouseout不准 - if (browser.chrome) { - domUtils.on(doc, "mouseout", function(e) { - var relatedTgt = e.relatedTarget || e.toElement; - - if (relatedTgt == null || relatedTgt.tagName == "HTML") { - me.hide(); - } - }); - } - - me.editor.addListener("afterhidepop", function() { - if (!me.isHidden) { - isSubMenuShow = true; - } - }); - }, - initItems: function() { - if (utils.isArray(this.items)) { - for (var i = 0, len = this.items.length; i < len; i++) { - var item = this.items[i].toLowerCase(); - - if (UI[item]) { - this.items[i] = new UI[item](this.editor); - this.items[i].className += " edui-shortcutsubmenu "; - } - } - } - }, - setOpacity: function(el, value) { - if (browser.ie && browser.version < 9) { - el.style.filter = "alpha(opacity = " + parseFloat(value) * 100 + ");"; - } else { - el.style.opacity = value; - } - }, - getSubMenuMark: function() { - isSubMenuShow = false; - var layerEle = uiUtils.getFixedLayer(); - var list = domUtils.getElementsByTagName(layerEle, "div", function(node) { - return domUtils.hasClass(node, "edui-shortcutsubmenu edui-popup"); - }); - - for (var i = 0, node; (node = list[i++]); ) { - if (node.style.display != "none") { - isSubMenuShow = true; - } - } - return isSubMenuShow; - }, - show: function(e, hasContextmenu) { - var me = this, - offset = {}, - el = this.getDom(), - fixedlayer = uiUtils.getFixedLayer(); - - function setPos(offset) { - if (offset.left < 0) { - offset.left = 0; - } - if (offset.top < 0) { - offset.top = 0; - } - el.style.cssText = - "position:absolute;left:" + - offset.left + - "px;top:" + - offset.top + - "px;"; - } - - function setPosByCxtMenu(menu) { - if (!menu.tagName) { - menu = menu.getDom(); - } - offset.left = parseInt(menu.style.left); - offset.top = parseInt(menu.style.top); - offset.top -= el.offsetHeight + 15; - setPos(offset); - } - - me.eventType = e.type; - el.style.cssText = "display:block;left:-9999px"; - - if (e.type == "contextmenu" && hasContextmenu) { - var menu = domUtils.getElementsByTagName( - fixedlayer, - "div", - "edui-contextmenu" - )[0]; - if (menu) { - setPosByCxtMenu(menu); - } else { - me.editor.addListener("aftershowcontextmenu", function(type, menu) { - setPosByCxtMenu(menu); - }); - } - } else { - offset = uiUtils.getViewportOffsetByEvent(e); - offset.top -= el.offsetHeight + me.SPACE; - offset.left += me.SPACE + 20; - setPos(offset); - me.setOpacity(el, 0.2); - } - - me.isHidden = false; - me.left = e.screenX + el.offsetWidth / 2 - me.SPACE; - me.top = e.screenY - el.offsetHeight / 2 - me.SPACE; - - if (me.editor) { - el.style.zIndex = me.editor.container.style.zIndex * 1 + 10; - fixedlayer.style.zIndex = el.style.zIndex - 1; - } - }, - hide: function() { - if (this.getDom()) { - this.getDom().style.display = "none"; - } - this.isHidden = true; - }, - postRender: function() { - if (utils.isArray(this.items)) { - for (var i = 0, item; (item = this.items[i++]); ) { - item.postRender(); - } - } - }, - getHtmlTpl: function() { - var buff; - if (utils.isArray(this.items)) { - buff = []; - for (var i = 0; i < this.items.length; i++) { - buff[i] = this.items[i].renderHtml(); - } - buff = buff.join(""); - } else { - buff = this.items; - } - - return ( - '
    ' + - buff + - "
    " - ); - } - }; - - utils.inherits(ShortCutMenu, UIBase); - - function hideAllMenu(e) { - var tgt = e.target || e.srcElement, - cur = domUtils.findParent( - tgt, - function(node) { - return ( - domUtils.hasClass(node, "edui-shortcutmenu") || - domUtils.hasClass(node, "edui-popup") - ); - }, - true - ); - - if (!cur) { - for (var i = 0, menu; (menu = allMenus[i++]); ) { - menu.hide(); - } - } - } - - domUtils.on(document, "mousedown", function(e) { - hideAllMenu(e); - }); - - domUtils.on(window, "scroll", function(e) { - hideAllMenu(e); - }); -})(); - - -// ui/breakline.js -(function() { - var utils = baidu.editor.utils, - UIBase = baidu.editor.ui.UIBase, - Breakline = (baidu.editor.ui.Breakline = function(options) { - this.initOptions(options); - this.initSeparator(); - }); - Breakline.prototype = { - uiName: "Breakline", - initSeparator: function() { - this.initUIBase(); - }, - getHtmlTpl: function() { - return "
    "; - } - }; - utils.inherits(Breakline, UIBase); -})(); - - -// ui/message.js -///import core -///import uicore -(function() { - var utils = baidu.editor.utils, - domUtils = baidu.editor.dom.domUtils, - UIBase = baidu.editor.ui.UIBase, - Message = (baidu.editor.ui.Message = function(options) { - this.initOptions(options); - this.initMessage(); - }); - - Message.prototype = { - initMessage: function() { - this.initUIBase(); - }, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ×
    ' + - '
    ' + - ' ' + - '
    ' + - '
    ' + - "
    " + - "
    " + - "
    " - ); - }, - reset: function(opt) { - var me = this; - if (!opt.keepshow) { - clearTimeout(this.timer); - me.timer = setTimeout(function() { - me.hide(); - }, opt.timeout || 4000); - } - - opt.content !== undefined && me.setContent(opt.content); - opt.type !== undefined && me.setType(opt.type); - - me.show(); - }, - postRender: function() { - var me = this, - closer = this.getDom("closer"); - closer && - domUtils.on(closer, "click", function() { - me.hide(); - }); - }, - setContent: function(content) { - this.getDom("content").innerHTML = content; - }, - setType: function(type) { - type = type || "info"; - var body = this.getDom("body"); - body.className = body.className.replace( - /edui-message-type-[\w-]+/, - "edui-message-type-" + type - ); - }, - getContent: function() { - return this.getDom("content").innerHTML; - }, - getType: function() { - var arr = this.getDom("body").match(/edui-message-type-([\w-]+)/); - return arr ? arr[1] : ""; - }, - show: function() { - this.getDom().style.display = "block"; - }, - hide: function() { - var dom = this.getDom(); - if (dom) { - dom.style.display = "none"; - dom.parentNode && dom.parentNode.removeChild(dom); - } - } - }; - - utils.inherits(Message, UIBase); -})(); - - -// adapter/editorui.js -//ui跟编辑器的适配層 -//那个按钮弹出是dialog,是下拉筐等都是在这个js中配置 -//自己写的ui也要在这里配置,放到baidu.editor.ui下边,当编辑器实例化的时候会根据ueditor.config中的toolbars找到相应的进行实例化 -(function() { - var utils = baidu.editor.utils; - var editorui = baidu.editor.ui; - var _Dialog = editorui.Dialog; - editorui.buttons = {}; - - editorui.Dialog = function(options) { - var dialog = new _Dialog(options); - dialog.addListener("hide", function() { - if (dialog.editor) { - var editor = dialog.editor; - try { - if (browser.gecko) { - var y = editor.window.scrollY, - x = editor.window.scrollX; - editor.body.focus(); - editor.window.scrollTo(x, y); - } else { - editor.focus(); - } - } catch (ex) {} - } - }); - return dialog; - }; - - var iframeUrlMap = { - anchor: "~/dialogs/anchor/anchor.html", - insertimage: "~/dialogs/image/image.html", - link: "~/dialogs/link/link.html", - spechars: "~/dialogs/spechars/spechars.html", - searchreplace: "~/dialogs/searchreplace/searchreplace.html", - map: "~/dialogs/map/map.html", - gmap: "~/dialogs/gmap/gmap.html", - insertvideo: "~/dialogs/video/video.html", - help: "~/dialogs/help/help.html", - preview: "~/dialogs/preview/preview.html", - emotion: "~/dialogs/emotion/emotion.html", - wordimage: "~/dialogs/wordimage/wordimage.html", - attachment: "~/dialogs/attachment/attachment.html", - insertframe: "~/dialogs/insertframe/insertframe.html", - edittip: "~/dialogs/table/edittip.html", - edittable: "~/dialogs/table/edittable.html", - edittd: "~/dialogs/table/edittd.html", - webapp: "~/dialogs/webapp/webapp.html", - snapscreen: "~/dialogs/snapscreen/snapscreen.html", - scrawl: "~/dialogs/scrawl/scrawl.html", - music: "~/dialogs/music/music.html", - template: "~/dialogs/template/template.html", - background: "~/dialogs/background/background.html", - charts: "~/dialogs/charts/charts.html" - }; - //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起 - var btnCmds = [ - "undo", - "redo", - "formatmatch", - "bold", - "italic", - "underline", - "fontborder", - "touppercase", - "tolowercase", - "strikethrough", - "subscript", - "superscript", - "source", - "indent", - "outdent", - "blockquote", - "pasteplain", - "pagebreak", - "selectall", - "print", - "horizontal", - "removeformat", - "time", - "date", - "unlink", - "insertparagraphbeforetable", - "insertrow", - "insertcol", - "mergeright", - "mergedown", - "deleterow", - "deletecol", - "splittorows", - "splittocols", - "splittocells", - "mergecells", - "deletetable", - "drafts" - ]; - - for (var i = 0, ci; (ci = btnCmds[i++]); ) { - ci = ci.toLowerCase(); - editorui[ci] = (function(cmd) { - return function(editor) { - var ui = new editorui.Button({ - className: "edui-for-" + cmd, - title: - editor.options.labelMap[cmd] || - editor.getLang("labelMap." + cmd) || - "", - onclick: function() { - editor.execCommand(cmd); - }, - theme: editor.options.theme, - showText: false - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function( - type, - causeByUi, - uiReady - ) { - var state = editor.queryCommandState(cmd); - if (state == -1) { - ui.setDisabled(true); - ui.setChecked(false); - } else { - if (!uiReady) { - ui.setDisabled(false); - ui.setChecked(state); - } - } - }); - return ui; - }; - })(ci); - } - - //清除文档 - editorui.cleardoc = function(editor) { - var ui = new editorui.Button({ - className: "edui-for-cleardoc", - title: - editor.options.labelMap.cleardoc || - editor.getLang("labelMap.cleardoc") || - "", - theme: editor.options.theme, - onclick: function() { - if (confirm(editor.getLang("confirmClear"))) { - editor.execCommand("cleardoc"); - } - } - }); - editorui.buttons["cleardoc"] = ui; - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState("cleardoc") == -1); - }); - return ui; - }; - - //排版,图片排版,文字方向 - var typeset = { - justify: ["left", "right", "center", "justify"], - imagefloat: ["none", "left", "center", "right"], - directionality: ["ltr", "rtl"] - }; - - for (var p in typeset) { - (function(cmd, val) { - for (var i = 0, ci; (ci = val[i++]); ) { - (function(cmd2) { - editorui[cmd.replace("float", "") + cmd2] = function(editor) { - var ui = new editorui.Button({ - className: "edui-for-" + cmd.replace("float", "") + cmd2, - title: - editor.options.labelMap[cmd.replace("float", "") + cmd2] || - editor.getLang( - "labelMap." + cmd.replace("float", "") + cmd2 - ) || - "", - theme: editor.options.theme, - onclick: function() { - editor.execCommand(cmd, cmd2); - } - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function( - type, - causeByUi, - uiReady - ) { - ui.setDisabled(editor.queryCommandState(cmd) == -1); - ui.setChecked(editor.queryCommandValue(cmd) == cmd2 && !uiReady); - }); - return ui; - }; - })(ci); - } - })(p, typeset[p]); - } - - //字体颜色和背景颜色 - for (var i = 0, ci; (ci = ["backcolor", "forecolor"][i++]); ) { - editorui[ci] = (function(cmd) { - return function(editor) { - var ui = new editorui.ColorButton({ - className: "edui-for-" + cmd, - color: "default", - title: - editor.options.labelMap[cmd] || - editor.getLang("labelMap." + cmd) || - "", - editor: editor, - onpickcolor: function(t, color) { - editor.execCommand(cmd, color); - }, - onpicknocolor: function() { - editor.execCommand(cmd, "default"); - this.setColor("transparent"); - this.color = "default"; - }, - onbuttonclick: function() { - editor.execCommand(cmd, this.color); - } - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState(cmd) == -1); - }); - return ui; - }; - })(ci); - } - - var dialogBtns = { - noOk: ["searchreplace", "help", "spechars", "webapp", "preview"], - ok: [ - "attachment", - "anchor", - "link", - "insertimage", - "map", - "gmap", - "insertframe", - "wordimage", - "insertvideo", - "insertframe", - "edittip", - "edittable", - "edittd", - "scrawl", - "template", - "music", - "background", - "charts" - ] - }; - - for (var p in dialogBtns) { - (function(type, vals) { - for (var i = 0, ci; (ci = vals[i++]); ) { - //todo opera下存在问题 - if (browser.opera && ci === "searchreplace") { - continue; - } - (function(cmd) { - editorui[cmd] = function(editor, iframeUrl, title) { - iframeUrl = - iframeUrl || - (editor.options.iframeUrlMap || {})[cmd] || - iframeUrlMap[cmd]; - title = - editor.options.labelMap[cmd] || - editor.getLang("labelMap." + cmd) || - ""; - - var dialog; - //没有iframeUrl不创建dialog - if (iframeUrl) { - dialog = new editorui.Dialog( - utils.extend( - { - iframeUrl: editor.ui.mapUrl(iframeUrl), - editor: editor, - className: "edui-for-" + cmd, - title: title, - holdScroll: cmd === "insertimage", - fullscreen: /charts|preview/.test(cmd), - closeDialog: editor.getLang("closeDialog") - }, - type == "ok" - ? { - buttons: [ - { - className: "edui-okbutton", - label: editor.getLang("ok"), - editor: editor, - onclick: function() { - dialog.close(true); - } - }, - { - className: "edui-cancelbutton", - label: editor.getLang("cancel"), - editor: editor, - onclick: function() { - dialog.close(false); - } - } - ] - } - : {} - ) - ); - - editor.ui._dialogs[cmd + "Dialog"] = dialog; - } - - var ui = new editorui.Button({ - className: "edui-for-" + cmd, - title: title, - onclick: function() { - if (dialog) { - switch (cmd) { - case "wordimage": - var images = editor.execCommand("wordimage"); - if (images && images.length) { - dialog.render(); - dialog.open(); - } - break; - case "scrawl": - if (editor.queryCommandState("scrawl") != -1) { - dialog.render(); - dialog.open(); - } - - break; - default: - dialog.render(); - dialog.open(); - } - } - }, - theme: editor.options.theme, - disabled: - (cmd == "scrawl" && editor.queryCommandState("scrawl") == -1) || - cmd == "charts" - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function() { - //只存在于右键菜单而无工具栏按钮的ui不需要检测状态 - var unNeedCheckState = { edittable: 1 }; - if (cmd in unNeedCheckState) return; - - var state = editor.queryCommandState(cmd); - if (ui.getDom()) { - ui.setDisabled(state == -1); - ui.setChecked(state); - } - }); - - return ui; - }; - })(ci.toLowerCase()); - } - })(p, dialogBtns[p]); - } - - editorui.snapscreen = function(editor, iframeUrl, title) { - title = - editor.options.labelMap["snapscreen"] || - editor.getLang("labelMap.snapscreen") || - ""; - var ui = new editorui.Button({ - className: "edui-for-snapscreen", - title: title, - onclick: function() { - editor.execCommand("snapscreen"); - }, - theme: editor.options.theme - }); - editorui.buttons["snapscreen"] = ui; - iframeUrl = - iframeUrl || - (editor.options.iframeUrlMap || {})["snapscreen"] || - iframeUrlMap["snapscreen"]; - if (iframeUrl) { - var dialog = new editorui.Dialog({ - iframeUrl: editor.ui.mapUrl(iframeUrl), - editor: editor, - className: "edui-for-snapscreen", - title: title, - buttons: [ - { - className: "edui-okbutton", - label: editor.getLang("ok"), - editor: editor, - onclick: function() { - dialog.close(true); - } - }, - { - className: "edui-cancelbutton", - label: editor.getLang("cancel"), - editor: editor, - onclick: function() { - dialog.close(false); - } - } - ] - }); - dialog.render(); - editor.ui._dialogs["snapscreenDialog"] = dialog; - } - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState("snapscreen") == -1); - }); - return ui; - }; - - editorui.insertcode = function(editor, list, title) { - list = editor.options["insertcode"] || []; - title = - editor.options.labelMap["insertcode"] || - editor.getLang("labelMap.insertcode") || - ""; - // if (!list.length) return; - var items = []; - utils.each(list, function(key, val) { - items.push({ - label: key, - value: val, - theme: editor.options.theme, - renderLabelHtml: function() { - return ( - '
    ' + (this.label || "") + "
    " - ); - } - }); - }); - - var ui = new editorui.Combox({ - editor: editor, - items: items, - onselect: function(t, index) { - editor.execCommand("insertcode", this.items[index].value); - }, - onbuttonclick: function() { - this.showPopup(); - }, - title: title, - initValue: title, - className: "edui-for-insertcode", - indexByValue: function(value) { - if (value) { - for (var i = 0, ci; (ci = this.items[i]); i++) { - if (ci.value.indexOf(value) != -1) return i; - } - } - - return -1; - } - }); - editorui.buttons["insertcode"] = ui; - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - if (!uiReady) { - var state = editor.queryCommandState("insertcode"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("insertcode"); - if (!value) { - ui.setValue(title); - return; - } - //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号 - value && (value = value.replace(/['"]/g, "").split(",")[0]); - ui.setValue(value); - } - } - }); - return ui; - }; - editorui.fontfamily = function(editor, list, title) { - list = editor.options["fontfamily"] || []; - title = - editor.options.labelMap["fontfamily"] || - editor.getLang("labelMap.fontfamily") || - ""; - if (!list.length) return; - for (var i = 0, ci, items = []; (ci = list[i]); i++) { - var langLabel = editor.getLang("fontfamily")[ci.name] || ""; - (function(key, val) { - items.push({ - label: key, - value: val, - theme: editor.options.theme, - renderLabelHtml: function() { - return ( - '
    ' + - (this.label || "") + - "
    " - ); - } - }); - })(ci.label || langLabel, ci.val); - } - var ui = new editorui.Combox({ - editor: editor, - items: items, - onselect: function(t, index) { - editor.execCommand("FontFamily", this.items[index].value); - }, - onbuttonclick: function() { - this.showPopup(); - }, - title: title, - initValue: title, - className: "edui-for-fontfamily", - indexByValue: function(value) { - if (value) { - for (var i = 0, ci; (ci = this.items[i]); i++) { - if (ci.value.indexOf(value) != -1) return i; - } - } - - return -1; - } - }); - editorui.buttons["fontfamily"] = ui; - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - if (!uiReady) { - var state = editor.queryCommandState("FontFamily"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("FontFamily"); - //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号 - value && (value = value.replace(/['"]/g, "").split(",")[0]); - ui.setValue(value); - } - } - }); - return ui; - }; - - editorui.fontsize = function(editor, list, title) { - title = - editor.options.labelMap["fontsize"] || - editor.getLang("labelMap.fontsize") || - ""; - list = list || editor.options["fontsize"] || []; - if (!list.length) return; - var items = []; - for (var i = 0; i < list.length; i++) { - var size = list[i] + "px"; - items.push({ - label: size, - value: size, - theme: editor.options.theme, - renderLabelHtml: function() { - return ( - '
    ' + - (this.label || "") + - "
    " - ); - } - }); - } - var ui = new editorui.Combox({ - editor: editor, - items: items, - title: title, - initValue: title, - onselect: function(t, index) { - editor.execCommand("FontSize", this.items[index].value); - }, - onbuttonclick: function() { - this.showPopup(); - }, - className: "edui-for-fontsize" - }); - editorui.buttons["fontsize"] = ui; - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - if (!uiReady) { - var state = editor.queryCommandState("FontSize"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - ui.setValue(editor.queryCommandValue("FontSize")); - } - } - }); - return ui; - }; - - editorui.paragraph = function(editor, list, title) { - title = - editor.options.labelMap["paragraph"] || - editor.getLang("labelMap.paragraph") || - ""; - list = editor.options["paragraph"] || []; - if (utils.isEmptyObject(list)) return; - var items = []; - for (var i in list) { - items.push({ - value: i, - label: list[i] || editor.getLang("paragraph")[i], - theme: editor.options.theme, - renderLabelHtml: function() { - return ( - '
    ' + - (this.label || "") + - "
    " - ); - } - }); - } - var ui = new editorui.Combox({ - editor: editor, - items: items, - title: title, - initValue: title, - className: "edui-for-paragraph", - onselect: function(t, index) { - editor.execCommand("Paragraph", this.items[index].value); - }, - onbuttonclick: function() { - this.showPopup(); - } - }); - editorui.buttons["paragraph"] = ui; - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - if (!uiReady) { - var state = editor.queryCommandState("Paragraph"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("Paragraph"); - var index = ui.indexByValue(value); - if (index != -1) { - ui.setValue(value); - } else { - ui.setValue(ui.initValue); - } - } - } - }); - return ui; - }; - - //自定义标题 - editorui.customstyle = function(editor) { - var list = editor.options["customstyle"] || [], - title = - editor.options.labelMap["customstyle"] || - editor.getLang("labelMap.customstyle") || - ""; - if (!list.length) return; - var langCs = editor.getLang("customstyle"); - for (var i = 0, items = [], t; (t = list[i++]); ) { - (function(t) { - var ck = {}; - ck.label = t.label ? t.label : langCs[t.name]; - ck.style = t.style; - ck.className = t.className; - ck.tag = t.tag; - items.push({ - label: ck.label, - value: ck, - theme: editor.options.theme, - renderLabelHtml: function() { - return ( - '
    ' + - "<" + - ck.tag + - " " + - (ck.className ? ' class="' + ck.className + '"' : "") + - (ck.style ? ' style="' + ck.style + '"' : "") + - ">" + - ck.label + - "" + - "
    " - ); - } - }); - })(t); - } - - var ui = new editorui.Combox({ - editor: editor, - items: items, - title: title, - initValue: title, - className: "edui-for-customstyle", - onselect: function(t, index) { - editor.execCommand("customstyle", this.items[index].value); - }, - onbuttonclick: function() { - this.showPopup(); - }, - indexByValue: function(value) { - for (var i = 0, ti; (ti = this.items[i++]); ) { - if (ti.label == value) { - return i - 1; - } - } - return -1; - } - }); - editorui.buttons["customstyle"] = ui; - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - if (!uiReady) { - var state = editor.queryCommandState("customstyle"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("customstyle"); - var index = ui.indexByValue(value); - if (index != -1) { - ui.setValue(value); - } else { - ui.setValue(ui.initValue); - } - } - } - }); - return ui; - }; - editorui.inserttable = function(editor, iframeUrl, title) { - title = - editor.options.labelMap["inserttable"] || - editor.getLang("labelMap.inserttable") || - ""; - var ui = new editorui.TableButton({ - editor: editor, - title: title, - className: "edui-for-inserttable", - onpicktable: function(t, numCols, numRows) { - editor.execCommand("InsertTable", { - numRows: numRows, - numCols: numCols, - border: 1 - }); - }, - onbuttonclick: function() { - this.showPopup(); - } - }); - editorui.buttons["inserttable"] = ui; - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState("inserttable") == -1); - }); - return ui; - }; - - editorui.lineheight = function(editor) { - var val = editor.options.lineheight || []; - if (!val.length) return; - for (var i = 0, ci, items = []; (ci = val[i++]); ) { - items.push({ - //todo:写死了 - label: ci, - value: ci, - theme: editor.options.theme, - onclick: function() { - editor.execCommand("lineheight", this.value); - } - }); - } - var ui = new editorui.MenuButton({ - editor: editor, - className: "edui-for-lineheight", - title: - editor.options.labelMap["lineheight"] || - editor.getLang("labelMap.lineheight") || - "", - items: items, - onbuttonclick: function() { - var value = editor.queryCommandValue("LineHeight") || this.value; - editor.execCommand("LineHeight", value); - } - }); - editorui.buttons["lineheight"] = ui; - editor.addListener("selectionchange", function() { - var state = editor.queryCommandState("LineHeight"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("LineHeight"); - value && ui.setValue((value + "").replace(/cm/, "")); - ui.setChecked(state); - } - }); - return ui; - }; - - var rowspacings = ["top", "bottom"]; - for (var r = 0, ri; (ri = rowspacings[r++]); ) { - (function(cmd) { - editorui["rowspacing" + cmd] = function(editor) { - var val = editor.options["rowspacing" + cmd] || []; - if (!val.length) return null; - for (var i = 0, ci, items = []; (ci = val[i++]); ) { - items.push({ - label: ci, - value: ci, - theme: editor.options.theme, - onclick: function() { - editor.execCommand("rowspacing", this.value, cmd); - } - }); - } - var ui = new editorui.MenuButton({ - editor: editor, - className: "edui-for-rowspacing" + cmd, - title: - editor.options.labelMap["rowspacing" + cmd] || - editor.getLang("labelMap.rowspacing" + cmd) || - "", - items: items, - onbuttonclick: function() { - var value = - editor.queryCommandValue("rowspacing", cmd) || this.value; - editor.execCommand("rowspacing", value, cmd); - } - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function() { - var state = editor.queryCommandState("rowspacing", cmd); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("rowspacing", cmd); - value && ui.setValue((value + "").replace(/%/, "")); - ui.setChecked(state); - } - }); - return ui; - }; - })(ri); - } - //有序,无序列表 - var lists = ["insertorderedlist", "insertunorderedlist"]; - for (var l = 0, cl; (cl = lists[l++]); ) { - (function(cmd) { - editorui[cmd] = function(editor) { - var vals = editor.options[cmd], - _onMenuClick = function() { - editor.execCommand(cmd, this.value); - }, - items = []; - for (var i in vals) { - items.push({ - label: vals[i] || editor.getLang()[cmd][i] || "", - value: i, - theme: editor.options.theme, - onclick: _onMenuClick - }); - } - var ui = new editorui.MenuButton({ - editor: editor, - className: "edui-for-" + cmd, - title: editor.getLang("labelMap." + cmd) || "", - items: items, - onbuttonclick: function() { - var value = editor.queryCommandValue(cmd) || this.value; - editor.execCommand(cmd, value); - } - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function() { - var state = editor.queryCommandState(cmd); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue(cmd); - ui.setValue(value); - ui.setChecked(state); - } - }); - return ui; - }; - })(cl); - } - - editorui.fullscreen = function(editor, title) { - title = - editor.options.labelMap["fullscreen"] || - editor.getLang("labelMap.fullscreen") || - ""; - var ui = new editorui.Button({ - className: "edui-for-fullscreen", - title: title, - theme: editor.options.theme, - onclick: function() { - if (editor.ui) { - editor.ui.setFullScreen(!editor.ui.isFullScreen()); - } - this.setChecked(editor.ui.isFullScreen()); - } - }); - editorui.buttons["fullscreen"] = ui; - editor.addListener("selectionchange", function() { - var state = editor.queryCommandState("fullscreen"); - ui.setDisabled(state == -1); - ui.setChecked(editor.ui.isFullScreen()); - }); - return ui; - }; - - // 表情 - editorui["emotion"] = function(editor, iframeUrl) { - var cmd = "emotion"; - var ui = new editorui.MultiMenuPop({ - title: - editor.options.labelMap[cmd] || - editor.getLang("labelMap." + cmd + "") || - "", - editor: editor, - className: "edui-for-" + cmd, - iframeUrl: editor.ui.mapUrl( - iframeUrl || - (editor.options.iframeUrlMap || {})[cmd] || - iframeUrlMap[cmd] - ) - }); - editorui.buttons[cmd] = ui; - - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState(cmd) == -1); - }); - return ui; - }; - - editorui.autotypeset = function(editor) { - var ui = new editorui.AutoTypeSetButton({ - editor: editor, - title: - editor.options.labelMap["autotypeset"] || - editor.getLang("labelMap.autotypeset") || - "", - className: "edui-for-autotypeset", - onbuttonclick: function() { - editor.execCommand("autotypeset"); - } - }); - editorui.buttons["autotypeset"] = ui; - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState("autotypeset") == -1); - }); - return ui; - }; - - /* 简单上传插件 */ - editorui["simpleupload"] = function(editor) { - var name = "simpleupload", - ui = new editorui.Button({ - className: "edui-for-" + name, - title: - editor.options.labelMap[name] || - editor.getLang("labelMap." + name) || - "", - onclick: function() {}, - theme: editor.options.theme, - showText: false - }); - editorui.buttons[name] = ui; - editor.addListener("ready", function() { - var b = ui.getDom("body"), - iconSpan = b.children[0]; - editor.fireEvent("simpleuploadbtnready", iconSpan); - }); - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - var state = editor.queryCommandState(name); - if (state == -1) { - ui.setDisabled(true); - ui.setChecked(false); - } else { - if (!uiReady) { - ui.setDisabled(false); - ui.setChecked(state); - } - } - }); - return ui; - }; -})(); - - -// adapter/editor.js -///import core -///commands 全屏 -///commandsName FullScreen -///commandsTitle 全屏 -(function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - UIBase = baidu.editor.ui.UIBase, - domUtils = baidu.editor.dom.domUtils; - var nodeStack = []; - - function EditorUI(options) { - this.initOptions(options); - this.initEditorUI(); - } - - EditorUI.prototype = { - uiName: "editor", - initEditorUI: function() { - this.editor.ui = this; - this._dialogs = {}; - this.initUIBase(); - this._initToolbars(); - var editor = this.editor, - me = this; - - editor.addListener("ready", function() { - //提供getDialog方法 - editor.getDialog = function(name) { - return editor.ui._dialogs[name + "Dialog"]; - }; - domUtils.on(editor.window, "scroll", function(evt) { - baidu.editor.ui.Popup.postHide(evt); - }); - //提供编辑器实时宽高(全屏时宽高不变化) - editor.ui._actualFrameWidth = editor.options.initialFrameWidth; - - UE.browser.ie && - UE.browser.version === 6 && - editor.container.ownerDocument.execCommand( - "BackgroundImageCache", - false, - true - ); - - //display bottom-bar label based on config - if (editor.options.elementPathEnabled) { - editor.ui.getDom("elementpath").innerHTML = - '
    ' + - editor.getLang("elementPathTip") + - ":
    "; - } - if (editor.options.wordCount) { - function countFn() { - setCount(editor, me); - domUtils.un(editor.document, "click", arguments.callee); - } - domUtils.on(editor.document, "click", countFn); - editor.ui.getDom("wordcount").innerHTML = editor.getLang( - "wordCountTip" - ); - } - editor.ui._scale(); - if (editor.options.scaleEnabled) { - if (editor.autoHeightEnabled) { - editor.disableAutoHeight(); - } - me.enableScale(); - } else { - me.disableScale(); - } - if ( - !editor.options.elementPathEnabled && - !editor.options.wordCount && - !editor.options.scaleEnabled - ) { - editor.ui.getDom("elementpath").style.display = "none"; - editor.ui.getDom("wordcount").style.display = "none"; - editor.ui.getDom("scale").style.display = "none"; - } - - if (!editor.selection.isFocus()) return; - editor.fireEvent("selectionchange", false, true); - }); - - editor.addListener("mousedown", function(t, evt) { - var el = evt.target || evt.srcElement; - baidu.editor.ui.Popup.postHide(evt, el); - baidu.editor.ui.ShortCutMenu.postHide(evt); - }); - editor.addListener("delcells", function() { - if (UE.ui["edittip"]) { - new UE.ui["edittip"](editor); - } - editor.getDialog("edittip").open(); - }); - - var pastePop, - isPaste = false, - timer; - editor.addListener("afterpaste", function() { - if (editor.queryCommandState("pasteplain")) return; - if (baidu.editor.ui.PastePicker) { - pastePop = new baidu.editor.ui.Popup({ - content: new baidu.editor.ui.PastePicker({ editor: editor }), - editor: editor, - className: "edui-wordpastepop" - }); - pastePop.render(); - } - isPaste = true; - }); - - editor.addListener("afterinserthtml", function() { - clearTimeout(timer); - timer = setTimeout(function() { - if (pastePop && (isPaste || editor.ui._isTransfer)) { - if (pastePop.isHidden()) { - var span = domUtils.createElement(editor.document, "span", { - style: "line-height:0px;", - innerHTML: "\ufeff" - }), - range = editor.selection.getRange(); - range.insertNode(span); - var tmp = getDomNode(span, "firstChild", "previousSibling"); - tmp && - pastePop.showAnchor(tmp.nodeType == 3 ? tmp.parentNode : tmp); - domUtils.remove(span); - } else { - pastePop.show(); - } - delete editor.ui._isTransfer; - isPaste = false; - } - }, 200); - }); - editor.addListener("contextmenu", function(t, evt) { - baidu.editor.ui.Popup.postHide(evt); - }); - editor.addListener("keydown", function(t, evt) { - if (pastePop) pastePop.dispose(evt); - var keyCode = evt.keyCode || evt.which; - if (evt.altKey && keyCode == 90) { - UE.ui.buttons["fullscreen"].onclick(); - } - }); - editor.addListener("wordcount", function(type) { - setCount(this, me); - }); - function setCount(editor, ui) { - editor.setOpt({ - wordCount: true, - maximumWords: 10000, - wordCountMsg: - editor.options.wordCountMsg || editor.getLang("wordCountMsg"), - wordOverFlowMsg: - editor.options.wordOverFlowMsg || editor.getLang("wordOverFlowMsg") - }); - var opt = editor.options, - max = opt.maximumWords, - msg = opt.wordCountMsg, - errMsg = opt.wordOverFlowMsg, - countDom = ui.getDom("wordcount"); - if (!opt.wordCount) { - return; - } - var count = editor.getContentLength(true); - if (count > max) { - countDom.innerHTML = errMsg; - editor.fireEvent("wordcountoverflow"); - } else { - countDom.innerHTML = msg - .replace("{#leave}", max - count) - .replace("{#count}", count); - } - } - - editor.addListener("selectionchange", function() { - if (editor.options.elementPathEnabled) { - me[ - (editor.queryCommandState("elementpath") == -1 ? "dis" : "en") + - "ableElementPath" - ](); - } - if (editor.options.scaleEnabled) { - me[ - (editor.queryCommandState("scale") == -1 ? "dis" : "en") + - "ableScale" - ](); - } - }); - var popup = new baidu.editor.ui.Popup({ - editor: editor, - content: "", - className: "edui-bubble", - _onEditButtonClick: function() { - this.hide(); - editor.ui._dialogs.linkDialog.open(); - }, - _onImgEditButtonClick: function(name) { - this.hide(); - editor.ui._dialogs[name] && editor.ui._dialogs[name].open(); - }, - _onImgSetFloat: function(value) { - this.hide(); - editor.execCommand("imagefloat", value); - }, - _setIframeAlign: function(value) { - var frame = popup.anchorEl; - var newFrame = frame.cloneNode(true); - switch (value) { - case -2: - newFrame.setAttribute("align", ""); - break; - case -1: - newFrame.setAttribute("align", "left"); - break; - case 1: - newFrame.setAttribute("align", "right"); - break; - } - frame.parentNode.insertBefore(newFrame, frame); - domUtils.remove(frame); - popup.anchorEl = newFrame; - popup.showAnchor(popup.anchorEl); - }, - _updateIframe: function() { - var frame = (editor._iframe = popup.anchorEl); - if (domUtils.hasClass(frame, "ueditor_baidumap")) { - editor.selection.getRange().selectNode(frame).select(); - editor.ui._dialogs.mapDialog.open(); - popup.hide(); - } else { - editor.ui._dialogs.insertframeDialog.open(); - popup.hide(); - } - }, - _onRemoveButtonClick: function(cmdName) { - editor.execCommand(cmdName); - this.hide(); - }, - queryAutoHide: function(el) { - if (el && el.ownerDocument == editor.document) { - if ( - el.tagName.toLowerCase() == "img" || - domUtils.findParentByTagName(el, "a", true) - ) { - return el !== popup.anchorEl; - } - } - return baidu.editor.ui.Popup.prototype.queryAutoHide.call(this, el); - } - }); - popup.render(); - if (editor.options.imagePopup) { - editor.addListener("mouseover", function(t, evt) { - evt = evt || window.event; - var el = evt.target || evt.srcElement; - if ( - editor.ui._dialogs.insertframeDialog && - /iframe/gi.test(el.tagName) - ) { - var html = popup.formatHtml( - "" + - editor.getLang("property") + - ': ' + - editor.getLang("default") + - '  ' + - editor.getLang("justifyleft") + - '  ' + - editor.getLang("justifyright") + - "  " + - ' ' + - editor.getLang("modify") + - "" - ); - if (html) { - popup.getDom("content").innerHTML = html; - popup.anchorEl = el; - popup.showAnchor(popup.anchorEl); - } else { - popup.hide(); - } - } - }); - editor.addListener("selectionchange", function(t, causeByUi) { - if (!causeByUi) return; - var html = "", - str = "", - img = editor.selection.getRange().getClosedNode(), - dialogs = editor.ui._dialogs; - if (img && img.tagName == "IMG") { - var dialogName = "insertimageDialog"; - if ( - img.className.indexOf("edui-faked-video") != -1 || - img.className.indexOf("edui-upload-video") != -1 - ) { - dialogName = "insertvideoDialog"; - } - if (img.className.indexOf("edui-faked-webapp") != -1) { - dialogName = "webappDialog"; - } - if (img.src.indexOf("http://api.map.baidu.com") != -1) { - dialogName = "mapDialog"; - } - if (img.className.indexOf("edui-faked-music") != -1) { - dialogName = "musicDialog"; - } - if ( - img.src.indexOf("http://maps.google.com/maps/api/staticmap") != -1 - ) { - dialogName = "gmapDialog"; - } - if (img.getAttribute("anchorname")) { - dialogName = "anchorDialog"; - html = popup.formatHtml( - "" + - editor.getLang("property") + - ': ' + - editor.getLang("modify") + - "  " + - "" + - editor.getLang("delete") + - "" - ); - } - if (img.getAttribute("word_img")) { - //todo 放到dialog去做查询 - editor.word_img = [img.getAttribute("word_img")]; - dialogName = "wordimageDialog"; - } - if ( - domUtils.hasClass(img, "loadingclass") || - domUtils.hasClass(img, "loaderrorclass") - ) { - dialogName = ""; - } - if (!dialogs[dialogName]) { - return; - } - str = - "" + - editor.getLang("property") + - ": " + - '' + - editor.getLang("default") + - "  " + - '' + - editor.getLang("justifyleft") + - "  " + - '' + - editor.getLang("justifyright") + - "  " + - '' + - editor.getLang("justifycenter") + - "  " + - "' + - editor.getLang("modify") + - ""; - - !html && (html = popup.formatHtml(str)); - } - if (editor.ui._dialogs.linkDialog) { - var link = editor.queryCommandValue("link"); - var url; - if ( - link && - (url = link.getAttribute("_href") || link.getAttribute("href", 2)) - ) { - var txt = url; - if (url.length > 30) { - txt = url.substring(0, 20) + "..."; - } - if (html) { - html += '
    '; - } - html += popup.formatHtml( - "" + - editor.getLang("anthorMsg") + - ': ' + - txt + - "" + - ' ' + - editor.getLang("modify") + - "" + - ' ' + - editor.getLang("clear") + - "" - ); - popup.showAnchor(link); - } - } - - if (html) { - popup.getDom("content").innerHTML = html; - popup.anchorEl = img || link; - popup.showAnchor(popup.anchorEl); - } else { - popup.hide(); - } - }); - } - }, - _initToolbars: function() { - var editor = this.editor; - var toolbars = this.toolbars || []; - var toolbarUis = []; - var extraUIs = []; - for (var i = 0; i < toolbars.length; i++) { - var toolbar = toolbars[i]; - var toolbarUi = new baidu.editor.ui.Toolbar({ - theme: editor.options.theme - }); - for (var j = 0; j < toolbar.length; j++) { - var toolbarItem = toolbar[j]; - var toolbarItemUi = null; - if (typeof toolbarItem == "string") { - toolbarItem = toolbarItem.toLowerCase(); - if (toolbarItem == "|") { - toolbarItem = "Separator"; - } - if (toolbarItem == "||") { - toolbarItem = "Breakline"; - } - var ui = baidu.editor.ui[toolbarItem]; - if (ui) { - if (utils.isFunction(ui)) { - toolbarItemUi = new baidu.editor.ui[toolbarItem](editor); - } else { - if (ui.id && ui.id != editor.key) { - continue; - } - var itemUI = ui.execFn.call(editor, editor, toolbarItem); - if (itemUI) { - if (ui.index === undefined) { - toolbarUi.add(itemUI); - continue; - } else { - extraUIs.push({ - index: ui.index, - itemUI: itemUI - }); - } - } - } - } - //fullscreen这里单独处理一下,放到首行去 - if (toolbarItem == "fullscreen") { - if (toolbarUis && toolbarUis[0]) { - toolbarUis[0].items.splice(0, 0, toolbarItemUi); - } else { - toolbarItemUi && toolbarUi.items.splice(0, 0, toolbarItemUi); - } - continue; - } - } else { - toolbarItemUi = toolbarItem; - } - if (toolbarItemUi && toolbarItemUi.id) { - toolbarUi.add(toolbarItemUi); - } - } - toolbarUis[i] = toolbarUi; - } - - //接受外部定制的UI - - utils.each(extraUIs, function(obj) { - toolbarUi.add(obj.itemUI, obj.index); - }); - this.toolbars = toolbarUis; - }, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ' + - (this.toolbars.length - ? '
    ' + - this.renderToolbarBoxHtml() + - "
    " - : "") + - '" + - '
    ' + - "
    " + - '
    ' + - "
    " + - //modify wdcount by matao - '
    ' + - '' + - '' + - '' + - "
    " + - '
    ' + - "
    " - ); - }, - showWordImageDialog: function() { - this._dialogs["wordimageDialog"].open(); - }, - renderToolbarBoxHtml: function() { - var buff = []; - for (var i = 0; i < this.toolbars.length; i++) { - buff.push(this.toolbars[i].renderHtml()); - } - return buff.join(""); - }, - setFullScreen: function(fullscreen) { - var editor = this.editor, - container = editor.container.parentNode.parentNode; - if (this._fullscreen != fullscreen) { - this._fullscreen = fullscreen; - this.editor.fireEvent("beforefullscreenchange", fullscreen); - if (baidu.editor.browser.gecko) { - var bk = editor.selection.getRange().createBookmark(); - } - if (fullscreen) { - while (container.tagName != "BODY") { - var position = baidu.editor.dom.domUtils.getComputedStyle( - container, - "position" - ); - nodeStack.push(position); - container.style.position = "static"; - container = container.parentNode; - } - this._bakHtmlOverflow = document.documentElement.style.overflow; - this._bakBodyOverflow = document.body.style.overflow; - this._bakAutoHeight = this.editor.autoHeightEnabled; - this._bakScrollTop = Math.max( - document.documentElement.scrollTop, - document.body.scrollTop - ); - - this._bakEditorContaninerWidth = editor.iframe.parentNode.offsetWidth; - if (this._bakAutoHeight) { - //当全屏时不能执行自动长高 - editor.autoHeightEnabled = false; - this.editor.disableAutoHeight(); - } - - document.documentElement.style.overflow = "hidden"; - //修复,滚动条不收起的问题 - - window.scrollTo(0, window.scrollY); - this._bakCssText = this.getDom().style.cssText; - this._bakCssText1 = this.getDom("iframeholder").style.cssText; - editor.iframe.parentNode.style.width = ""; - this._updateFullScreen(); - } else { - while (container.tagName != "BODY") { - container.style.position = nodeStack.shift(); - container = container.parentNode; - } - this.getDom().style.cssText = this._bakCssText; - this.getDom("iframeholder").style.cssText = this._bakCssText1; - if (this._bakAutoHeight) { - editor.autoHeightEnabled = true; - this.editor.enableAutoHeight(); - } - - document.documentElement.style.overflow = this._bakHtmlOverflow; - document.body.style.overflow = this._bakBodyOverflow; - editor.iframe.parentNode.style.width = - this._bakEditorContaninerWidth + "px"; - window.scrollTo(0, this._bakScrollTop); - } - if (browser.gecko && editor.body.contentEditable === "true") { - var input = document.createElement("input"); - document.body.appendChild(input); - editor.body.contentEditable = false; - setTimeout(function() { - input.focus(); - setTimeout(function() { - editor.body.contentEditable = true; - editor.fireEvent("fullscreenchanged", fullscreen); - editor.selection.getRange().moveToBookmark(bk).select(true); - baidu.editor.dom.domUtils.remove(input); - fullscreen && window.scroll(0, 0); - }, 0); - }, 0); - } - - if (editor.body.contentEditable === "true") { - this.editor.fireEvent("fullscreenchanged", fullscreen); - this.triggerLayout(); - } - } - }, - _updateFullScreen: function() { - if (this._fullscreen) { - var vpRect = uiUtils.getViewportRect(); - this.getDom().style.cssText = - "border:0;position:absolute;left:0;top:" + - (this.editor.options.topOffset || 0) + - "px;width:" + - vpRect.width + - "px;height:" + - vpRect.height + - "px;z-index:" + - (this.getDom().style.zIndex * 1 + 100); - uiUtils.setViewportOffset(this.getDom(), { - left: 0, - top: this.editor.options.topOffset || 0 - }); - this.editor.setHeight( - vpRect.height - - this.getDom("toolbarbox").offsetHeight - - this.getDom("bottombar").offsetHeight - - (this.editor.options.topOffset || 0), - true - ); - //不手动调一下,会导致全屏失效 - if (browser.gecko) { - try { - window.onresize(); - } catch (e) {} - } - } - }, - _updateElementPath: function() { - var bottom = this.getDom("elementpath"), - list; - if ( - this.elementPathEnabled && - (list = this.editor.queryCommandValue("elementpath")) - ) { - var buff = []; - for (var i = 0, ci; (ci = list[i]); i++) { - buff[i] = this.formatHtml( - '' + - ci + - "" - ); - } - bottom.innerHTML = - '
    ' + - this.editor.getLang("elementPathTip") + - ": " + - buff.join(" > ") + - "
    "; - } else { - bottom.style.display = "none"; - } - }, - disableElementPath: function() { - var bottom = this.getDom("elementpath"); - bottom.innerHTML = ""; - bottom.style.display = "none"; - this.elementPathEnabled = false; - }, - enableElementPath: function() { - var bottom = this.getDom("elementpath"); - bottom.style.display = ""; - this.elementPathEnabled = true; - this._updateElementPath(); - }, - _scale: function() { - var doc = document, - editor = this.editor, - editorHolder = editor.container, - editorDocument = editor.document, - toolbarBox = this.getDom("toolbarbox"), - bottombar = this.getDom("bottombar"), - scale = this.getDom("scale"), - scalelayer = this.getDom("scalelayer"); - - var isMouseMove = false, - position = null, - minEditorHeight = 0, - minEditorWidth = editor.options.minFrameWidth, - pageX = 0, - pageY = 0, - scaleWidth = 0, - scaleHeight = 0; - - function down() { - position = domUtils.getXY(editorHolder); - - if (!minEditorHeight) { - minEditorHeight = - editor.options.minFrameHeight + - toolbarBox.offsetHeight + - bottombar.offsetHeight; - } - - scalelayer.style.cssText = - "position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:" + - editorHolder.offsetWidth + - "px;height:" + - editorHolder.offsetHeight + - "px;z-index:" + - (editor.options.zIndex + 1); - - domUtils.on(doc, "mousemove", move); - domUtils.on(editorDocument, "mouseup", up); - domUtils.on(doc, "mouseup", up); - } - - var me = this; - //by xuheng 全屏时关掉缩放 - this.editor.addListener("fullscreenchanged", function(e, fullScreen) { - if (fullScreen) { - me.disableScale(); - } else { - if (me.editor.options.scaleEnabled) { - me.enableScale(); - var tmpNode = me.editor.document.createElement("span"); - me.editor.body.appendChild(tmpNode); - me.editor.body.style.height = - Math.max( - domUtils.getXY(tmpNode).y, - me.editor.iframe.offsetHeight - 20 - ) + "px"; - domUtils.remove(tmpNode); - } - } - }); - function move(event) { - clearSelection(); - var e = event || window.event; - pageX = e.pageX || doc.documentElement.scrollLeft + e.clientX; - pageY = e.pageY || doc.documentElement.scrollTop + e.clientY; - scaleWidth = pageX - position.x; - scaleHeight = pageY - position.y; - - if (scaleWidth >= minEditorWidth) { - isMouseMove = true; - scalelayer.style.width = scaleWidth + "px"; - } - if (scaleHeight >= minEditorHeight) { - isMouseMove = true; - scalelayer.style.height = scaleHeight + "px"; - } - } - - function up() { - if (isMouseMove) { - isMouseMove = false; - editor.ui._actualFrameWidth = scalelayer.offsetWidth - 2; - editorHolder.style.width = editor.ui._actualFrameWidth + "px"; - - editor.setHeight( - scalelayer.offsetHeight - - bottombar.offsetHeight - - toolbarBox.offsetHeight - - 2, - true - ); - } - if (scalelayer) { - scalelayer.style.display = "none"; - } - clearSelection(); - domUtils.un(doc, "mousemove", move); - domUtils.un(editorDocument, "mouseup", up); - domUtils.un(doc, "mouseup", up); - } - - function clearSelection() { - if (browser.ie) doc.selection.clear(); - else window.getSelection().removeAllRanges(); - } - - this.enableScale = function() { - //trace:2868 - if (editor.queryCommandState("source") == 1) return; - scale.style.display = ""; - this.scaleEnabled = true; - domUtils.on(scale, "mousedown", down); - }; - this.disableScale = function() { - scale.style.display = "none"; - this.scaleEnabled = false; - domUtils.un(scale, "mousedown", down); - }; - }, - isFullScreen: function() { - return this._fullscreen; - }, - postRender: function() { - UIBase.prototype.postRender.call(this); - for (var i = 0; i < this.toolbars.length; i++) { - this.toolbars[i].postRender(); - } - var me = this; - var timerId, - domUtils = baidu.editor.dom.domUtils, - updateFullScreenTime = function() { - clearTimeout(timerId); - timerId = setTimeout(function() { - me._updateFullScreen(); - }); - }; - domUtils.on(window, "resize", updateFullScreenTime); - - me.addListener("destroy", function() { - domUtils.un(window, "resize", updateFullScreenTime); - clearTimeout(timerId); - }); - }, - showToolbarMsg: function(msg, flag) { - this.getDom("toolbarmsg_label").innerHTML = msg; - this.getDom("toolbarmsg").style.display = ""; - // - if (!flag) { - var w = this.getDom("upload_dialog"); - w.style.display = "none"; - } - }, - hideToolbarMsg: function() { - this.getDom("toolbarmsg").style.display = "none"; - }, - mapUrl: function(url) { - return url - ? url.replace("~/", this.editor.options.UEDITOR_HOME_URL || "") - : ""; - }, - triggerLayout: function() { - var dom = this.getDom(); - if (dom.style.zoom == "1") { - dom.style.zoom = "100%"; - } else { - dom.style.zoom = "1"; - } - } - }; - utils.inherits(EditorUI, baidu.editor.ui.UIBase); - - var instances = {}; - - UE.ui.Editor = function(options) { - var editor = new UE.Editor(options); - editor.options.editor = editor; - utils.loadFile(document, { - href: - editor.options.themePath + editor.options.theme + "/css/ueditor.css", - tag: "link", - type: "text/css", - rel: "stylesheet" - }); - - var oldRender = editor.render; - editor.render = function(holder) { - if (holder.constructor === String) { - editor.key = holder; - instances[holder] = editor; - } - utils.domReady(function() { - editor.langIsReady - ? renderUI() - : editor.addListener("langReady", renderUI); - function renderUI() { - editor.setOpt({ - labelMap: editor.options.labelMap || editor.getLang("labelMap") - }); - new EditorUI(editor.options); - if (holder) { - if (holder.constructor === String) { - holder = document.getElementById(holder); - } - holder && - holder.getAttribute("name") && - (editor.options.textarea = holder.getAttribute("name")); - if (holder && /script|textarea/gi.test(holder.tagName)) { - var newDiv = document.createElement("div"); - holder.parentNode.insertBefore(newDiv, holder); - var cont = holder.value || holder.innerHTML; - editor.options.initialContent = /^[\t\r\n ]*$/.test(cont) - ? editor.options.initialContent - : cont - .replace(/>[\n\r\t]+([ ]{4})+/g, ">") - .replace(/[\n\r\t]+([ ]{4})+[\n\r\t]+<"); - holder.className && (newDiv.className = holder.className); - holder.style.cssText && - (newDiv.style.cssText = holder.style.cssText); - if (/textarea/i.test(holder.tagName)) { - editor.textarea = holder; - editor.textarea.style.display = "none"; - } else { - holder.parentNode.removeChild(holder); - } - if (holder.id) { - newDiv.id = holder.id; - domUtils.removeAttributes(holder, "id"); - } - holder = newDiv; - holder.innerHTML = ""; - } - } - domUtils.addClass(holder, "edui-" + editor.options.theme); - editor.ui.render(holder); - var opt = editor.options; - //给实例添加一个编辑器的容器引用 - editor.container = editor.ui.getDom(); - var parents = domUtils.findParents(holder, true); - var displays = []; - for (var i = 0, ci; (ci = parents[i]); i++) { - displays[i] = ci.style.display; - ci.style.display = "block"; - } - if (opt.initialFrameWidth) { - opt.minFrameWidth = opt.initialFrameWidth; - } else { - opt.minFrameWidth = opt.initialFrameWidth = holder.offsetWidth; - var styleWidth = holder.style.width; - if (/%$/.test(styleWidth)) { - opt.initialFrameWidth = styleWidth; - } - } - if (opt.initialFrameHeight) { - opt.minFrameHeight = opt.initialFrameHeight; - } else { - opt.initialFrameHeight = opt.minFrameHeight = holder.offsetHeight; - } - for (var i = 0, ci; (ci = parents[i]); i++) { - ci.style.display = displays[i]; - } - //编辑器最外容器设置了高度,会导致,编辑器不占位 - //todo 先去掉,没有找到原因 - if (holder.style.height) { - holder.style.height = ""; - } - editor.container.style.width = - opt.initialFrameWidth + - (/%$/.test(opt.initialFrameWidth) ? "" : "px"); - editor.container.style.zIndex = opt.zIndex; - oldRender.call(editor, editor.ui.getDom("iframeholder")); - editor.fireEvent("afteruiready"); - } - }); - }; - return editor; - }; - - /** - * @file - * @name UE - * @short UE - * @desc UEditor的顶部命名空间 - */ - /** - * @name getEditor - * @since 1.2.4+ - * @grammar UE.getEditor(id,[opt]) => Editor实例 - * @desc 提供一个全局的方法得到编辑器实例 - * - * * ''id'' 放置编辑器的容器id, 如果容器下的编辑器已经存在,就直接返回 - * * ''opt'' 编辑器的可选参数 - * @example - * UE.getEditor('containerId',{onready:function(){//创建一个编辑器实例 - * this.setContent('hello') - * }}); - * UE.getEditor('containerId'); //返回刚创建的实例 - * - */ - UE.getEditor = function(id, opt) { - var editor = instances[id]; - if (!editor) { - editor = instances[id] = new UE.ui.Editor(opt); - editor.render(id); - } - return editor; - }; - - UE.delEditor = function(id) { - var editor; - if ((editor = instances[id])) { - editor.key && editor.destroy(); - delete instances[id]; - } - }; - - UE.registerUI = function(uiName, fn, index, editorId) { - utils.each(uiName.split(/\s+/), function(name) { - baidu.editor.ui[name] = { - id: editorId, - execFn: fn, - index: index - }; - }); - }; -})(); - - -// adapter/message.js -UE.registerUI("message", function(editor) { - var editorui = baidu.editor.ui; - var Message = editorui.Message; - var holder; - var _messageItems = []; - var me = editor; - - me.setOpt("enableMessageShow", true); - if (me.getOpt("enableMessageShow") === false) { - return; - } - - me.addListener("ready", function() { - holder = document.getElementById(me.ui.id + "_message_holder"); - updateHolderPos(); - setTimeout(function() { - updateHolderPos(); - }, 500); - }); - - me.addListener("showmessage", function(type, opt) { - opt = utils.isString(opt) - ? { - content: opt - } - : opt; - var message = new Message({ - timeout: opt.timeout, - type: opt.type, - content: opt.content, - keepshow: opt.keepshow, - editor: me - }), - mid = opt.id || "msg_" + (+new Date()).toString(36); - message.render(holder); - _messageItems[mid] = message; - message.reset(opt); - updateHolderPos(); - return mid; - }); - - me.addListener("updatemessage", function(type, id, opt) { - opt = utils.isString(opt) - ? { - content: opt - } - : opt; - var message = _messageItems[id]; - message.render(holder); - message && message.reset(opt); - }); - - me.addListener("hidemessage", function(type, id) { - var message = _messageItems[id]; - message && message.hide(); - }); - - function updateHolderPos() { - if (!holder || !me.ui) return; - var toolbarbox = me.ui.getDom("toolbarbox"); - if (toolbarbox) { - holder.style.top = toolbarbox.offsetHeight + 3 + "px"; - } - holder.style.zIndex = - Math.max(me.options.zIndex, me.iframe.style.zIndex) + 1; - } -}); - - -// adapter/autosave.js -UE.registerUI("autosave", function(editor) { - var timer = null, - uid = null; - editor.on("afterautosave", function() { - clearTimeout(timer); - - timer = setTimeout(function() { - if (uid) { - editor.trigger("hidemessage", uid); - } - uid = editor.trigger("showmessage", { - content: editor.getLang("autosave.success"), - timeout: 2000 - }); - }, 2000); - }); -}); - - - -})(); diff --git a/public/ueditor/ueditor.all.min.js b/public/ueditor/ueditor.all.min.js deleted file mode 100644 index de57bee..0000000 --- a/public/ueditor/ueditor.all.min.js +++ /dev/null @@ -1,32941 +0,0 @@ -/*! - * ueditor - * version: 2.0.0 - * build: Fri Aug 11 2023 10:42:30 GMT+0800 (中国标准时间) - */ - -(function(){ - - // editor.js - UEDITOR_CONFIG = window.UEDITOR_CONFIG || {}; - - var baidu = window.baidu || {}; - - window.baidu = baidu; - - window.UE = baidu.editor = { - plugins: {}, - commands: {}, - instants: {}, - I18N: {}, - _customizeUI: {}, - version: "1.5.0" - }; - var dom = (UE.dom = {}); - - - // core/browser.js - /** - * 浏览器判断模块 - * @file - * @module UE.browser - * @since 1.2.6.1 - */ - - /** - * 提供浏览器检测的模块 - * @unfile - * @module UE.browser - */ - var browser = (UE.browser = (function() { - var agent = navigator.userAgent.toLowerCase(), - opera = window.opera, - browser = { - /** - * @property {boolean} ie 检测当前浏览器是否为IE - * @example - * ```javascript - * if ( UE.browser.ie ) { - * console.log( '当前浏览器是IE' ); - * } - * ``` - */ - ie: /(msie\s|trident.*rv:)([\w.]+)/i.test(agent), - - /** - * @property {boolean} opera 检测当前浏览器是否为Opera - * @example - * ```javascript - * if ( UE.browser.opera ) { - * console.log( '当前浏览器是Opera' ); - * } - * ``` - */ - opera: !!opera && opera.version, - - /** - * @property {boolean} webkit 检测当前浏览器是否是webkit内核的浏览器 - * @example - * ```javascript - * if ( UE.browser.webkit ) { - * console.log( '当前浏览器是webkit内核浏览器' ); - * } - * ``` - */ - webkit: agent.indexOf(" applewebkit/") > -1, - - /** - * @property {boolean} mac 检测当前浏览器是否是运行在mac平台下 - * @example - * ```javascript - * if ( UE.browser.mac ) { - * console.log( '当前浏览器运行在mac平台下' ); - * } - * ``` - */ - mac: agent.indexOf("macintosh") > -1, - - /** - * @property {boolean} quirks 检测当前浏览器是否处于“怪异模式”下 - * @example - * ```javascript - * if ( UE.browser.quirks ) { - * console.log( '当前浏览器运行处于“怪异模式”' ); - * } - * ``` - */ - quirks: document.compatMode == "BackCompat" - }; - - /** - * @property {boolean} gecko 检测当前浏览器内核是否是gecko内核 - * @example - * ```javascript - * if ( UE.browser.gecko ) { - * console.log( '当前浏览器内核是gecko内核' ); - * } - * ``` - */ - browser.gecko = - navigator.product == "Gecko" && - !browser.webkit && - !browser.opera && - !browser.ie; - - var version = 0; - - // Internet Explorer 6.0+ - if (browser.ie) { - var v1 = agent.match(/(?:msie\s([\w.]+))/); - var v2 = agent.match(/(?:trident.*rv:([\w.]+))/); - if (v1 && v2 && v1[1] && v2[1]) { - version = Math.max(v1[1] * 1, v2[1] * 1); - } else if (v1 && v1[1]) { - version = v1[1] * 1; - } else if (v2 && v2[1]) { - version = v2[1] * 1; - } else { - version = 0; - } - - browser.ie11Compat = document.documentMode == 11; - /** - * @property { boolean } ie9Compat 检测浏览器模式是否为 IE9 兼容模式 - * @warning 如果浏览器不是IE, 则该值为undefined - * @example - * ```javascript - * if ( UE.browser.ie9Compat ) { - * console.log( '当前浏览器运行在IE9兼容模式下' ); - * } - * ``` - */ - browser.ie9Compat = document.documentMode == 9; - - /** - * @property { boolean } ie8 检测浏览器是否是IE8浏览器 - * @warning 如果浏览器不是IE, 则该值为undefined - * @example - * ```javascript - * if ( UE.browser.ie8 ) { - * console.log( '当前浏览器是IE8浏览器' ); - * } - * ``` - */ - browser.ie8 = !!document.documentMode; - - /** - * @property { boolean } ie8Compat 检测浏览器模式是否为 IE8 兼容模式 - * @warning 如果浏览器不是IE, 则该值为undefined - * @example - * ```javascript - * if ( UE.browser.ie8Compat ) { - * console.log( '当前浏览器运行在IE8兼容模式下' ); - * } - * ``` - */ - browser.ie8Compat = document.documentMode == 8; - - /** - * @property { boolean } ie7Compat 检测浏览器模式是否为 IE7 兼容模式 - * @warning 如果浏览器不是IE, 则该值为undefined - * @example - * ```javascript - * if ( UE.browser.ie7Compat ) { - * console.log( '当前浏览器运行在IE7兼容模式下' ); - * } - * ``` - */ - browser.ie7Compat = - (version == 7 && !document.documentMode) || document.documentMode == 7; - - /** - * @property { boolean } ie6Compat 检测浏览器模式是否为 IE6 模式 或者怪异模式 - * @warning 如果浏览器不是IE, 则该值为undefined - * @example - * ```javascript - * if ( UE.browser.ie6Compat ) { - * console.log( '当前浏览器运行在IE6模式或者怪异模式下' ); - * } - * ``` - */ - browser.ie6Compat = version < 7 || browser.quirks; - - browser.ie9above = version > 8; - - browser.ie9below = version < 9; - - browser.ie11above = version > 10; - - browser.ie11below = version < 11; - } - - // Gecko. - if (browser.gecko) { - var geckoRelease = agent.match(/rv:([\d\.]+)/); - if (geckoRelease) { - geckoRelease = geckoRelease[1].split("."); - version = - geckoRelease[0] * 10000 + - (geckoRelease[1] || 0) * 100 + - (geckoRelease[2] || 0) * 1; - } - } - - /** - * @property { Number } chrome 检测当前浏览器是否为Chrome, 如果是,则返回Chrome的大版本号 - * @warning 如果浏览器不是chrome, 则该值为undefined - * @example - * ```javascript - * if ( UE.browser.chrome ) { - * console.log( '当前浏览器是Chrome' ); - * } - * ``` - */ - if (/chrome\/(\d+\.\d)/i.test(agent)) { - browser.chrome = +RegExp["\x241"]; - } - - /** - * @property { Number } safari 检测当前浏览器是否为Safari, 如果是,则返回Safari的大版本号 - * @warning 如果浏览器不是safari, 则该值为undefined - * @example - * ```javascript - * if ( UE.browser.safari ) { - * console.log( '当前浏览器是Safari' ); - * } - * ``` - */ - if ( - /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(agent) && - !/chrome/i.test(agent) - ) { - browser.safari = +(RegExp["\x241"] || RegExp["\x242"]); - } - - // Opera 9.50+ - if (browser.opera) version = parseFloat(opera.version()); - - // WebKit 522+ (Safari 3+) - if (browser.webkit) - version = parseFloat(agent.match(/ applewebkit\/(\d+)/)[1]); - - /** - * @property { Number } version 检测当前浏览器版本号 - * @remind - *
      - *
    • IE系列返回值为5,6,7,8,9,10等
    • - *
    • gecko系列会返回10900,158900等
    • - *
    • webkit系列会返回其build号 (如 522等)
    • - *
    - * @example - * ```javascript - * console.log( '当前浏览器版本号是: ' + UE.browser.version ); - * ``` - */ - browser.version = version; - - /** - * @property { boolean } isCompatible 检测当前浏览器是否能够与UEditor良好兼容 - * @example - * ```javascript - * if ( UE.browser.isCompatible ) { - * console.log( '浏览器与UEditor能够良好兼容' ); - * } - * ``` - */ - browser.isCompatible = - !browser.mobile && - ((browser.ie && version >= 6) || - (browser.gecko && version >= 10801) || - (browser.opera && version >= 9.5) || - (browser.air && version >= 1) || - (browser.webkit && version >= 522) || - false); - return browser; - })()); - //快捷方式 - var ie = browser.ie, - webkit = browser.webkit, - gecko = browser.gecko, - opera = browser.opera; - - - // core/utils.js - /** - * 工具函数包 - * @file - * @module UE.utils - * @since 1.2.6.1 - */ - - /** - * UEditor封装使用的静态工具函数 - * @module UE.utils - * @unfile - */ - - var utils = (UE.utils = { - /** - * 用给定的迭代器遍历对象 - * @method each - * @param { Object } obj 需要遍历的对象 - * @param { Function } iterator 迭代器, 该方法接受两个参数, 第一个参数是当前所处理的value, 第二个参数是当前遍历对象的key - * @example - * ```javascript - * var demoObj = { - * key1: 1, - * key2: 2 - * }; - * - * //output: key1: 1, key2: 2 - * UE.utils.each( demoObj, funciton ( value, key ) { - * - * console.log( key + ":" + value ); - * - * } ); - * ``` - */ - - /** - * 用给定的迭代器遍历数组或类数组对象 - * @method each - * @param { Array } array 需要遍历的数组或者类数组 - * @param { Function } iterator 迭代器, 该方法接受两个参数, 第一个参数是当前所处理的value, 第二个参数是当前遍历对象的key - * @example - * ```javascript - * var divs = document.getElmentByTagNames( "div" ); - * - * //output: 0: DIV, 1: DIV ... - * UE.utils.each( divs, funciton ( value, key ) { - * - * console.log( key + ":" + value.tagName ); - * - * } ); - * ``` - */ - each: function(obj, iterator, context) { - if (obj == null) return; - if (obj.length === +obj.length) { - for (var i = 0, l = obj.length; i < l; i++) { - if (iterator.call(context, obj[i], i, obj) === false) return false; - } - } else { - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - if (iterator.call(context, obj[key], key, obj) === false) - return false; - } - } - } - }, - - /** - * 以给定对象作为原型创建一个新对象 - * @method makeInstance - * @param { Object } protoObject 该对象将作为新创建对象的原型 - * @return { Object } 新的对象, 该对象的原型是给定的protoObject对象 - * @example - * ```javascript - * - * var protoObject = { sayHello: function () { console.log('Hello UEditor!'); } }; - * - * var newObject = UE.utils.makeInstance( protoObject ); - * //output: Hello UEditor! - * newObject.sayHello(); - * ``` - */ - makeInstance: function(obj) { - var noop = new Function(); - noop.prototype = obj; - obj = new noop(); - noop.prototype = null; - return obj; - }, - - /** - * 将source对象中的属性扩展到target对象上 - * @method extend - * @remind 该方法将强制把source对象上的属性复制到target对象上 - * @see UE.utils.extend(Object,Object,Boolean) - * @param { Object } target 目标对象, 新的属性将附加到该对象上 - * @param { Object } source 源对象, 该对象的属性会被附加到target对象上 - * @return { Object } 返回target对象 - * @example - * ```javascript - * - * var target = { name: 'target', sex: 1 }, - * source = { name: 'source', age: 17 }; - * - * UE.utils.extend( target, source ); - * - * //output: { name: 'source', sex: 1, age: 17 } - * console.log( target ); - * - * ``` - */ - - /** - * 将source对象中的属性扩展到target对象上, 根据指定的isKeepTarget值决定是否保留目标对象中与 - * 源对象属性名相同的属性值。 - * @method extend - * @param { Object } target 目标对象, 新的属性将附加到该对象上 - * @param { Object } source 源对象, 该对象的属性会被附加到target对象上 - * @param { Boolean } isKeepTarget 是否保留目标对象中与源对象中属性名相同的属性 - * @return { Object } 返回target对象 - * @example - * ```javascript - * - * var target = { name: 'target', sex: 1 }, - * source = { name: 'source', age: 17 }; - * - * UE.utils.extend( target, source, true ); - * - * //output: { name: 'target', sex: 1, age: 17 } - * console.log( target ); - * - * ``` - */ - extend: function(t, s, b) { - if (s) { - for (var k in s) { - if (!b || !t.hasOwnProperty(k)) { - t[k] = s[k]; - } - } - } - return t; - }, - - /** - * 将给定的多个对象的属性复制到目标对象target上 - * @method extend2 - * @remind 该方法将强制把源对象上的属性复制到target对象上 - * @remind 该方法支持两个及以上的参数, 从第二个参数开始, 其属性都会被复制到第一个参数上。 如果遇到同名的属性, - * 将会覆盖掉之前的值。 - * @param { Object } target 目标对象, 新的属性将附加到该对象上 - * @param { Object... } source 源对象, 支持多个对象, 该对象的属性会被附加到target对象上 - * @return { Object } 返回target对象 - * @example - * ```javascript - * - * var target = {}, - * source1 = { name: 'source', age: 17 }, - * source2 = { title: 'dev' }; - * - * UE.utils.extend2( target, source1, source2 ); - * - * //output: { name: 'source', age: 17, title: 'dev' } - * console.log( target ); - * - * ``` - */ - extend2: function(t) { - var a = arguments; - for (var i = 1; i < a.length; i++) { - var x = a[i]; - for (var k in x) { - if (!t.hasOwnProperty(k)) { - t[k] = x[k]; - } - } - } - return t; - }, - - /** - * 模拟继承机制, 使得subClass继承自superClass - * @method inherits - * @param { Object } subClass 子类对象 - * @param { Object } superClass 超类对象 - * @warning 该方法只能让subClass继承超类的原型, subClass对象自身的属性和方法不会被继承 - * @return { Object } 继承superClass后的子类对象 - * @example - * ```javascript - * function SuperClass(){ - * this.name = "小李"; - * } - * - * SuperClass.prototype = { - * hello:function(str){ - * console.log(this.name + str); - * } - * } - * - * function SubClass(){ - * this.name = "小张"; - * } - * - * UE.utils.inherits(SubClass,SuperClass); - * - * var sub = new SubClass(); - * //output: '小张早上好! - * sub.hello("早上好!"); - * ``` - */ - inherits: function(subClass, superClass) { - var oldP = subClass.prototype, - newP = utils.makeInstance(superClass.prototype); - utils.extend(newP, oldP, true); - subClass.prototype = newP; - return (newP.constructor = subClass); - }, - - /** - * 用指定的context对象作为函数fn的上下文 - * @method bind - * @param { Function } fn 需要绑定上下文的函数对象 - * @param { Object } content 函数fn新的上下文对象 - * @return { Function } 一个新的函数, 该函数作为原始函数fn的代理, 将完成fn的上下文调换工作。 - * @example - * ```javascript - * - * var name = 'window', - * newTest = null; - * - * function test () { - * console.log( this.name ); - * } - * - * newTest = UE.utils.bind( test, { name: 'object' } ); - * - * //output: object - * newTest(); - * - * //output: window - * test(); - * - * ``` - */ - bind: function(fn, context) { - return function() { - return fn.apply(context, arguments); - }; - }, - - /** - * 创建延迟指定时间后执行的函数fn - * @method defer - * @param { Function } fn 需要延迟执行的函数对象 - * @param { int } delay 延迟的时间, 单位是毫秒 - * @warning 该方法的时间控制是不精确的,仅仅只能保证函数的执行是在给定的时间之后, - * 而不能保证刚好到达延迟时间时执行。 - * @return { Function } 目标函数fn的代理函数, 只有执行该函数才能起到延时效果 - * @example - * ```javascript - * var start = 0; - * - * function test(){ - * console.log( new Date() - start ); - * } - * - * var testDefer = UE.utils.defer( test, 1000 ); - * // - * start = new Date(); - * //output: (大约在1000毫秒之后输出) 1000 - * testDefer(); - * ``` - */ - - /** - * 创建延迟指定时间后执行的函数fn, 如果在延迟时间内再次执行该方法, 将会根据指定的exclusion的值, - * 决定是否取消前一次函数的执行, 如果exclusion的值为true, 则取消执行,反之,将继续执行前一个方法。 - * @method defer - * @param { Function } fn 需要延迟执行的函数对象 - * @param { int } delay 延迟的时间, 单位是毫秒 - * @param { Boolean } exclusion 如果在延迟时间内再次执行该函数,该值将决定是否取消执行前一次函数的执行, - * 值为true表示取消执行, 反之则将在执行前一次函数之后才执行本次函数调用。 - * @warning 该方法的时间控制是不精确的,仅仅只能保证函数的执行是在给定的时间之后, - * 而不能保证刚好到达延迟时间时执行。 - * @return { Function } 目标函数fn的代理函数, 只有执行该函数才能起到延时效果 - * @example - * ```javascript - * - * function test(){ - * console.log(1); - * } - * - * var testDefer = UE.utils.defer( test, 1000, true ); - * - * //output: (两次调用仅有一次输出) 1 - * testDefer(); - * testDefer(); - * ``` - */ - defer: function(fn, delay, exclusion) { - var timerID; - return function() { - if (exclusion) { - clearTimeout(timerID); - } - timerID = setTimeout(fn, delay); - }; - }, - - /** - * 获取元素item在数组array中首次出现的位置, 如果未找到item, 则返回-1 - * @method indexOf - * @remind 该方法的匹配过程使用的是恒等“===” - * @param { Array } array 需要查找的数组对象 - * @param { * } item 需要在目标数组中查找的值 - * @return { int } 返回item在目标数组array中首次出现的位置, 如果在数组中未找到item, 则返回-1 - * @example - * ```javascript - * var item = 1, - * arr = [ 3, 4, 6, 8, 1, 1, 2 ]; - * - * //output: 4 - * console.log( UE.utils.indexOf( arr, item ) ); - * ``` - */ - - /** - * 获取元素item数组array中首次出现的位置, 如果未找到item, 则返回-1。通过start的值可以指定搜索的起始位置。 - * @method indexOf - * @remind 该方法的匹配过程使用的是恒等“===” - * @param { Array } array 需要查找的数组对象 - * @param { * } item 需要在目标数组中查找的值 - * @param { int } start 搜索的起始位置 - * @return { int } 返回item在目标数组array中的start位置之后首次出现的位置, 如果在数组中未找到item, 则返回-1 - * @example - * ```javascript - * var item = 1, - * arr = [ 3, 4, 6, 8, 1, 2, 8, 3, 2, 1, 1, 4 ]; - * - * //output: 9 - * console.log( UE.utils.indexOf( arr, item, 5 ) ); - * ``` - */ - indexOf: function(array, item, start) { - var index = -1; - start = this.isNumber(start) ? start : 0; - this.each(array, function(v, i) { - if (i >= start && v === item) { - index = i; - return false; - } - }); - return index; - }, - - /** - * 移除数组array中所有的元素item - * @method removeItem - * @param { Array } array 要移除元素的目标数组 - * @param { * } item 将要被移除的元素 - * @remind 该方法的匹配过程使用的是恒等“===” - * @example - * ```javascript - * var arr = [ 4, 5, 7, 1, 3, 4, 6 ]; - * - * UE.utils.removeItem( arr, 4 ); - * //output: [ 5, 7, 1, 3, 6 ] - * console.log( arr ); - * - * ``` - */ - removeItem: function(array, item) { - for (var i = 0, l = array.length; i < l; i++) { - if (array[i] === item) { - array.splice(i, 1); - i--; - } - } - }, - - /** - * 删除字符串str的首尾空格 - * @method trim - * @param { String } str 需要删除首尾空格的字符串 - * @return { String } 删除了首尾的空格后的字符串 - * @example - * ```javascript - * - * var str = " UEdtior "; - * - * //output: 9 - * console.log( str.length ); - * - * //output: 7 - * console.log( UE.utils.trim( " UEdtior " ).length ); - * - * //output: 9 - * console.log( str.length ); - * - * ``` - */ - trim: function(str) { - return str.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, ""); - }, - - /** - * 将字符串str以','分隔成数组后,将该数组转换成哈希对象, 其生成的hash对象的key为数组中的元素, value为1 - * @method listToMap - * @warning 该方法在生成的hash对象中,会为每一个key同时生成一个另一个全大写的key。 - * @param { String } str 该字符串将被以','分割为数组, 然后进行转化 - * @return { Object } 转化之后的hash对象 - * @example - * ```javascript - * - * //output: Object {UEdtior: 1, UEDTIOR: 1, Hello: 1, HELLO: 1} - * console.log( UE.utils.listToMap( 'UEdtior,Hello' ) ); - * - * ``` - */ - - /** - * 将字符串数组转换成哈希对象, 其生成的hash对象的key为数组中的元素, value为1 - * @method listToMap - * @warning 该方法在生成的hash对象中,会为每一个key同时生成一个另一个全大写的key。 - * @param { Array } arr 字符串数组 - * @return { Object } 转化之后的hash对象 - * @example - * ```javascript - * - * //output: Object {UEdtior: 1, UEDTIOR: 1, Hello: 1, HELLO: 1} - * console.log( UE.utils.listToMap( [ 'UEdtior', 'Hello' ] ) ); - * - * ``` - */ - listToMap: function(list) { - if (!list) return {}; - list = utils.isArray(list) ? list : list.split(","); - for (var i = 0, ci, obj = {}; (ci = list[i++]); ) { - obj[ci.toUpperCase()] = obj[ci] = 1; - } - return obj; - }, - - /** - * 将str中的html符号转义,将转义“',&,<,",>,”,“”七个字符 - * @method unhtml - * @param { String } str 需要转义的字符串 - * @return { String } 转义后的字符串 - * @example - * ```javascript - * var html = '&'; - * - * //output: <body>&</body> - * console.log( UE.utils.unhtml( html ) ); - * - * ``` - */ - unhtml: function(str, reg) { - return str - ? str.replace( - reg || /[&<">'](?:(amp|lt|ldquo|rdquo|quot|gt|#39|nbsp|#\d+);)?/g, - function(a, b) { - if (b) { - return a; - } else { - return { - "<": "<", - "&": "&", - '"': """, - "“": "“", - "”": "”", - ">": ">", - "'": "'" - }[a]; - } - } - ) - : ""; - }, - - /** - * 将str中的转义字符还原成html字符 - * @see UE.utils.unhtml(String); - * @method html - * @param { String } str 需要逆转义的字符串 - * @return { String } 逆转义后的字符串 - * @example - * ```javascript - * - * var str = '<body>&</body>'; - * - * //output: & - * console.log( UE.utils.html( str ) ); - * - * ``` - */ - html: function(str) { - return str - ? str.replace(/&((g|l|quo|ldquo|rdquo)t|amp|#39|nbsp);/g, function(m) { - return { - "<": "<", - "&": "&", - """: '"', - "“": "“", - "”": "”", - ">": ">", - "'": "'", - " ": " " - }[m]; - }) - : ""; - }, - - /** - * 将css样式转换为驼峰的形式 - * @method cssStyleToDomStyle - * @param { String } cssName 需要转换的css样式名 - * @return { String } 转换成驼峰形式后的css样式名 - * @example - * ```javascript - * - * var str = 'border-top'; - * - * //output: borderTop - * console.log( UE.utils.cssStyleToDomStyle( str ) ); - * - * ``` - */ - cssStyleToDomStyle: (function() { - var test = document.createElement("div").style, - cache = { - float: test.cssFloat != undefined - ? "cssFloat" - : test.styleFloat != undefined ? "styleFloat" : "float" - }; - - return function(cssName) { - return ( - cache[cssName] || - (cache[cssName] = cssName.toLowerCase().replace(/-./g, function(match) { - return match.charAt(1).toUpperCase(); - })) - ); - }; - })(), - - /** - * 动态加载文件到doc中 - * @method loadFile - * @param { DomDocument } document 需要加载资源文件的文档对象 - * @param { Object } options 加载资源文件的属性集合, 取值请参考代码示例 - * @example - * ```javascript - * - * UE.utils.loadFile( document, { - * src:"test.js", - * tag:"script", - * type:"text/javascript", - * defer:"defer" - * } ); - * - * ``` - */ - - /** - * 动态加载文件到doc中,加载成功后执行的回调函数fn - * @method loadFile - * @param { DomDocument } document 需要加载资源文件的文档对象 - * @param { Object } options 加载资源文件的属性集合, 该集合支持的值是script标签和style标签支持的所有属性。 - * @param { Function } fn 资源文件加载成功之后执行的回调 - * @warning 对于在同一个文档中多次加载同一URL的文件, 该方法会在第一次加载之后缓存该请求, - * 在此之后的所有同一URL的请求, 将会直接触发回调。 - * @example - * ```javascript - * - * UE.utils.loadFile( document, { - * src:"test.js", - * tag:"script", - * type:"text/javascript", - * defer:"defer" - * }, function () { - * console.log('加载成功'); - * } ); - * - * ``` - */ - loadFile: (function() { - var tmpList = []; - - function getItem(doc, obj) { - try { - for (var i = 0, ci; (ci = tmpList[i++]); ) { - if (ci.doc === doc && ci.url == (obj.src || obj.href)) { - return ci; - } - } - } catch (e) { - return null; - } - } - - return function(doc, obj, fn) { - var item = getItem(doc, obj); - if (item) { - if (item.ready) { - fn && fn(); - } else { - item.funs.push(fn); - } - return; - } - tmpList.push({ - doc: doc, - url: obj.src || obj.href, - funs: [fn] - }); - if (!doc.body) { - var html = []; - for (var p in obj) { - if (p == "tag") continue; - html.push(p + '="' + obj[p] + '"'); - } - doc.write( - "<" + obj.tag + " " + html.join(" ") + " >" - ); - return; - } - if (obj.id && doc.getElementById(obj.id)) { - return; - } - var element = doc.createElement(obj.tag); - delete obj.tag; - for (var p in obj) { - element.setAttribute(p, obj[p]); - } - element.onload = element.onreadystatechange = function() { - if (!this.readyState || /loaded|complete/.test(this.readyState)) { - item = getItem(doc, obj); - if (item.funs.length > 0) { - item.ready = 1; - for (var fi; (fi = item.funs.pop()); ) { - fi(); - } - } - element.onload = element.onreadystatechange = null; - } - }; - element.onerror = function() { - throw Error( - "The load " + - (obj.href || obj.src) + - " fails,check the url settings of file ueditor.config.js " - ); - }; - doc.getElementsByTagName("head")[0].appendChild(element); - }; - })(), - - /** - * 判断obj对象是否为空 - * @method isEmptyObject - * @param { * } obj 需要判断的对象 - * @remind 如果判断的对象是NULL, 将直接返回true, 如果是数组且为空, 返回true, 如果是字符串, 且字符串为空, - * 返回true, 如果是普通对象, 且该对象没有任何实例属性, 返回true - * @return { Boolean } 对象是否为空 - * @example - * ```javascript - * - * //output: true - * console.log( UE.utils.isEmptyObject( {} ) ); - * - * //output: true - * console.log( UE.utils.isEmptyObject( [] ) ); - * - * //output: true - * console.log( UE.utils.isEmptyObject( "" ) ); - * - * //output: false - * console.log( UE.utils.isEmptyObject( { key: 1 } ) ); - * - * //output: false - * console.log( UE.utils.isEmptyObject( [1] ) ); - * - * //output: false - * console.log( UE.utils.isEmptyObject( "1" ) ); - * - * ``` - */ - isEmptyObject: function(obj) { - if (obj == null) return true; - if (this.isArray(obj) || this.isString(obj)) return obj.length === 0; - for (var key in obj) if (obj.hasOwnProperty(key)) return false; - return true; - }, - - /** - * 把rgb格式的颜色值转换成16进制格式 - * @method fixColor - * @param { String } rgb格式的颜色值 - * @param { String } - * @example - * rgb(255,255,255) => "#ffffff" - */ - fixColor: function(name, value) { - if (/color/i.test(name) && /rgba?/.test(value)) { - var array = value.split(","); - if (array.length > 3) return ""; - value = "#"; - for (var i = 0, color; (color = array[i++]); ) { - color = parseInt(color.replace(/[^\d]/gi, ""), 10).toString(16); - value += color.length == 1 ? "0" + color : color; - } - value = value.toUpperCase(); - } - return value; - }, - /** - * 只针对border,padding,margin做了处理,因为性能问题 - * @public - * @function - * @param {String} val style字符串 - */ - optCss: function(val) { - var padding, margin, border; - val = val.replace(/(padding|margin|border)\-([^:]+):([^;]+);?/gi, function( - str, - key, - name, - val - ) { - if (val.split(" ").length == 1) { - switch (key) { - case "padding": - !padding && (padding = {}); - padding[name] = val; - return ""; - case "margin": - !margin && (margin = {}); - margin[name] = val; - return ""; - case "border": - return val == "initial" ? "" : str; - } - } - return str; - }); - - function opt(obj, name) { - if (!obj) { - return ""; - } - var t = obj.top, - b = obj.bottom, - l = obj.left, - r = obj.right, - val = ""; - if (!t || !l || !b || !r) { - for (var p in obj) { - val += ";" + name + "-" + p + ":" + obj[p] + ";"; - } - } else { - val += - ";" + - name + - ":" + - (t == b && b == l && l == r - ? t - : t == b && l == r - ? t + " " + l - : l == r - ? t + " " + l + " " + b - : t + " " + r + " " + b + " " + l) + - ";"; - } - return val; - } - - val += opt(padding, "padding") + opt(margin, "margin"); - return val - .replace(/^[ \n\r\t;]*|[ \n\r\t]*$/, "") - .replace(/;([ \n\r\t]+)|\1;/g, ";") - .replace(/(&((l|g)t|quot|#39))?;{2,}/g, function(a, b) { - return b ? b + ";;" : ";"; - }); - }, - - /** - * 克隆对象 - * @method clone - * @param { Object } source 源对象 - * @return { Object } source的一个副本 - */ - - /** - * 深度克隆对象,将source的属性克隆到target对象, 会覆盖target重名的属性。 - * @method clone - * @param { Object } source 源对象 - * @param { Object } target 目标对象 - * @return { Object } 附加了source对象所有属性的target对象 - */ - clone: function(source, target) { - var tmp; - target = target || {}; - for (var i in source) { - if (source.hasOwnProperty(i)) { - tmp = source[i]; - if (typeof tmp == "object") { - target[i] = utils.isArray(tmp) ? [] : {}; - utils.clone(source[i], target[i]); - } else { - target[i] = tmp; - } - } - } - return target; - }, - - /** - * 把cm/pt为单位的值转换为px为单位的值 - * @method transUnitToPx - * @param { String } 待转换的带单位的字符串 - * @return { String } 转换为px为计量单位的值的字符串 - * @example - * ```javascript - * - * //output: 500px - * console.log( UE.utils.transUnitToPx( '20cm' ) ); - * - * //output: 27px - * console.log( UE.utils.transUnitToPx( '20pt' ) ); - * - * ``` - */ - transUnitToPx: function(val) { - if (!/(pt|cm)/.test(val)) { - return val; - } - var unit; - val.replace(/([\d.]+)(\w+)/, function(str, v, u) { - val = v; - unit = u; - }); - switch (unit) { - case "cm": - val = parseFloat(val) * 25; - break; - case "pt": - val = Math.round(parseFloat(val) * 96 / 72); - } - return val + (val ? "px" : ""); - }, - - /** - * 在dom树ready之后执行给定的回调函数 - * @method domReady - * @remind 如果在执行该方法的时候, dom树已经ready, 那么回调函数将立刻执行 - * @param { Function } fn dom树ready之后的回调函数 - * @example - * ```javascript - * - * UE.utils.domReady( function () { - * - * console.log('123'); - * - * } ); - * - * ``` - */ - domReady: (function() { - var fnArr = []; - - function doReady(doc) { - //确保onready只执行一次 - doc.isReady = true; - for (var ci; (ci = fnArr.pop()); ci()) {} - } - - return function(onready, win) { - win = win || window; - var doc = win.document; - onready && fnArr.push(onready); - if (doc.readyState === "complete") { - doReady(doc); - } else { - doc.isReady && doReady(doc); - if (browser.ie && browser.version != 11) { - (function() { - if (doc.isReady) return; - try { - doc.documentElement.doScroll("left"); - } catch (error) { - setTimeout(arguments.callee, 0); - return; - } - doReady(doc); - })(); - win.attachEvent("onload", function() { - doReady(doc); - }); - } else { - doc.addEventListener( - "DOMContentLoaded", - function() { - doc.removeEventListener( - "DOMContentLoaded", - arguments.callee, - false - ); - doReady(doc); - }, - false - ); - win.addEventListener( - "load", - function() { - doReady(doc); - }, - false - ); - } - } - }; - })(), - - /** - * 动态添加css样式 - * @method cssRule - * @param { String } 节点名称 - * @grammar UE.utils.cssRule('添加的样式的节点名称',['样式','放到哪个document上']) - * @grammar UE.utils.cssRule('body','body{background:#ccc}') => null //给body添加背景颜色 - * @grammar UE.utils.cssRule('body') =>样式的字符串 //取得key值为body的样式的内容,如果没有找到key值先关的样式将返回空,例如刚才那个背景颜色,将返回 body{background:#ccc} - * @grammar UE.utils.cssRule('body',document) => 返回指定key的样式,并且指定是哪个document - * @grammar UE.utils.cssRule('body','') =>null //清空给定的key值的背景颜色 - */ - cssRule: browser.ie && browser.version != 11 - ? function(key, style, doc) { - var indexList, index; - if ( - style === undefined || - (style && style.nodeType && style.nodeType == 9) - ) { - //获取样式 - doc = style && style.nodeType && style.nodeType == 9 - ? style - : doc || document; - indexList = doc.indexList || (doc.indexList = {}); - index = indexList[key]; - if (index !== undefined) { - return doc.styleSheets[index].cssText; - } - return undefined; - } - doc = doc || document; - indexList = doc.indexList || (doc.indexList = {}); - index = indexList[key]; - //清除样式 - if (style === "") { - if (index !== undefined) { - doc.styleSheets[index].cssText = ""; - delete indexList[key]; - return true; - } - return false; - } - - //添加样式 - if (index !== undefined) { - sheetStyle = doc.styleSheets[index]; - } else { - sheetStyle = doc.createStyleSheet( - "", - (index = doc.styleSheets.length) - ); - indexList[key] = index; - } - sheetStyle.cssText = style; - } - : function(key, style, doc) { - var head, node; - if ( - style === undefined || - (style && style.nodeType && style.nodeType == 9) - ) { - //获取样式 - doc = style && style.nodeType && style.nodeType == 9 - ? style - : doc || document; - node = doc.getElementById(key); - return node ? node.innerHTML : undefined; - } - doc = doc || document; - node = doc.getElementById(key); - - //清除样式 - if (style === "") { - if (node) { - node.parentNode.removeChild(node); - return true; - } - return false; - } - - //添加样式 - if (node) { - node.innerHTML = style; - } else { - node = doc.createElement("style"); - node.id = key; - node.innerHTML = style; - doc.getElementsByTagName("head")[0].appendChild(node); - } - }, - sort: function(array, compareFn) { - compareFn = - compareFn || - function(item1, item2) { - return item1.localeCompare(item2); - }; - for (var i = 0, len = array.length; i < len; i++) { - for (var j = i, length = array.length; j < length; j++) { - if (compareFn(array[i], array[j]) > 0) { - var t = array[i]; - array[i] = array[j]; - array[j] = t; - } - } - } - return array; - }, - serializeParam: function(json) { - var strArr = []; - for (var i in json) { - //忽略默认的几个参数 - if (i == "method" || i == "timeout" || i == "async") continue; - //传递过来的对象和函数不在提交之列 - if ( - !( - (typeof json[i]).toLowerCase() == "function" || - (typeof json[i]).toLowerCase() == "object" - ) - ) { - strArr.push(encodeURIComponent(i) + "=" + encodeURIComponent(json[i])); - } else if (utils.isArray(json[i])) { - //支持传数组内容 - for (var j = 0; j < json[i].length; j++) { - strArr.push( - encodeURIComponent(i) + "[]=" + encodeURIComponent(json[i][j]) - ); - } - } - } - return strArr.join("&"); - }, - formatUrl: function(url) { - var u = url.replace(/&&/g, "&"); - u = u.replace(/\?&/g, "?"); - u = u.replace(/&$/g, ""); - u = u.replace(/&#/g, "#"); - u = u.replace(/&+/g, "&"); - return u; - }, - isCrossDomainUrl: function(url) { - var a = document.createElement("a"); - a.href = url; - if (browser.ie) { - a.href = a.href; - } - return !( - a.protocol == location.protocol && - a.hostname == location.hostname && - (a.port == location.port || - (a.port == "80" && location.port == "") || - (a.port == "" && location.port == "80")) - ); - }, - clearEmptyAttrs: function(obj) { - for (var p in obj) { - if (obj[p] === "") { - delete obj[p]; - } - } - return obj; - }, - str2json: function(s) { - if (!utils.isString(s)) return null; - if (window.JSON) { - return JSON.parse(s); - } else { - return new Function("return " + utils.trim(s || ""))(); - } - }, - json2str: (function() { - if (window.JSON) { - return JSON.stringify; - } else { - var escapeMap = { - "\b": "\\b", - "\t": "\\t", - "\n": "\\n", - "\f": "\\f", - "\r": "\\r", - '"': '\\"', - "\\": "\\\\" - }; - - function encodeString(source) { - if (/["\\\x00-\x1f]/.test(source)) { - source = source.replace(/["\\\x00-\x1f]/g, function(match) { - var c = escapeMap[match]; - if (c) { - return c; - } - c = match.charCodeAt(); - return ( - "\\u00" + Math.floor(c / 16).toString(16) + (c % 16).toString(16) - ); - }); - } - return '"' + source + '"'; - } - - function encodeArray(source) { - var result = ["["], - l = source.length, - preComma, - i, - item; - - for (i = 0; i < l; i++) { - item = source[i]; - - switch (typeof item) { - case "undefined": - case "function": - case "unknown": - break; - default: - if (preComma) { - result.push(","); - } - result.push(utils.json2str(item)); - preComma = 1; - } - } - result.push("]"); - return result.join(""); - } - - function pad(source) { - return source < 10 ? "0" + source : source; - } - - function encodeDate(source) { - return ( - '"' + - source.getFullYear() + - "-" + - pad(source.getMonth() + 1) + - "-" + - pad(source.getDate()) + - "T" + - pad(source.getHours()) + - ":" + - pad(source.getMinutes()) + - ":" + - pad(source.getSeconds()) + - '"' - ); - } - - return function(value) { - switch (typeof value) { - case "undefined": - return "undefined"; - - case "number": - return isFinite(value) ? String(value) : "null"; - - case "string": - return encodeString(value); - - case "boolean": - return String(value); - - default: - if (value === null) { - return "null"; - } else if (utils.isArray(value)) { - return encodeArray(value); - } else if (utils.isDate(value)) { - return encodeDate(value); - } else { - var result = ["{"], - encode = utils.json2str, - preComma, - item; - - for (var key in value) { - if (Object.prototype.hasOwnProperty.call(value, key)) { - item = value[key]; - switch (typeof item) { - case "undefined": - case "unknown": - case "function": - break; - default: - if (preComma) { - result.push(","); - } - preComma = 1; - result.push(encode(key) + ":" + encode(item)); - } - } - } - result.push("}"); - return result.join(""); - } - } - }; - } - })() - }); - /** - * 判断给定的对象是否是字符串 - * @method isString - * @param { * } object 需要判断的对象 - * @return { Boolean } 给定的对象是否是字符串 - */ - - /** - * 判断给定的对象是否是数组 - * @method isArray - * @param { * } object 需要判断的对象 - * @return { Boolean } 给定的对象是否是数组 - */ - - /** - * 判断给定的对象是否是一个Function - * @method isFunction - * @param { * } object 需要判断的对象 - * @return { Boolean } 给定的对象是否是Function - */ - - /** - * 判断给定的对象是否是Number - * @method isNumber - * @param { * } object 需要判断的对象 - * @return { Boolean } 给定的对象是否是Number - */ - - /** - * 判断给定的对象是否是一个正则表达式 - * @method isRegExp - * @param { * } object 需要判断的对象 - * @return { Boolean } 给定的对象是否是正则表达式 - */ - - /** - * 判断给定的对象是否是一个普通对象 - * @method isObject - * @param { * } object 需要判断的对象 - * @return { Boolean } 给定的对象是否是普通对象 - */ - utils.each( - ["String", "Function", "Array", "Number", "RegExp", "Object", "Date"], - function(v) { - UE.utils["is" + v] = function(obj) { - return Object.prototype.toString.apply(obj) == "[object " + v + "]"; - }; - } - ); - - - // core/EventBase.js - /** - * UE采用的事件基类 - * @file - * @module UE - * @class EventBase - * @since 1.2.6.1 - */ - - /** - * UEditor公用空间,UEditor所有的功能都挂载在该空间下 - * @unfile - * @module UE - */ - - /** - * UE采用的事件基类,继承此类的对应类将获取addListener,removeListener,fireEvent方法。 - * 在UE中,Editor以及所有ui实例都继承了该类,故可以在对应的ui对象以及editor对象上使用上述方法。 - * @unfile - * @module UE - * @class EventBase - */ - - /** - * 通过此构造器,子类可以继承EventBase获取事件监听的方法 - * @constructor - * @example - * ```javascript - * UE.EventBase.call(editor); - * ``` - */ - var EventBase = (UE.EventBase = function() {}); - - EventBase.prototype = { - /** - * 注册事件监听器 - * @method addListener - * @param { String } types 监听的事件名称,同时监听多个事件使用空格分隔 - * @param { Function } fn 监听的事件被触发时,会执行该回调函数 - * @waining 事件被触发时,监听的函数假如返回的值恒等于true,回调函数的队列中后面的函数将不执行 - * @example - * ```javascript - * editor.addListener('selectionchange',function(){ - * console.log("选区已经变化!"); - * }) - * editor.addListener('beforegetcontent aftergetcontent',function(type){ - * if(type == 'beforegetcontent'){ - * //do something - * }else{ - * //do something - * } - * console.log(this.getContent) // this是注册的事件的编辑器实例 - * }) - * ``` - * @see UE.EventBase:fireEvent(String) - */ - addListener: function(types, listener) { - types = utils.trim(types).split(/\s+/); - for (var i = 0, ti; (ti = types[i++]); ) { - getListener(this, ti, true).push(listener); - } - }, - - on: function(types, listener) { - return this.addListener(types, listener); - }, - off: function(types, listener) { - return this.removeListener(types, listener); - }, - trigger: function() { - return this.fireEvent.apply(this, arguments); - }, - /** - * 移除事件监听器 - * @method removeListener - * @param { String } types 移除的事件名称,同时移除多个事件使用空格分隔 - * @param { Function } fn 移除监听事件的函数引用 - * @example - * ```javascript - * //changeCallback为方法体 - * editor.removeListener("selectionchange",changeCallback); - * ``` - */ - removeListener: function(types, listener) { - types = utils.trim(types).split(/\s+/); - for (var i = 0, ti; (ti = types[i++]); ) { - utils.removeItem(getListener(this, ti) || [], listener); - } - }, - - /** - * 触发事件 - * @method fireEvent - * @param { String } types 触发的事件名称,同时触发多个事件使用空格分隔 - * @remind 该方法会触发addListener - * @return { * } 返回触发事件的队列中,最后执行的回调函数的返回值 - * @example - * ```javascript - * editor.fireEvent("selectionchange"); - * ``` - */ - - /** - * 触发事件 - * @method fireEvent - * @param { String } types 触发的事件名称,同时触发多个事件使用空格分隔 - * @param { *... } options 可选参数,可以传入一个或多个参数,会传给事件触发的回调函数 - * @return { * } 返回触发事件的队列中,最后执行的回调函数的返回值 - * @example - * ```javascript - * - * editor.addListener( "selectionchange", function ( type, arg1, arg2 ) { - * - * console.log( arg1 + " " + arg2 ); - * - * } ); - * - * //触发selectionchange事件, 会执行上面的事件监听器 - * //output: Hello World - * editor.fireEvent("selectionchange", "Hello", "World"); - * ``` - */ - fireEvent: function() { - var types = arguments[0]; - types = utils.trim(types).split(" "); - for (var i = 0, ti; (ti = types[i++]); ) { - var listeners = getListener(this, ti), - r, - t, - k; - if (listeners) { - k = listeners.length; - while (k--) { - if (!listeners[k]) continue; - t = listeners[k].apply(this, arguments); - if (t === true) { - return t; - } - if (t !== undefined) { - r = t; - } - } - } - if ((t = this["on" + ti.toLowerCase()])) { - r = t.apply(this, arguments); - } - } - return r; - } - }; - /** - * 获得对象所拥有监听类型的所有监听器 - * @unfile - * @module UE - * @since 1.2.6.1 - * @method getListener - * @public - * @param { Object } obj 查询监听器的对象 - * @param { String } type 事件类型 - * @param { Boolean } force 为true且当前所有type类型的侦听器不存在时,创建一个空监听器数组 - * @return { Array } 监听器数组 - */ - function getListener(obj, type, force) { - var allListeners; - type = type.toLowerCase(); - return ( - (allListeners = - obj.__allListeners || (force && (obj.__allListeners = {}))) && - (allListeners[type] || (force && (allListeners[type] = []))) - ); - } - - - // core/dtd.js - ///import editor.js - ///import core/dom/dom.js - ///import core/utils.js - /** - * dtd html语义化的体现类 - * @constructor - * @namespace dtd - */ - var dtd = (dom.dtd = (function() { - function _(s) { - for (var k in s) { - s[k.toUpperCase()] = s[k]; - } - return s; - } - var X = utils.extend2; - var A = _({ isindex: 1, fieldset: 1 }), - B = _({ input: 1, button: 1, select: 1, textarea: 1, label: 1 }), - C = X(_({ a: 1 }), B), - D = X({ iframe: 1 }, C), - E = _({ - hr: 1, - ul: 1, - menu: 1, - div: 1, - blockquote: 1, - noscript: 1, - table: 1, - center: 1, - address: 1, - dir: 1, - pre: 1, - h5: 1, - dl: 1, - h4: 1, - noframes: 1, - h6: 1, - ol: 1, - h1: 1, - h3: 1, - h2: 1 - }), - F = _({ ins: 1, del: 1, script: 1, style: 1 }), - G = X( - _({ - mark: 1, - b: 1, - acronym: 1, - bdo: 1, - var: 1, - "#": 1, - abbr: 1, - code: 1, - br: 1, - i: 1, - cite: 1, - kbd: 1, - u: 1, - strike: 1, - s: 1, - tt: 1, - strong: 1, - q: 1, - samp: 1, - em: 1, - dfn: 1, - span: 1 - }), - F - ), - H = X( - _({ - sub: 1, - img: 1, - embed: 1, - object: 1, - sup: 1, - basefont: 1, - map: 1, - applet: 1, - font: 1, - big: 1, - small: 1 - }), - G - ), - I = X(_({ p: 1 }), H), - J = X(_({ iframe: 1 }), H, B), - K = _({ - img: 1, - embed: 1, - noscript: 1, - br: 1, - kbd: 1, - center: 1, - button: 1, - basefont: 1, - h5: 1, - h4: 1, - samp: 1, - h6: 1, - ol: 1, - h1: 1, - h3: 1, - h2: 1, - form: 1, - font: 1, - "#": 1, - select: 1, - menu: 1, - ins: 1, - abbr: 1, - label: 1, - code: 1, - table: 1, - script: 1, - cite: 1, - input: 1, - iframe: 1, - strong: 1, - textarea: 1, - noframes: 1, - big: 1, - small: 1, - span: 1, - hr: 1, - sub: 1, - bdo: 1, - var: 1, - div: 1, - object: 1, - sup: 1, - strike: 1, - dir: 1, - map: 1, - dl: 1, - applet: 1, - del: 1, - isindex: 1, - fieldset: 1, - ul: 1, - b: 1, - acronym: 1, - a: 1, - blockquote: 1, - i: 1, - u: 1, - s: 1, - tt: 1, - address: 1, - q: 1, - pre: 1, - p: 1, - em: 1, - dfn: 1 - }), - L = X(_({ a: 0 }), J), //a不能被切开,所以把他 - M = _({ tr: 1 }), - N = _({ "#": 1 }), - O = X(_({ param: 1 }), K), - P = X(_({ form: 1 }), A, D, E, I), - Q = _({ li: 1, ol: 1, ul: 1 }), - R = _({ style: 1, script: 1 }), - S = _({ base: 1, link: 1, meta: 1, title: 1 }), - T = X(S, R), - U = _({ head: 1, body: 1 }), - V = _({ html: 1 }); - - var block = _({ - address: 1, - blockquote: 1, - center: 1, - dir: 1, - div: 1, - dl: 1, - fieldset: 1, - form: 1, - h1: 1, - h2: 1, - h3: 1, - h4: 1, - h5: 1, - h6: 1, - hr: 1, - isindex: 1, - menu: 1, - noframes: 1, - ol: 1, - p: 1, - pre: 1, - table: 1, - ul: 1 - }), - empty = _({ - area: 1, - base: 1, - basefont: 1, - br: 1, - col: 1, - command: 1, - dialog: 1, - embed: 1, - hr: 1, - img: 1, - input: 1, - isindex: 1, - keygen: 1, - link: 1, - meta: 1, - param: 1, - source: 1, - track: 1, - wbr: 1 - }); - - return _({ - // $ 表示自定的属性 - - // body外的元素列表. - $nonBodyContent: X(V, U, S), - - //块结构元素列表 - $block: block, - - //内联元素列表 - $inline: L, - - $inlineWithA: X(_({ a: 1 }), L), - - $body: X(_({ script: 1, style: 1 }), block), - - $cdata: _({ script: 1, style: 1 }), - - //自闭和元素 - $empty: empty, - - //不是自闭合,但不能让range选中里边 - $nonChild: _({ iframe: 1, textarea: 1 }), - //列表元素列表 - $listItem: _({ dd: 1, dt: 1, li: 1 }), - - //列表根元素列表 - $list: _({ ul: 1, ol: 1, dl: 1 }), - - //不能认为是空的元素 - $isNotEmpty: _({ - table: 1, - ul: 1, - ol: 1, - dl: 1, - iframe: 1, - area: 1, - base: 1, - col: 1, - hr: 1, - img: 1, - embed: 1, - input: 1, - textarea: 1, - link: 1, - meta: 1, - param: 1, - h1: 1, - h2: 1, - h3: 1, - h4: 1, - h5: 1, - h6: 1 - }), - - //如果没有子节点就可以删除的元素列表,像span,a - $removeEmpty: _({ - a: 1, - abbr: 1, - acronym: 1, - address: 1, - b: 1, - bdo: 1, - big: 1, - cite: 1, - code: 1, - del: 1, - dfn: 1, - em: 1, - font: 1, - i: 1, - ins: 1, - label: 1, - kbd: 1, - q: 1, - s: 1, - samp: 1, - small: 1, - span: 1, - strike: 1, - strong: 1, - sub: 1, - sup: 1, - tt: 1, - u: 1, - var: 1 - }), - - $removeEmptyBlock: _({ p: 1, div: 1 }), - - //在table元素里的元素列表 - $tableContent: _({ - caption: 1, - col: 1, - colgroup: 1, - tbody: 1, - td: 1, - tfoot: 1, - th: 1, - thead: 1, - tr: 1, - table: 1 - }), - //不转换的标签 - $notTransContent: _({ pre: 1, script: 1, style: 1, textarea: 1 }), - html: U, - head: T, - style: N, - script: N, - body: P, - base: {}, - link: {}, - meta: {}, - title: N, - col: {}, - tr: _({ td: 1, th: 1 }), - img: {}, - embed: {}, - colgroup: _({ thead: 1, col: 1, tbody: 1, tr: 1, tfoot: 1 }), - noscript: P, - td: P, - br: {}, - th: P, - center: P, - kbd: L, - button: X(I, E), - basefont: {}, - h5: L, - h4: L, - samp: L, - h6: L, - ol: Q, - h1: L, - h3: L, - option: N, - h2: L, - form: X(A, D, E, I), - select: _({ optgroup: 1, option: 1 }), - font: L, - ins: L, - menu: Q, - abbr: L, - label: L, - table: _({ - thead: 1, - col: 1, - tbody: 1, - tr: 1, - colgroup: 1, - caption: 1, - tfoot: 1 - }), - code: L, - tfoot: M, - cite: L, - li: P, - input: {}, - iframe: P, - strong: L, - textarea: N, - noframes: P, - big: L, - small: L, - //trace: - span: _({ - "#": 1, - br: 1, - b: 1, - strong: 1, - u: 1, - i: 1, - em: 1, - sub: 1, - sup: 1, - strike: 1, - span: 1 - }), - hr: L, - dt: L, - sub: L, - optgroup: _({ option: 1 }), - param: {}, - bdo: L, - var: L, - div: P, - object: O, - sup: L, - dd: P, - strike: L, - area: {}, - dir: Q, - map: X(_({ area: 1, form: 1, p: 1 }), A, F, E), - applet: O, - dl: _({ dt: 1, dd: 1 }), - del: L, - isindex: {}, - fieldset: X(_({ legend: 1 }), K), - thead: M, - ul: Q, - acronym: L, - b: L, - a: X(_({ a: 1 }), J), - blockquote: X(_({ td: 1, tr: 1, tbody: 1, li: 1 }), P), - caption: L, - i: L, - u: L, - tbody: M, - s: L, - address: X(D, I), - tt: L, - legend: L, - q: L, - pre: X(G, C), - p: X(_({ a: 1 }), L), - em: L, - dfn: L, - mark: L - }); - })()); - - - // core/domUtils.js - /** - * Dom操作工具包 - * @file - * @module UE.dom.domUtils - * @since 1.2.6.1 - */ - - /** - * Dom操作工具包 - * @unfile - * @module UE.dom.domUtils - */ - function getDomNode(node, start, ltr, startFromChild, fn, guard) { - var tmpNode = startFromChild && node[start], - parent; - !tmpNode && (tmpNode = node[ltr]); - while (!tmpNode && (parent = (parent || node).parentNode)) { - if (parent.tagName == "BODY" || (guard && !guard(parent))) { - return null; - } - tmpNode = parent[ltr]; - } - if (tmpNode && fn && !fn(tmpNode)) { - return getDomNode(tmpNode, start, ltr, false, fn); - } - return tmpNode; - } - var attrFix = ie && browser.version < 9 - ? { - tabindex: "tabIndex", - readonly: "readOnly", - for: "htmlFor", - class: "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder" - } - : { - tabindex: "tabIndex", - readonly: "readOnly" - }, - styleBlock = utils.listToMap([ - "-webkit-box", - "-moz-box", - "block", - "list-item", - "table", - "table-row-group", - "table-header-group", - "table-footer-group", - "table-row", - "table-column-group", - "table-column", - "table-cell", - "table-caption" - ]); - var domUtils = (dom.domUtils = { - //节点常量 - NODE_ELEMENT: 1, - NODE_DOCUMENT: 9, - NODE_TEXT: 3, - NODE_COMMENT: 8, - NODE_DOCUMENT_FRAGMENT: 11, - - //位置关系 - POSITION_IDENTICAL: 0, - POSITION_DISCONNECTED: 1, - POSITION_FOLLOWING: 2, - POSITION_PRECEDING: 4, - POSITION_IS_CONTAINED: 8, - POSITION_CONTAINS: 16, - //ie6使用其他的会有一段空白出现 - fillChar: ie && browser.version == "6" ? "\ufeff" : "\u200B", - //-------------------------Node部分-------------------------------- - keys: { - /*Backspace*/ 8: 1, - /*Delete*/ 46: 1, - /*Shift*/ 16: 1, - /*Ctrl*/ 17: 1, - /*Alt*/ 18: 1, - 37: 1, - 38: 1, - 39: 1, - 40: 1, - 13: 1 /*enter*/ - }, - /** - * 获取节点A相对于节点B的位置关系 - * @method getPosition - * @param { Node } nodeA 需要查询位置关系的节点A - * @param { Node } nodeB 需要查询位置关系的节点B - * @return { Number } 节点A与节点B的关系 - * @example - * ```javascript - * //output: 20 - * var position = UE.dom.domUtils.getPosition( document.documentElement, document.body ); - * - * switch ( position ) { - * - * //0 - * case UE.dom.domUtils.POSITION_IDENTICAL: - * console.log('元素相同'); - * break; - * //1 - * case UE.dom.domUtils.POSITION_DISCONNECTED: - * console.log('两个节点在不同的文档中'); - * break; - * //2 - * case UE.dom.domUtils.POSITION_FOLLOWING: - * console.log('节点A在节点B之后'); - * break; - * //4 - * case UE.dom.domUtils.POSITION_PRECEDING; - * console.log('节点A在节点B之前'); - * break; - * //8 - * case UE.dom.domUtils.POSITION_IS_CONTAINED: - * console.log('节点A被节点B包含'); - * break; - * case 10: - * console.log('节点A被节点B包含且节点A在节点B之后'); - * break; - * //16 - * case UE.dom.domUtils.POSITION_CONTAINS: - * console.log('节点A包含节点B'); - * break; - * case 20: - * console.log('节点A包含节点B且节点A在节点B之前'); - * break; - * - * } - * ``` - */ - getPosition: function(nodeA, nodeB) { - // 如果两个节点是同一个节点 - if (nodeA === nodeB) { - // domUtils.POSITION_IDENTICAL - return 0; - } - var node, - parentsA = [nodeA], - parentsB = [nodeB]; - node = nodeA; - while ((node = node.parentNode)) { - // 如果nodeB是nodeA的祖先节点 - if (node === nodeB) { - // domUtils.POSITION_IS_CONTAINED + domUtils.POSITION_FOLLOWING - return 10; - } - parentsA.push(node); - } - node = nodeB; - while ((node = node.parentNode)) { - // 如果nodeA是nodeB的祖先节点 - if (node === nodeA) { - // domUtils.POSITION_CONTAINS + domUtils.POSITION_PRECEDING - return 20; - } - parentsB.push(node); - } - parentsA.reverse(); - parentsB.reverse(); - if (parentsA[0] !== parentsB[0]) { - // domUtils.POSITION_DISCONNECTED - return 1; - } - var i = -1; - while ((i++, parentsA[i] === parentsB[i])) {} - nodeA = parentsA[i]; - nodeB = parentsB[i]; - while ((nodeA = nodeA.nextSibling)) { - if (nodeA === nodeB) { - // domUtils.POSITION_PRECEDING - return 4; - } - } - // domUtils.POSITION_FOLLOWING - return 2; - }, - - /** - * 检测节点node在父节点中的索引位置 - * @method getNodeIndex - * @param { Node } node 需要检测的节点对象 - * @return { Number } 该节点在父节点中的位置 - * @see UE.dom.domUtils.getNodeIndex(Node,Boolean) - */ - - /** - * 检测节点node在父节点中的索引位置, 根据给定的mergeTextNode参数决定是否要合并多个连续的文本节点为一个节点 - * @method getNodeIndex - * @param { Node } node 需要检测的节点对象 - * @param { Boolean } mergeTextNode 是否合并多个连续的文本节点为一个节点 - * @return { Number } 该节点在父节点中的位置 - * @example - * ```javascript - * - * var node = document.createElement("div"); - * - * node.appendChild( document.createTextNode( "hello" ) ); - * node.appendChild( document.createTextNode( "world" ) ); - * node.appendChild( node = document.createElement( "div" ) ); - * - * //output: 2 - * console.log( UE.dom.domUtils.getNodeIndex( node ) ); - * - * //output: 1 - * console.log( UE.dom.domUtils.getNodeIndex( node, true ) ); - * - * ``` - */ - getNodeIndex: function(node, ignoreTextNode) { - var preNode = node, - i = 0; - while ((preNode = preNode.previousSibling)) { - if (ignoreTextNode && preNode.nodeType == 3) { - if (preNode.nodeType != preNode.nextSibling.nodeType) { - i++; - } - continue; - } - i++; - } - return i; - }, - - /** - * 检测节点node是否在给定的document对象上 - * @method inDoc - * @param { Node } node 需要检测的节点对象 - * @param { DomDocument } doc 需要检测的document对象 - * @return { Boolean } 该节点node是否在给定的document的dom树上 - * @example - * ```javascript - * - * var node = document.createElement("div"); - * - * //output: false - * console.log( UE.do.domUtils.inDoc( node, document ) ); - * - * document.body.appendChild( node ); - * - * //output: true - * console.log( UE.do.domUtils.inDoc( node, document ) ); - * - * ``` - */ - inDoc: function(node, doc) { - return domUtils.getPosition(node, doc) == 10; - }, - /** - * 根据给定的过滤规则filterFn, 查找符合该过滤规则的node节点的第一个祖先节点, - * 查找的起点是给定node节点的父节点。 - * @method findParent - * @param { Node } node 需要查找的节点 - * @param { Function } filterFn 自定义的过滤方法。 - * @warning 查找的终点是到body节点为止 - * @remind 自定义的过滤方法filterFn接受一个Node对象作为参数, 该对象代表当前执行检测的祖先节点。 如果该 - * 节点满足过滤条件, 则要求返回true, 这时将直接返回该节点作为findParent()的结果, 否则, 请返回false。 - * @return { Node | Null } 如果找到符合过滤条件的节点, 就返回该节点, 否则返回NULL - * @example - * ```javascript - * var filterNode = UE.dom.domUtils.findParent( document.body.firstChild, function ( node ) { - * - * //由于查找的终点是body节点, 所以永远也不会匹配当前过滤器的条件, 即这里永远会返回false - * return node.tagName === "HTML"; - * - * } ); - * - * //output: true - * console.log( filterNode === null ); - * ``` - */ - - /** - * 根据给定的过滤规则filterFn, 查找符合该过滤规则的node节点的第一个祖先节点, - * 如果includeSelf的值为true,则查找的起点是给定的节点node, 否则, 起点是node的父节点 - * @method findParent - * @param { Node } node 需要查找的节点 - * @param { Function } filterFn 自定义的过滤方法。 - * @param { Boolean } includeSelf 查找过程是否包含自身 - * @warning 查找的终点是到body节点为止 - * @remind 自定义的过滤方法filterFn接受一个Node对象作为参数, 该对象代表当前执行检测的祖先节点。 如果该 - * 节点满足过滤条件, 则要求返回true, 这时将直接返回该节点作为findParent()的结果, 否则, 请返回false。 - * @remind 如果includeSelf为true, 则过滤器第一次执行时的参数会是节点本身。 - * 反之, 过滤器第一次执行时的参数将是该节点的父节点。 - * @return { Node | Null } 如果找到符合过滤条件的节点, 就返回该节点, 否则返回NULL - * @example - * ```html - * - * - *
    - *
    - * - * - * - * ``` - */ - findParent: function(node, filterFn, includeSelf) { - if (node && !domUtils.isBody(node)) { - node = includeSelf ? node : node.parentNode; - while (node) { - if (!filterFn || filterFn(node) || domUtils.isBody(node)) { - return filterFn && !filterFn(node) && domUtils.isBody(node) - ? null - : node; - } - node = node.parentNode; - } - } - return null; - }, - /** - * 查找node的节点名为tagName的第一个祖先节点, 查找的起点是node节点的父节点。 - * @method findParentByTagName - * @param { Node } node 需要查找的节点对象 - * @param { Array } tagNames 需要查找的父节点的名称数组 - * @warning 查找的终点是到body节点为止 - * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL - * @example - * ```javascript - * var node = UE.dom.domUtils.findParentByTagName( document.getElementsByTagName("div")[0], [ "BODY" ] ); - * //output: BODY - * console.log( node.tagName ); - * ``` - */ - - /** - * 查找node的节点名为tagName的祖先节点, 如果includeSelf的值为true,则查找的起点是给定的节点node, - * 否则, 起点是node的父节点。 - * @method findParentByTagName - * @param { Node } node 需要查找的节点对象 - * @param { Array } tagNames 需要查找的父节点的名称数组 - * @param { Boolean } includeSelf 查找过程是否包含node节点自身 - * @warning 查找的终点是到body节点为止 - * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL - * @example - * ```javascript - * var queryTarget = document.getElementsByTagName("div")[0]; - * var node = UE.dom.domUtils.findParentByTagName( queryTarget, [ "DIV" ], true ); - * //output: true - * console.log( queryTarget === node ); - * ``` - */ - findParentByTagName: function(node, tagNames, includeSelf, excludeFn) { - tagNames = utils.listToMap(utils.isArray(tagNames) ? tagNames : [tagNames]); - return domUtils.findParent( - node, - function(node) { - return tagNames[node.tagName] && !(excludeFn && excludeFn(node)); - }, - includeSelf - ); - }, - /** - * 查找节点node的祖先节点集合, 查找的起点是给定节点的父节点,结果集中不包含给定的节点。 - * @method findParents - * @param { Node } node 需要查找的节点对象 - * @return { Array } 给定节点的祖先节点数组 - * @grammar UE.dom.domUtils.findParents(node) => Array //返回一个祖先节点数组集合,不包含自身 - * @grammar UE.dom.domUtils.findParents(node,includeSelf) => Array //返回一个祖先节点数组集合,includeSelf指定是否包含自身 - * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn) => Array //返回一个祖先节点数组集合,filterFn指定过滤条件,返回true的node将被选取 - * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn,closerFirst) => Array //返回一个祖先节点数组集合,closerFirst为true的话,node的直接父亲节点是数组的第0个 - */ - - /** - * 查找节点node的祖先节点集合, 如果includeSelf的值为true, - * 则返回的结果集中允许出现当前给定的节点, 否则, 该节点不会出现在其结果集中。 - * @method findParents - * @param { Node } node 需要查找的节点对象 - * @param { Boolean } includeSelf 查找的结果中是否允许包含当前查找的节点对象 - * @return { Array } 给定节点的祖先节点数组 - */ - findParents: function(node, includeSelf, filterFn, closerFirst) { - var parents = includeSelf && ((filterFn && filterFn(node)) || !filterFn) - ? [node] - : []; - while ((node = domUtils.findParent(node, filterFn))) { - parents.push(node); - } - return closerFirst ? parents : parents.reverse(); - }, - - /** - * 在节点node后面插入新节点newNode - * @method insertAfter - * @param { Node } node 目标节点 - * @param { Node } newNode 新插入的节点, 该节点将置于目标节点之后 - * @return { Node } 新插入的节点 - */ - insertAfter: function(node, newNode) { - return node.nextSibling - ? node.parentNode.insertBefore(newNode, node.nextSibling) - : node.parentNode.appendChild(newNode); - }, - - /** - * 删除节点node及其下属的所有节点 - * @method remove - * @param { Node } node 需要删除的节点对象 - * @return { Node } 返回刚删除的节点对象 - * @example - * ```html - *
    - *
    你好
    - *
    - * - * ``` - */ - - /** - * 删除节点node,并根据keepChildren的值决定是否保留子节点 - * @method remove - * @param { Node } node 需要删除的节点对象 - * @param { Boolean } keepChildren 是否需要保留子节点 - * @return { Node } 返回刚删除的节点对象 - * @example - * ```html - *
    - *
    你好
    - *
    - * - * ``` - */ - remove: function(node, keepChildren) { - var parent = node.parentNode, - child; - if (parent) { - if (keepChildren && node.hasChildNodes()) { - while ((child = node.firstChild)) { - parent.insertBefore(child, node); - } - } - parent.removeChild(node); - } - return node; - }, - - /** - * 取得node节点的下一个兄弟节点, 如果该节点其后没有兄弟节点, 则递归查找其父节点之后的第一个兄弟节点, - * 直到找到满足条件的节点或者递归到BODY节点之后才会结束。 - * @method getNextDomNode - * @param { Node } node 需要获取其后的兄弟节点的节点对象 - * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL - * @example - * ```html - * - *
    - * - *
    - * xxx - * - * - * ``` - * @example - * ```html - * - *
    - * - * xxx - *
    - * xxx - * - * - * ``` - */ - - /** - * 取得node节点的下一个兄弟节点, 如果startFromChild的值为ture,则先获取其子节点, - * 如果有子节点则直接返回第一个子节点;如果没有子节点或者startFromChild的值为false, - * 则执行getNextDomNode(Node node)的查找过程。 - * @method getNextDomNode - * @param { Node } node 需要获取其后的兄弟节点的节点对象 - * @param { Boolean } startFromChild 查找过程是否从其子节点开始 - * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL - * @see UE.dom.domUtils.getNextDomNode(Node) - */ - getNextDomNode: function(node, startFromChild, filterFn, guard) { - return getDomNode( - node, - "firstChild", - "nextSibling", - startFromChild, - filterFn, - guard - ); - }, - getPreDomNode: function(node, startFromChild, filterFn, guard) { - return getDomNode( - node, - "lastChild", - "previousSibling", - startFromChild, - filterFn, - guard - ); - }, - /** - * 检测节点node是否属是UEditor定义的bookmark节点 - * @method isBookmarkNode - * @private - * @param { Node } node 需要检测的节点对象 - * @return { Boolean } 是否是bookmark节点 - * @example - * ```html - * - * - * ``` - */ - isBookmarkNode: function(node) { - return node.nodeType == 1 && node.id && /^_baidu_bookmark_/i.test(node.id); - }, - /** - * 获取节点node所属的window对象 - * @method getWindow - * @param { Node } node 节点对象 - * @return { Window } 当前节点所属的window对象 - * @example - * ```javascript - * //output: true - * console.log( UE.dom.domUtils.getWindow( document.body ) === window ); - * ``` - */ - getWindow: function(node) { - var doc = node.ownerDocument || node; - return doc.defaultView || doc.parentWindow; - }, - /** - * 获取离nodeA与nodeB最近的公共的祖先节点 - * @method getCommonAncestor - * @param { Node } nodeA 第一个节点 - * @param { Node } nodeB 第二个节点 - * @remind 如果给定的两个节点是同一个节点, 将直接返回该节点。 - * @return { Node | NULL } 如果未找到公共节点, 返回NULL, 否则返回最近的公共祖先节点。 - * @example - * ```javascript - * var commonAncestor = UE.dom.domUtils.getCommonAncestor( document.body, document.body.firstChild ); - * //output: true - * console.log( commonAncestor.tagName.toLowerCase() === 'body' ); - * ``` - */ - getCommonAncestor: function(nodeA, nodeB) { - if (nodeA === nodeB) return nodeA; - var parentsA = [nodeA], - parentsB = [nodeB], - parent = nodeA, - i = -1; - while ((parent = parent.parentNode)) { - if (parent === nodeB) { - return parent; - } - parentsA.push(parent); - } - parent = nodeB; - while ((parent = parent.parentNode)) { - if (parent === nodeA) return parent; - parentsB.push(parent); - } - parentsA.reverse(); - parentsB.reverse(); - while ((i++, parentsA[i] === parentsB[i])) {} - return i == 0 ? null : parentsA[i - 1]; - }, - /** - * 清除node节点左右连续为空的兄弟inline节点 - * @method clearEmptySibling - * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, - * 则这些兄弟节点将被删除 - * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext) //ignoreNext指定是否忽略右边空节点 - * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext,ignorePre) //ignorePre指定是否忽略左边空节点 - * @example - * ```html - * - *
    - * - * - * - * xxx - * - * - * - * ``` - */ - - /** - * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true, - * 则忽略对右边兄弟节点的操作。 - * @method clearEmptySibling - * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, - * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作 - * 则这些兄弟节点将被删除 - * @see UE.dom.domUtils.clearEmptySibling(Node) - */ - - /** - * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true, - * 则忽略对右边兄弟节点的操作, 如果ignorePre的值为true,则忽略对左边兄弟节点的操作。 - * @method clearEmptySibling - * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, - * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作 - * @param { Boolean } ignorePre 是否忽略忽略对左边的兄弟节点的操作 - * 则这些兄弟节点将被删除 - * @see UE.dom.domUtils.clearEmptySibling(Node) - */ - clearEmptySibling: function(node, ignoreNext, ignorePre) { - function clear(next, dir) { - var tmpNode; - while ( - next && - !domUtils.isBookmarkNode(next) && - (domUtils.isEmptyInlineElement(next) || - //这里不能把空格算进来会吧空格干掉,出现文字间的空格丢掉了 - !new RegExp("[^\t\n\r" + domUtils.fillChar + "]").test( - next.nodeValue - )) - ) { - tmpNode = next[dir]; - domUtils.remove(next); - next = tmpNode; - } - } - !ignoreNext && clear(node.nextSibling, "nextSibling"); - !ignorePre && clear(node.previousSibling, "previousSibling"); - }, - /** - * 将一个文本节点textNode拆分成两个文本节点,offset指定拆分位置 - * @method split - * @param { Node } textNode 需要拆分的文本节点对象 - * @param { int } offset 需要拆分的位置, 位置计算从0开始 - * @return { Node } 拆分后形成的新节点 - * @example - * ```html - *
    abcdef
    - * - * ``` - */ - split: function(node, offset) { - var doc = node.ownerDocument; - if (browser.ie && offset == node.nodeValue.length) { - var next = doc.createTextNode(""); - return domUtils.insertAfter(node, next); - } - var retval = node.splitText(offset); - //ie8下splitText不会跟新childNodes,我们手动触发他的更新 - if (browser.ie8) { - var tmpNode = doc.createTextNode(""); - domUtils.insertAfter(retval, tmpNode); - domUtils.remove(tmpNode); - } - return retval; - }, - - /** - * 检测文本节点textNode是否为空节点(包括空格、换行、占位符等字符) - * @method isWhitespace - * @param { Node } node 需要检测的节点对象 - * @return { Boolean } 检测的节点是否为空 - * @example - * ```html - *
    - * - *
    - * - * ``` - */ - isWhitespace: function(node) { - return !new RegExp("[^ \t\n\r" + domUtils.fillChar + "]").test( - node.nodeValue - ); - }, - /** - * 获取元素element相对于viewport的位置坐标 - * @method getXY - * @param { Node } element 需要计算位置的节点对象 - * @return { Object } 返回形如{x:left,y:top}的一个key-value映射对象, 其中键x代表水平偏移距离, - * y代表垂直偏移距离。 - * - * @example - * ```javascript - * var location = UE.dom.domUtils.getXY( document.getElementById("test") ); - * //output: test的坐标为: 12, 24 - * console.log( 'test的坐标为: ', location.x, ',', location.y ); - * ``` - */ - getXY: function(element) { - var x = 0, - y = 0; - while (element.offsetParent) { - y += element.offsetTop; - x += element.offsetLeft; - element = element.offsetParent; - } - return { x: x, y: y }; - }, - /** - * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数 - * @method on - * @param { Node } element 需要绑定事件的节点对象 - * @param { String } type 绑定的事件类型 - * @param { Function } handler 事件处理器 - * @example - * ```javascript - * UE.dom.domUtils.on(document.body,"click",function(e){ - * //e为事件对象,this为被点击元素对戏那个 - * }); - * ``` - */ - - /** - * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数 - * @method on - * @param { Node } element 需要绑定事件的节点对象 - * @param { Array } type 绑定的事件类型数组 - * @param { Function } handler 事件处理器 - * @example - * ```javascript - * UE.dom.domUtils.on(document.body,["click","mousedown"],function(evt){ - * //evt为事件对象,this为被点击元素对象 - * }); - * ``` - */ - on: function(element, type, handler) { - var types = utils.isArray(type) ? type : utils.trim(type).split(/\s+/), - k = types.length; - if (k) - while (k--) { - type = types[k]; - if (element.addEventListener) { - element.addEventListener(type, handler, false); - } else { - if (!handler._d) { - handler._d = { - els: [] - }; - } - var key = type + handler.toString(), - index = utils.indexOf(handler._d.els, element); - if (!handler._d[key] || index == -1) { - if (index == -1) { - handler._d.els.push(element); - } - if (!handler._d[key]) { - handler._d[key] = function(evt) { - return handler.call(evt.srcElement, evt || window.event); - }; - } - - element.attachEvent("on" + type, handler._d[key]); - } - } - } - element = null; - }, - /** - * 解除DOM事件绑定 - * @method un - * @param { Node } element 需要解除事件绑定的节点对象 - * @param { String } type 需要接触绑定的事件类型 - * @param { Function } handler 对应的事件处理器 - * @example - * ```javascript - * UE.dom.domUtils.un(document.body,"click",function(evt){ - * //evt为事件对象,this为被点击元素对象 - * }); - * ``` - */ - - /** - * 解除DOM事件绑定 - * @method un - * @param { Node } element 需要解除事件绑定的节点对象 - * @param { Array } type 需要接触绑定的事件类型数组 - * @param { Function } handler 对应的事件处理器 - * @example - * ```javascript - * UE.dom.domUtils.un(document.body, ["click","mousedown"],function(evt){ - * //evt为事件对象,this为被点击元素对象 - * }); - * ``` - */ - un: function(element, type, handler) { - var types = utils.isArray(type) ? type : utils.trim(type).split(/\s+/), - k = types.length; - if (k) - while (k--) { - type = types[k]; - if (element.removeEventListener) { - element.removeEventListener(type, handler, false); - } else { - var key = type + handler.toString(); - try { - element.detachEvent( - "on" + type, - handler._d ? handler._d[key] : handler - ); - } catch (e) {} - if (handler._d && handler._d[key]) { - var index = utils.indexOf(handler._d.els, element); - if (index != -1) { - handler._d.els.splice(index, 1); - } - handler._d.els.length == 0 && delete handler._d[key]; - } - } - } - }, - - /** - * 比较节点nodeA与节点nodeB是否具有相同的标签名、属性名以及属性值 - * @method isSameElement - * @param { Node } nodeA 需要比较的节点 - * @param { Node } nodeB 需要比较的节点 - * @return { Boolean } 两个节点是否具有相同的标签名、属性名以及属性值 - * @example - * ```html - * ssss - * bbbbb - * ssss - * bbbbb - * - * - * ``` - */ - isSameElement: function(nodeA, nodeB) { - if (nodeA.tagName != nodeB.tagName) { - return false; - } - var thisAttrs = nodeA.attributes, - otherAttrs = nodeB.attributes; - if (!ie && thisAttrs.length != otherAttrs.length) { - return false; - } - var attrA, - attrB, - al = 0, - bl = 0; - for (var i = 0; (attrA = thisAttrs[i++]); ) { - if (attrA.nodeName == "style") { - if (attrA.specified) { - al++; - } - if (domUtils.isSameStyle(nodeA, nodeB)) { - continue; - } else { - return false; - } - } - if (ie) { - if (attrA.specified) { - al++; - attrB = otherAttrs.getNamedItem(attrA.nodeName); - } else { - continue; - } - } else { - attrB = nodeB.attributes[attrA.nodeName]; - } - if (!attrB.specified || attrA.nodeValue != attrB.nodeValue) { - return false; - } - } - // 有可能attrB的属性包含了attrA的属性之外还有自己的属性 - if (ie) { - for (i = 0; (attrB = otherAttrs[i++]); ) { - if (attrB.specified) { - bl++; - } - } - if (al != bl) { - return false; - } - } - return true; - }, - - /** - * 判断节点nodeA与节点nodeB的元素的style属性是否一致 - * @method isSameStyle - * @param { Node } nodeA 需要比较的节点 - * @param { Node } nodeB 需要比较的节点 - * @return { Boolean } 两个节点是否具有相同的style属性值 - * @example - * ```html - * ssss - * bbbbb - * ssss - * bbbbb - * - * - * ``` - */ - isSameStyle: function(nodeA, nodeB) { - var styleA = nodeA.style.cssText - .replace(/( ?; ?)/g, ";") - .replace(/( ?: ?)/g, ":"), - styleB = nodeB.style.cssText - .replace(/( ?; ?)/g, ";") - .replace(/( ?: ?)/g, ":"); - if (browser.opera) { - styleA = nodeA.style; - styleB = nodeB.style; - if (styleA.length != styleB.length) return false; - for (var p in styleA) { - if (/^(\d+|csstext)$/i.test(p)) { - continue; - } - if (styleA[p] != styleB[p]) { - return false; - } - } - return true; - } - if (!styleA || !styleB) { - return styleA == styleB; - } - styleA = styleA.split(";"); - styleB = styleB.split(";"); - if (styleA.length != styleB.length) { - return false; - } - for (var i = 0, ci; (ci = styleA[i++]); ) { - if (utils.indexOf(styleB, ci) == -1) { - return false; - } - } - return true; - }, - /** - * 检查节点node是否为block元素 - * @method isBlockElm - * @param { Node } node 需要检测的节点对象 - * @return { Boolean } 是否是block元素节点 - * @warning 该方法的判断规则如下: 如果该元素原本是block元素, 则不论该元素当前的css样式是什么都会返回true; - * 否则,检测该元素的css样式, 如果该元素当前是block元素, 则返回true。 其余情况下都返回false。 - * @example - * ```html - * - * - *
    - * - * - * ``` - */ - isBlockElm: function(node) { - return ( - node.nodeType == 1 && - (dtd.$block[node.tagName] || - styleBlock[domUtils.getComputedStyle(node, "display")]) && - !dtd.$nonChild[node.tagName] - ); - }, - /** - * 检测node节点是否为body节点 - * @method isBody - * @param { Element } node 需要检测的dom元素 - * @return { Boolean } 给定的元素是否是body元素 - * @example - * ```javascript - * //output: true - * console.log( UE.dom.domUtils.isBody( document.body ) ); - * ``` - */ - isBody: function(node) { - return node && node.nodeType == 1 && node.tagName.toLowerCase() == "body"; - }, - /** - * 以node节点为分界,将该节点的指定祖先节点parent拆分成两个独立的节点, - * 拆分形成的两个节点之间是node节点 - * @method breakParent - * @param { Node } node 作为分界的节点对象 - * @param { Node } parent 该节点必须是node节点的祖先节点, 且是block节点。 - * @return { Node } 给定的node分界节点 - * @example - * ```javascript - * - * var node = document.createElement("span"), - * wrapNode = document.createElement( "div" ), - * parent = document.createElement("p"); - * - * parent.appendChild( node ); - * wrapNode.appendChild( parent ); - * - * //拆分前 - * //output:

    - * console.log( wrapNode.innerHTML ); - * - * - * UE.dom.domUtils.breakParent( node, parent ); - * //拆分后 - * //output:

    - * console.log( wrapNode.innerHTML ); - * - * ``` - */ - breakParent: function(node, parent) { - var tmpNode, - parentClone = node, - clone = node, - leftNodes, - rightNodes; - do { - parentClone = parentClone.parentNode; - if (leftNodes) { - tmpNode = parentClone.cloneNode(false); - tmpNode.appendChild(leftNodes); - leftNodes = tmpNode; - tmpNode = parentClone.cloneNode(false); - tmpNode.appendChild(rightNodes); - rightNodes = tmpNode; - } else { - leftNodes = parentClone.cloneNode(false); - rightNodes = leftNodes.cloneNode(false); - } - while ((tmpNode = clone.previousSibling)) { - leftNodes.insertBefore(tmpNode, leftNodes.firstChild); - } - while ((tmpNode = clone.nextSibling)) { - rightNodes.appendChild(tmpNode); - } - clone = parentClone; - } while (parent !== parentClone); - tmpNode = parent.parentNode; - tmpNode.insertBefore(leftNodes, parent); - tmpNode.insertBefore(rightNodes, parent); - tmpNode.insertBefore(node, rightNodes); - domUtils.remove(parent); - return node; - }, - /** - * 检查节点node是否是空inline节点 - * @method isEmptyInlineElement - * @param { Node } node 需要检测的节点对象 - * @return { Number } 如果给定的节点是空的inline节点, 则返回1, 否则返回0。 - * @example - * ```html - * => 1 - * => 1 - * => 1 - * xx => 0 - * ``` - */ - isEmptyInlineElement: function(node) { - if (node.nodeType != 1 || !dtd.$removeEmpty[node.tagName]) { - return 0; - } - node = node.firstChild; - while (node) { - //如果是创建的bookmark就跳过 - if (domUtils.isBookmarkNode(node)) { - return 0; - } - if ( - (node.nodeType == 1 && !domUtils.isEmptyInlineElement(node)) || - (node.nodeType == 3 && !domUtils.isWhitespace(node)) - ) { - return 0; - } - node = node.nextSibling; - } - return 1; - }, - - /** - * 删除node节点下首尾两端的空白文本子节点 - * @method trimWhiteTextNode - * @param { Element } node 需要执行删除操作的元素对象 - * @example - * ```javascript - * var node = document.createElement("div"); - * - * node.appendChild( document.createTextNode( "" ) ); - * - * node.appendChild( document.createElement("div") ); - * - * node.appendChild( document.createTextNode( "" ) ); - * - * //3 - * console.log( node.childNodes.length ); - * - * UE.dom.domUtils.trimWhiteTextNode( node ); - * - * //1 - * console.log( node.childNodes.length ); - * ``` - */ - trimWhiteTextNode: function(node) { - function remove(dir) { - var child; - while ( - (child = node[dir]) && - child.nodeType == 3 && - domUtils.isWhitespace(child) - ) { - node.removeChild(child); - } - } - remove("firstChild"); - remove("lastChild"); - }, - - /** - * 合并node节点下相同的子节点 - * @name mergeChild - * @desc - * UE.dom.domUtils.mergeChild(node,tagName) //tagName要合并的子节点的标签 - * @example - *

    xxaaxx

    - * ==> UE.dom.domUtils.mergeChild(node,'span') - *

    xxaaxx

    - */ - mergeChild: function(node, tagName, attrs) { - var list = domUtils.getElementsByTagName(node, node.tagName.toLowerCase()); - for (var i = 0, ci; (ci = list[i++]); ) { - if (!ci.parentNode || domUtils.isBookmarkNode(ci)) { - continue; - } - //span单独处理 - if (ci.tagName.toLowerCase() == "span") { - if (node === ci.parentNode) { - domUtils.trimWhiteTextNode(node); - if (node.childNodes.length == 1) { - node.style.cssText = ci.style.cssText + ";" + node.style.cssText; - domUtils.remove(ci, true); - continue; - } - } - ci.style.cssText = node.style.cssText + ";" + ci.style.cssText; - if (attrs) { - var style = attrs.style; - if (style) { - style = style.split(";"); - for (var j = 0, s; (s = style[j++]); ) { - ci.style[utils.cssStyleToDomStyle(s.split(":")[0])] = s.split( - ":" - )[1]; - } - } - } - if (domUtils.isSameStyle(ci, node)) { - domUtils.remove(ci, true); - } - continue; - } - if (domUtils.isSameElement(node, ci)) { - domUtils.remove(ci, true); - } - } - }, - - /** - * 原生方法getElementsByTagName的封装 - * @method getElementsByTagName - * @param { Node } node 目标节点对象 - * @param { String } tagName 需要查找的节点的tagName, 多个tagName以空格分割 - * @return { Array } 符合条件的节点集合 - */ - getElementsByTagName: function(node, name, filter) { - if (filter && utils.isString(filter)) { - var className = filter; - filter = function(node) { - return domUtils.hasClass(node, className); - }; - } - name = utils.trim(name).replace(/[ ]{2,}/g, " ").split(" "); - var arr = []; - for (var n = 0, ni; (ni = name[n++]); ) { - var list = node.getElementsByTagName(ni); - for (var i = 0, ci; (ci = list[i++]); ) { - if (!filter || filter(ci)) arr.push(ci); - } - } - - return arr; - }, - /** - * 将节点node提取到父节点上 - * @method mergeToParent - * @param { Element } node 需要提取的元素对象 - * @example - * ```html - *
    - *
    - * - *
    - *
    - * - * - * ``` - */ - mergeToParent: function(node) { - var parent = node.parentNode; - while (parent && dtd.$removeEmpty[parent.tagName]) { - if (parent.tagName == node.tagName || parent.tagName == "A") { - //针对a标签单独处理 - domUtils.trimWhiteTextNode(parent); - //span需要特殊处理 不处理这样的情况 xxxxxxxxx - if ( - (parent.tagName == "SPAN" && !domUtils.isSameStyle(parent, node)) || - (parent.tagName == "A" && node.tagName == "SPAN") - ) { - if (parent.childNodes.length > 1 || parent !== node.parentNode) { - node.style.cssText = - parent.style.cssText + ";" + node.style.cssText; - parent = parent.parentNode; - continue; - } else { - parent.style.cssText += ";" + node.style.cssText; - //trace:952 a标签要保持下划线 - if (parent.tagName == "A") { - parent.style.textDecoration = "underline"; - } - } - } - if (parent.tagName != "A") { - parent === node.parentNode && domUtils.remove(node, true); - break; - } - } - parent = parent.parentNode; - } - }, - /** - * 合并节点node的左右兄弟节点 - * @method mergeSibling - * @param { Element } node 需要合并的目标节点 - * @example - * ```html - * xxxxoooxxxx - * - * - * ``` - */ - - /** - * 合并节点node的左右兄弟节点, 可以根据给定的条件选择是否忽略合并左节点。 - * @method mergeSibling - * @param { Element } node 需要合并的目标节点 - * @param { Boolean } ignorePre 是否忽略合并左节点 - * @example - * ```html - * xxxxoooxxxx - * - * - * ``` - */ - - /** - * 合并节点node的左右兄弟节点,可以根据给定的条件选择是否忽略合并左右节点。 - * @method mergeSibling - * @param { Element } node 需要合并的目标节点 - * @param { Boolean } ignorePre 是否忽略合并左节点 - * @param { Boolean } ignoreNext 是否忽略合并右节点 - * @remind 如果同时忽略左右节点, 则该操作什么也不会做 - * @example - * ```html - * xxxxoooxxxx - * - * - * ``` - */ - mergeSibling: function(node, ignorePre, ignoreNext) { - function merge(rtl, start, node) { - var next; - if ( - (next = node[rtl]) && - !domUtils.isBookmarkNode(next) && - next.nodeType == 1 && - domUtils.isSameElement(node, next) - ) { - while (next.firstChild) { - if (start == "firstChild") { - node.insertBefore(next.lastChild, node.firstChild); - } else { - node.appendChild(next.firstChild); - } - } - domUtils.remove(next); - } - } - !ignorePre && merge("previousSibling", "firstChild", node); - !ignoreNext && merge("nextSibling", "lastChild", node); - }, - - /** - * 设置节点node及其子节点不会被选中 - * @method unSelectable - * @param { Element } node 需要执行操作的dom元素 - * @remind 执行该操作后的节点, 将不能被鼠标选中 - * @example - * ```javascript - * UE.dom.domUtils.unSelectable( document.body ); - * ``` - */ - unSelectable: (ie && browser.ie9below) || browser.opera - ? function(node) { - //for ie9 - node.onselectstart = function() { - return false; - }; - node.onclick = node.onkeyup = node.onkeydown = function() { - return false; - }; - node.unselectable = "on"; - node.setAttribute("unselectable", "on"); - for (var i = 0, ci; (ci = node.all[i++]); ) { - switch (ci.tagName.toLowerCase()) { - case "iframe": - case "textarea": - case "input": - case "select": - break; - default: - ci.unselectable = "on"; - node.setAttribute("unselectable", "on"); - } - } - } - : function(node) { - node.style.MozUserSelect = node.style.webkitUserSelect = node.style.msUserSelect = node.style.KhtmlUserSelect = - "none"; - }, - /** - * 删除节点node上的指定属性名称的属性 - * @method removeAttributes - * @param { Node } node 需要删除属性的节点对象 - * @param { String } attrNames 可以是空格隔开的多个属性名称,该操作将会依次删除相应的属性 - * @example - * ```html - *
    - * xxxxx - *
    - * - * - * ``` - */ - - /** - * 删除节点node上的指定属性名称的属性 - * @method removeAttributes - * @param { Node } node 需要删除属性的节点对象 - * @param { Array } attrNames 需要删除的属性名数组 - * @example - * ```html - *
    - * xxxxx - *
    - * - * - * ``` - */ - removeAttributes: function(node, attrNames) { - attrNames = utils.isArray(attrNames) - ? attrNames - : utils.trim(attrNames).replace(/[ ]{2,}/g, " ").split(" "); - for (var i = 0, ci; (ci = attrNames[i++]); ) { - ci = attrFix[ci] || ci; - switch (ci) { - case "className": - node[ci] = ""; - break; - case "style": - node.style.cssText = ""; - var val = node.getAttributeNode("style"); - !browser.ie && val && node.removeAttributeNode(val); - } - node.removeAttribute(ci); - } - }, - /** - * 在doc下创建一个标签名为tag,属性为attrs的元素 - * @method createElement - * @param { DomDocument } doc 新创建的元素属于该document节点创建 - * @param { String } tagName 需要创建的元素的标签名 - * @param { Object } attrs 新创建的元素的属性key-value集合 - * @return { Element } 新创建的元素对象 - * @example - * ```javascript - * var ele = UE.dom.domUtils.createElement( document, 'div', { - * id: 'test' - * } ); - * - * //output: DIV - * console.log( ele.tagName ); - * - * //output: test - * console.log( ele.id ); - * - * ``` - */ - createElement: function(doc, tag, attrs) { - return domUtils.setAttributes(doc.createElement(tag), attrs); - }, - /** - * 为节点node添加属性attrs,attrs为属性键值对 - * @method setAttributes - * @param { Element } node 需要设置属性的元素对象 - * @param { Object } attrs 需要设置的属性名-值对 - * @return { Element } 设置属性的元素对象 - * @example - * ```html - * - * - * - * - */ - setAttributes: function(node, attrs) { - for (var attr in attrs) { - if (attrs.hasOwnProperty(attr)) { - var value = attrs[attr]; - switch (attr) { - case "class": - //ie下要这样赋值,setAttribute不起作用 - node.className = value; - break; - case "style": - node.style.cssText = node.style.cssText + ";" + value; - break; - case "innerHTML": - node[attr] = value; - break; - case "value": - node.value = value; - break; - default: - node.setAttribute(attrFix[attr] || attr, value); - } - } - } - return node; - }, - - /** - * 获取元素element经过计算后的样式值 - * @method getComputedStyle - * @param { Element } element 需要获取样式的元素对象 - * @param { String } styleName 需要获取的样式名 - * @return { String } 获取到的样式值 - * @example - * ```html - * - * - * - * - * - * ``` - */ - getComputedStyle: function(element, styleName) { - //一下的属性单独处理 - var pros = "width height top left"; - - if (pros.indexOf(styleName) > -1) { - return ( - element[ - "offset" + - styleName.replace(/^\w/, function(s) { - return s.toUpperCase(); - }) - ] + "px" - ); - } - //忽略文本节点 - if (element.nodeType == 3) { - element = element.parentNode; - } - //ie下font-size若body下定义了font-size,则从currentStyle里会取到这个font-size. 取不到实际值,故此修改. - if ( - browser.ie && - browser.version < 9 && - styleName == "font-size" && - !element.style.fontSize && - !dtd.$empty[element.tagName] && - !dtd.$nonChild[element.tagName] - ) { - var span = element.ownerDocument.createElement("span"); - span.style.cssText = "padding:0;border:0;font-family:simsun;"; - span.innerHTML = "."; - element.appendChild(span); - var result = span.offsetHeight; - element.removeChild(span); - span = null; - return result + "px"; - } - try { - var value = - domUtils.getStyle(element, styleName) || - (window.getComputedStyle - ? domUtils - .getWindow(element) - .getComputedStyle(element, "") - .getPropertyValue(styleName) - : (element.currentStyle || element.style)[ - utils.cssStyleToDomStyle(styleName) - ]); - } catch (e) { - return ""; - } - return utils.transUnitToPx(utils.fixColor(styleName, value)); - }, - /** - * 删除元素element指定的className - * @method removeClasses - * @param { Element } ele 需要删除class的元素节点 - * @param { String } classNames 需要删除的className, 多个className之间以空格分开 - * @example - * ```html - * xxx - * - * - * ``` - */ - - /** - * 删除元素element指定的className - * @method removeClasses - * @param { Element } ele 需要删除class的元素节点 - * @param { Array } classNames 需要删除的className数组 - * @example - * ```html - * xxx - * - * - * ``` - */ - removeClasses: function(elm, classNames) { - classNames = utils.isArray(classNames) - ? classNames - : utils.trim(classNames).replace(/[ ]{2,}/g, " ").split(" "); - for (var i = 0, ci, cls = elm.className; (ci = classNames[i++]); ) { - cls = cls.replace(new RegExp("\\b" + ci + "\\b"), ""); - } - cls = utils.trim(cls).replace(/[ ]{2,}/g, " "); - if (cls) { - elm.className = cls; - } else { - domUtils.removeAttributes(elm, ["class"]); - } - }, - /** - * 给元素element添加className - * @method addClass - * @param { Node } ele 需要增加className的元素 - * @param { String } classNames 需要添加的className, 多个className之间以空格分割 - * @remind 相同的类名不会被重复添加 - * @example - * ```html - * - * - * - * ``` - */ - - /** - * 判断元素element是否包含给定的样式类名className - * @method hasClass - * @param { Node } ele 需要检测的元素 - * @param { Array } classNames 需要检测的className数组 - * @return { Boolean } 元素是否包含所有给定的className - * @example - * ```html - * - * - * - * ``` - */ - hasClass: function(element, className) { - if (utils.isRegExp(className)) { - return className.test(element.className); - } - className = utils.trim(className).replace(/[ ]{2,}/g, " ").split(" "); - for (var i = 0, ci, cls = element.className; (ci = className[i++]); ) { - if (!new RegExp("\\b" + ci + "\\b", "i").test(cls)) { - return false; - } - } - return i - 1 == className.length; - }, - - /** - * 阻止事件默认行为 - * @method preventDefault - * @param { Event } evt 需要阻止默认行为的事件对象 - * @example - * ```javascript - * UE.dom.domUtils.preventDefault( evt ); - * ``` - */ - preventDefault: function(evt) { - evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); - }, - /** - * 删除元素element指定的样式 - * @method removeStyle - * @param { Element } element 需要删除样式的元素 - * @param { String } styleName 需要删除的样式名 - * @example - * ```html - * - * - * - * ``` - */ - removeStyle: function(element, name) { - if (browser.ie) { - //针对color先单独处理一下 - if (name == "color") { - name = "(^|;)" + name; - } - element.style.cssText = element.style.cssText.replace( - new RegExp(name + "[^:]*:[^;]+;?", "ig"), - "" - ); - } else { - if (element.style.removeProperty) { - element.style.removeProperty(name); - } else { - element.style.removeAttribute(utils.cssStyleToDomStyle(name)); - } - } - - if (!element.style.cssText) { - domUtils.removeAttributes(element, ["style"]); - } - }, - /** - * 获取元素element的style属性的指定值 - * @method getStyle - * @param { Element } element 需要获取属性值的元素 - * @param { String } styleName 需要获取的style的名称 - * @warning 该方法仅获取元素style属性中所标明的值 - * @return { String } 该元素包含指定的style属性值 - * @example - * ```html - *
    - * - * - * ``` - */ - getStyle: function(element, name) { - var value = element.style[utils.cssStyleToDomStyle(name)]; - return utils.fixColor(name, value); - }, - /** - * 为元素element设置样式属性值 - * @method setStyle - * @param { Element } element 需要设置样式的元素 - * @param { String } styleName 样式名 - * @param { String } styleValue 样式值 - * @example - * ```html - *
    - * - * - * ``` - */ - setStyle: function(element, name, value) { - element.style[utils.cssStyleToDomStyle(name)] = value; - if (!utils.trim(element.style.cssText)) { - this.removeAttributes(element, "style"); - } - }, - /** - * 为元素element设置多个样式属性值 - * @method setStyles - * @param { Element } element 需要设置样式的元素 - * @param { Object } styles 样式名值对 - * @example - * ```html - *
    - * - * - * ``` - */ - setStyles: function(element, styles) { - for (var name in styles) { - if (styles.hasOwnProperty(name)) { - domUtils.setStyle(element, name, styles[name]); - } - } - }, - /** - * 删除_moz_dirty属性 - * @private - * @method removeDirtyAttr - */ - removeDirtyAttr: function(node) { - for ( - var i = 0, ci, nodes = node.getElementsByTagName("*"); - (ci = nodes[i++]); - - ) { - ci.removeAttribute("_moz_dirty"); - } - node.removeAttribute("_moz_dirty"); - }, - /** - * 获取子节点的数量 - * @method getChildCount - * @param { Element } node 需要检测的元素 - * @return { Number } 给定的node元素的子节点数量 - * @example - * ```html - *
    - * - *
    - * - * - * ``` - */ - - /** - * 根据给定的过滤规则, 获取符合条件的子节点的数量 - * @method getChildCount - * @param { Element } node 需要检测的元素 - * @param { Function } fn 过滤器, 要求对符合条件的子节点返回true, 反之则要求返回false - * @return { Number } 符合过滤条件的node元素的子节点数量 - * @example - * ```html - *
    - * - *
    - * - * - * ``` - */ - getChildCount: function(node, fn) { - var count = 0, - first = node.firstChild; - fn = - fn || - function() { - return 1; - }; - while (first) { - if (fn(first)) { - count++; - } - first = first.nextSibling; - } - return count; - }, - - /** - * 判断给定节点是否为空节点 - * @method isEmptyNode - * @param { Node } node 需要检测的节点对象 - * @return { Boolean } 节点是否为空 - * @example - * ```javascript - * UE.dom.domUtils.isEmptyNode( document.body ); - * ``` - */ - isEmptyNode: function(node) { - return ( - !node.firstChild || - domUtils.getChildCount(node, function(node) { - return ( - !domUtils.isBr(node) && - !domUtils.isBookmarkNode(node) && - !domUtils.isWhitespace(node) - ); - }) == 0 - ); - }, - clearSelectedArr: function(nodes) { - var node; - while ((node = nodes.pop())) { - domUtils.removeAttributes(node, ["class"]); - } - }, - /** - * 将显示区域滚动到指定节点的位置 - * @method scrollToView - * @param {Node} node 节点 - * @param {window} win window对象 - * @param {Number} offsetTop 距离上方的偏移量 - */ - scrollToView: function(node, win, offsetTop) { - var getViewPaneSize = function() { - var doc = win.document, - mode = doc.compatMode == "CSS1Compat"; - return { - width: - (mode ? doc.documentElement.clientWidth : doc.body.clientWidth) || 0, - height: - (mode ? doc.documentElement.clientHeight : doc.body.clientHeight) || 0 - }; - }, - getScrollPosition = function(win) { - if ("pageXOffset" in win) { - return { - x: win.pageXOffset || 0, - y: win.pageYOffset || 0 - }; - } else { - var doc = win.document; - return { - x: doc.documentElement.scrollLeft || doc.body.scrollLeft || 0, - y: doc.documentElement.scrollTop || doc.body.scrollTop || 0 - }; - } - }; - var winHeight = getViewPaneSize().height, - offset = winHeight * -1 + offsetTop; - offset += node.offsetHeight || 0; - var elementPosition = domUtils.getXY(node); - offset += elementPosition.y; - var currentScroll = getScrollPosition(win).y; - // offset += 50; - if (offset > currentScroll || offset < currentScroll - winHeight) { - win.scrollTo(0, offset + (offset < 0 ? -20 : 20)); - } - }, - /** - * 判断给定节点是否为br - * @method isBr - * @param { Node } node 需要判断的节点对象 - * @return { Boolean } 给定的节点是否是br节点 - */ - isBr: function(node) { - return node.nodeType == 1 && node.tagName == "BR"; - }, - /** - * 判断给定的节点是否是一个“填充”节点 - * @private - * @method isFillChar - * @param { Node } node 需要判断的节点 - * @param { Boolean } isInStart 是否从节点内容的开始位置匹配 - * @returns { Boolean } 节点是否是填充节点 - */ - isFillChar: function(node, isInStart) { - if (node.nodeType != 3) return false; - var text = node.nodeValue; - if (isInStart) { - return new RegExp("^" + domUtils.fillChar).test(text); - } - return !text.replace(new RegExp(domUtils.fillChar, "g"), "").length; - }, - isStartInblock: function(range) { - var tmpRange = range.cloneRange(), - flag = 0, - start = tmpRange.startContainer, - tmp; - if (start.nodeType == 1 && start.childNodes[tmpRange.startOffset]) { - start = start.childNodes[tmpRange.startOffset]; - var pre = start.previousSibling; - while (pre && domUtils.isFillChar(pre)) { - start = pre; - pre = pre.previousSibling; - } - } - if (this.isFillChar(start, true) && tmpRange.startOffset == 1) { - tmpRange.setStartBefore(start); - start = tmpRange.startContainer; - } - - while (start && domUtils.isFillChar(start)) { - tmp = start; - start = start.previousSibling; - } - if (tmp) { - tmpRange.setStartBefore(tmp); - start = tmpRange.startContainer; - } - if ( - start.nodeType == 1 && - domUtils.isEmptyNode(start) && - tmpRange.startOffset == 1 - ) { - tmpRange.setStart(start, 0).collapse(true); - } - while (!tmpRange.startOffset) { - start = tmpRange.startContainer; - if (domUtils.isBlockElm(start) || domUtils.isBody(start)) { - flag = 1; - break; - } - var pre = tmpRange.startContainer.previousSibling, - tmpNode; - if (!pre) { - tmpRange.setStartBefore(tmpRange.startContainer); - } else { - while (pre && domUtils.isFillChar(pre)) { - tmpNode = pre; - pre = pre.previousSibling; - } - if (tmpNode) { - tmpRange.setStartBefore(tmpNode); - } else { - tmpRange.setStartBefore(tmpRange.startContainer); - } - } - } - return flag && !domUtils.isBody(tmpRange.startContainer) ? 1 : 0; - }, - - /** - * 判断给定的元素是否是一个空元素 - * @method isEmptyBlock - * @param { Element } node 需要判断的元素 - * @return { Boolean } 是否是空元素 - * @example - * ```html - *
    - * - * - * ``` - */ - - /** - * 根据指定的判断规则判断给定的元素是否是一个空元素 - * @method isEmptyBlock - * @param { Element } node 需要判断的元素 - * @param { RegExp } reg 对内容执行判断的正则表达式对象 - * @return { Boolean } 是否是空元素 - */ - isEmptyBlock: function(node, reg) { - if (node.nodeType != 1) return 0; - reg = reg || new RegExp("[ \xa0\t\r\n" + domUtils.fillChar + "]", "g"); - - if ( - node[browser.ie ? "innerText" : "textContent"].replace(reg, "").length > 0 - ) { - return 0; - } - for (var n in dtd.$isNotEmpty) { - if (node.getElementsByTagName(n).length) { - return 0; - } - } - return 1; - }, - - /** - * 移动元素使得该元素的位置移动指定的偏移量的距离 - * @method setViewportOffset - * @param { Element } element 需要设置偏移量的元素 - * @param { Object } offset 偏移量, 形如{ left: 100, top: 50 }的一个键值对, 表示该元素将在 - * 现有的位置上向水平方向偏移offset.left的距离, 在竖直方向上偏移 - * offset.top的距离 - * @example - * ```html - *
    - * - * - * ``` - */ - setViewportOffset: function(element, offset) { - var left = parseInt(element.style.left) | 0; - var top = parseInt(element.style.top) | 0; - var rect = element.getBoundingClientRect(); - var offsetLeft = offset.left - rect.left; - var offsetTop = offset.top - rect.top; - if (offsetLeft) { - element.style.left = left + offsetLeft + "px"; - } - if (offsetTop) { - element.style.top = top + offsetTop + "px"; - } - }, - - /** - * 用“填充字符”填充节点 - * @method fillNode - * @private - * @param { DomDocument } doc 填充的节点所在的docment对象 - * @param { Node } node 需要填充的节点对象 - * @example - * ```html - *
    - * - * - * ``` - */ - fillNode: function(doc, node) { - var tmpNode = browser.ie - ? doc.createTextNode(domUtils.fillChar) - : doc.createElement("br"); - node.innerHTML = ""; - node.appendChild(tmpNode); - }, - - /** - * 把节点src的所有子节点追加到另一个节点tag上去 - * @method moveChild - * @param { Node } src 源节点, 该节点下的所有子节点将被移除 - * @param { Node } tag 目标节点, 从源节点移除的子节点将被追加到该节点下 - * @example - * ```html - *
    - * - *
    - *
    - *
    - *
    - * - * - * ``` - */ - - /** - * 把节点src的所有子节点移动到另一个节点tag上去, 可以通过dir参数控制附加的行为是“追加”还是“插入顶部” - * @method moveChild - * @param { Node } src 源节点, 该节点下的所有子节点将被移除 - * @param { Node } tag 目标节点, 从源节点移除的子节点将被附加到该节点下 - * @param { Boolean } dir 附加方式, 如果为true, 则附加进去的节点将被放到目标节点的顶部, 反之,则放到末尾 - * @example - * ```html - *
    - * - *
    - *
    - *
    - *
    - * - * - * ``` - */ - moveChild: function(src, tag, dir) { - while (src.firstChild) { - if (dir && tag.firstChild) { - tag.insertBefore(src.lastChild, tag.firstChild); - } else { - tag.appendChild(src.firstChild); - } - } - }, - - /** - * 判断节点的标签上是否不存在任何属性 - * @method hasNoAttributes - * @private - * @param { Node } node 需要检测的节点对象 - * @return { Boolean } 节点是否不包含任何属性 - * @example - * ```html - *
    xxxx
    - * - * - * ``` - */ - hasNoAttributes: function(node) { - return browser.ie - ? /^<\w+\s*?>/.test(node.outerHTML) - : node.attributes.length == 0; - }, - - /** - * 检测节点是否是UEditor所使用的辅助节点 - * @method isCustomeNode - * @private - * @param { Node } node 需要检测的节点 - * @remind 辅助节点是指编辑器要完成工作临时添加的节点, 在输出的时候将会从编辑器内移除, 不会影响最终的结果。 - * @return { Boolean } 给定的节点是否是一个辅助节点 - */ - isCustomeNode: function(node) { - return node.nodeType == 1 && node.getAttribute("_ue_custom_node_"); - }, - - /** - * 检测节点的标签是否是给定的标签 - * @method isTagNode - * @param { Node } node 需要检测的节点对象 - * @param { String } tagName 标签 - * @return { Boolean } 节点的标签是否是给定的标签 - * @example - * ```html - *
    - * - * - * ``` - */ - isTagNode: function(node, tagNames) { - return ( - node.nodeType == 1 && - new RegExp("\\b" + node.tagName + "\\b", "i").test(tagNames) - ); - }, - - /** - * 给定一个节点数组,在通过指定的过滤器过滤后, 获取其中满足过滤条件的第一个节点 - * @method filterNodeList - * @param { Array } nodeList 需要过滤的节点数组 - * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false - * @return { Node | NULL } 如果找到符合过滤条件的节点, 则返回该节点, 否则返回NULL - * @example - * ```javascript - * var divNodes = document.getElementsByTagName("div"); - * divNodes = [].slice.call( divNodes, 0 ); - * - * //output: null - * console.log( UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { - * return node.tagName.toLowerCase() !== 'div'; - * } ) ); - * ``` - */ - - /** - * 给定一个节点数组nodeList和一组标签名tagNames, 获取其中能够匹配标签名的节点集合中的第一个节点 - * @method filterNodeList - * @param { Array } nodeList 需要过滤的节点数组 - * @param { String } tagNames 需要匹配的标签名, 多个标签名之间用空格分割 - * @return { Node | NULL } 如果找到标签名匹配的节点, 则返回该节点, 否则返回NULL - * @example - * ```javascript - * var divNodes = document.getElementsByTagName("div"); - * divNodes = [].slice.call( divNodes, 0 ); - * - * //output: null - * console.log( UE.dom.domUtils.filterNodeList( divNodes, 'a span' ) ); - * ``` - */ - - /** - * 给定一个节点数组,在通过指定的过滤器过滤后, 如果参数forAll为true, 则会返回所有满足过滤 - * 条件的节点集合, 否则, 返回满足条件的节点集合中的第一个节点 - * @method filterNodeList - * @param { Array } nodeList 需要过滤的节点数组 - * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false - * @param { Boolean } forAll 是否返回整个节点数组, 如果该参数为false, 则返回节点集合中的第一个节点 - * @return { Array | Node | NULL } 如果找到符合过滤条件的节点, 则根据参数forAll的值决定返回满足 - * 过滤条件的节点数组或第一个节点, 否则返回NULL - * @example - * ```javascript - * var divNodes = document.getElementsByTagName("div"); - * divNodes = [].slice.call( divNodes, 0 ); - * - * //output: 3(假定有3个div) - * console.log( divNodes.length ); - * - * var nodes = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { - * return node.tagName.toLowerCase() === 'div'; - * }, true ); - * - * //output: 3 - * console.log( nodes.length ); - * - * var node = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { - * return node.tagName.toLowerCase() === 'div'; - * }, false ); - * - * //output: div - * console.log( node.nodeName ); - * ``` - */ - filterNodeList: function(nodelist, filter, forAll) { - var results = []; - if (!utils.isFunction(filter)) { - var str = filter; - filter = function(n) { - return ( - utils.indexOf( - utils.isArray(str) ? str : str.split(" "), - n.tagName.toLowerCase() - ) != -1 - ); - }; - } - utils.each(nodelist, function(n) { - filter(n) && results.push(n); - }); - return results.length == 0 - ? null - : results.length == 1 || !forAll ? results[0] : results; - }, - - /** - * 查询给定的range选区是否在给定的node节点内,且在该节点的最末尾 - * @method isInNodeEndBoundary - * @param { UE.dom.Range } rng 需要判断的range对象, 该对象的startContainer不能为NULL - * @param node 需要检测的节点对象 - * @return { Number } 如果给定的选取range对象是在node内部的最末端, 则返回1, 否则返回0 - */ - isInNodeEndBoundary: function(rng, node) { - var start = rng.startContainer; - if (start.nodeType == 3 && rng.startOffset != start.nodeValue.length) { - return 0; - } - if (start.nodeType == 1 && rng.startOffset != start.childNodes.length) { - return 0; - } - while (start !== node) { - if (start.nextSibling) { - return 0; - } - start = start.parentNode; - } - return 1; - }, - isBoundaryNode: function(node, dir) { - var tmp; - while (!domUtils.isBody(node)) { - tmp = node; - node = node.parentNode; - if (tmp !== node[dir]) { - return false; - } - } - return true; - }, - fillHtml: browser.ie11below ? " " : "
    " - }); - var fillCharReg = new RegExp(domUtils.fillChar, "g"); - - - // core/Range.js - /** - * Range封装 - * @file - * @module UE.dom - * @class Range - * @since 1.2.6.1 - */ - - /** - * dom操作封装 - * @unfile - * @module UE.dom - */ - - /** - * Range实现类,本类是UEditor底层核心类,封装不同浏览器之间的Range操作。 - * @unfile - * @module UE.dom - * @class Range - */ - - (function() { - var guid = 0, - fillChar = domUtils.fillChar, - fillData; - - /** - * 更新range的collapse状态 - * @param {Range} range range对象 - */ - function updateCollapse(range) { - range.collapsed = - range.startContainer && - range.endContainer && - range.startContainer === range.endContainer && - range.startOffset == range.endOffset; - } - - function selectOneNode(rng) { - return ( - !rng.collapsed && - rng.startContainer.nodeType == 1 && - rng.startContainer === rng.endContainer && - rng.endOffset - rng.startOffset == 1 - ); - } - function setEndPoint(toStart, node, offset, range) { - //如果node是自闭合标签要处理 - if ( - node.nodeType == 1 && - (dtd.$empty[node.tagName] || dtd.$nonChild[node.tagName]) - ) { - offset = domUtils.getNodeIndex(node) + (toStart ? 0 : 1); - node = node.parentNode; - } - if (toStart) { - range.startContainer = node; - range.startOffset = offset; - if (!range.endContainer) { - range.collapse(true); - } - } else { - range.endContainer = node; - range.endOffset = offset; - if (!range.startContainer) { - range.collapse(false); - } - } - updateCollapse(range); - return range; - } - - function execContentsAction(range, action) { - //调整边界 - //range.includeBookmark(); - var start = range.startContainer, - end = range.endContainer, - startOffset = range.startOffset, - endOffset = range.endOffset, - doc = range.document, - frag = doc.createDocumentFragment(), - tmpStart, - tmpEnd; - if (start.nodeType == 1) { - start = - start.childNodes[startOffset] || - (tmpStart = start.appendChild(doc.createTextNode(""))); - } - if (end.nodeType == 1) { - end = - end.childNodes[endOffset] || - (tmpEnd = end.appendChild(doc.createTextNode(""))); - } - if (start === end && start.nodeType == 3) { - frag.appendChild( - doc.createTextNode( - start.substringData(startOffset, endOffset - startOffset) - ) - ); - //is not clone - if (action) { - start.deleteData(startOffset, endOffset - startOffset); - range.collapse(true); - } - return frag; - } - var current, - currentLevel, - clone = frag, - startParents = domUtils.findParents(start, true), - endParents = domUtils.findParents(end, true); - for (var i = 0; startParents[i] == endParents[i]; ) { - i++; - } - for (var j = i, si; (si = startParents[j]); j++) { - current = si.nextSibling; - if (si == start) { - if (!tmpStart) { - if (range.startContainer.nodeType == 3) { - clone.appendChild( - doc.createTextNode(start.nodeValue.slice(startOffset)) - ); - //is not clone - if (action) { - start.deleteData( - startOffset, - start.nodeValue.length - startOffset - ); - } - } else { - clone.appendChild(!action ? start.cloneNode(true) : start); - } - } - } else { - currentLevel = si.cloneNode(false); - clone.appendChild(currentLevel); - } - while (current) { - if (current === end || current === endParents[j]) { - break; - } - si = current.nextSibling; - clone.appendChild(!action ? current.cloneNode(true) : current); - current = si; - } - clone = currentLevel; - } - clone = frag; - if (!startParents[i]) { - clone.appendChild(startParents[i - 1].cloneNode(false)); - clone = clone.firstChild; - } - for (var j = i, ei; (ei = endParents[j]); j++) { - current = ei.previousSibling; - if (ei == end) { - if (!tmpEnd && range.endContainer.nodeType == 3) { - clone.appendChild( - doc.createTextNode(end.substringData(0, endOffset)) - ); - //is not clone - if (action) { - end.deleteData(0, endOffset); - } - } - } else { - currentLevel = ei.cloneNode(false); - clone.appendChild(currentLevel); - } - //如果两端同级,右边第一次已经被开始做了 - if (j != i || !startParents[i]) { - while (current) { - if (current === start) { - break; - } - ei = current.previousSibling; - clone.insertBefore( - !action ? current.cloneNode(true) : current, - clone.firstChild - ); - current = ei; - } - } - clone = currentLevel; - } - if (action) { - range - .setStartBefore( - !endParents[i] - ? endParents[i - 1] - : !startParents[i] ? startParents[i - 1] : endParents[i] - ) - .collapse(true); - } - tmpStart && domUtils.remove(tmpStart); - tmpEnd && domUtils.remove(tmpEnd); - return frag; - } - - /** - * 创建一个跟document绑定的空的Range实例 - * @constructor - * @param { Document } document 新建的选区所属的文档对象 - */ - - /** - * @property { Node } startContainer 当前Range的开始边界的容器节点, 可以是一个元素节点或者是文本节点 - */ - - /** - * @property { Node } startOffset 当前Range的开始边界容器节点的偏移量, 如果是元素节点, - * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符 - */ - - /** - * @property { Node } endContainer 当前Range的结束边界的容器节点, 可以是一个元素节点或者是文本节点 - */ - - /** - * @property { Node } endOffset 当前Range的结束边界容器节点的偏移量, 如果是元素节点, - * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符 - */ - - /** - * @property { Boolean } collapsed 当前Range是否闭合 - * @default true - * @remind Range是闭合的时候, startContainer === endContainer && startOffset === endOffset - */ - - /** - * @property { Document } document 当前Range所属的Document对象 - * @remind 不同range的的document属性可以是不同的 - */ - var Range = (dom.Range = function(document) { - var me = this; - me.startContainer = me.startOffset = me.endContainer = me.endOffset = null; - me.document = document; - me.collapsed = true; - }); - - /** - * 删除fillData - * @param doc - * @param excludeNode - */ - function removeFillData(doc, excludeNode) { - try { - if (fillData && domUtils.inDoc(fillData, doc)) { - if (!fillData.nodeValue.replace(fillCharReg, "").length) { - var tmpNode = fillData.parentNode; - domUtils.remove(fillData); - while ( - tmpNode && - domUtils.isEmptyInlineElement(tmpNode) && - //safari的contains有bug - (browser.safari - ? !( - domUtils.getPosition(tmpNode, excludeNode) & - domUtils.POSITION_CONTAINS - ) - : !tmpNode.contains(excludeNode)) - ) { - fillData = tmpNode.parentNode; - domUtils.remove(tmpNode); - tmpNode = fillData; - } - } else { - fillData.nodeValue = fillData.nodeValue.replace(fillCharReg, ""); - } - } - } catch (e) {} - } - - /** - * @param node - * @param dir - */ - function mergeSibling(node, dir) { - var tmpNode; - node = node[dir]; - while (node && domUtils.isFillChar(node)) { - tmpNode = node[dir]; - domUtils.remove(node); - node = tmpNode; - } - } - - Range.prototype = { - /** - * 克隆选区的内容到一个DocumentFragment里 - * @method cloneContents - * @return { DocumentFragment | NULL } 如果选区是闭合的将返回null, 否则, 返回包含所clone内容的DocumentFragment元素 - * @example - * ```html - * - * - * xx[xxx]x - * - * - * - * ``` - */ - cloneContents: function() { - return this.collapsed ? null : execContentsAction(this, 0); - }, - - /** - * 删除当前选区范围中的所有内容 - * @method deleteContents - * @remind 执行完该操作后, 当前Range对象变成了闭合状态 - * @return { UE.dom.Range } 当前操作的Range对象 - * @example - * ```html - * - * - * xx[xxx]x - * - * - * - * ``` - */ - deleteContents: function() { - var txt; - if (!this.collapsed) { - execContentsAction(this, 1); - } - if (browser.webkit) { - txt = this.startContainer; - if (txt.nodeType == 3 && !txt.nodeValue.length) { - this.setStartBefore(txt).collapse(true); - domUtils.remove(txt); - } - } - return this; - }, - - /** - * 将当前选区的内容提取到一个DocumentFragment里 - * @method extractContents - * @remind 执行该操作后, 选区将变成闭合状态 - * @warning 执行该操作后, 原来选区所选中的内容将从dom树上剥离出来 - * @return { DocumentFragment } 返回包含所提取内容的DocumentFragment对象 - * @example - * ```html - * - * - * xx[xxx]x - * - * - * - */ - extractContents: function() { - return this.collapsed ? null : execContentsAction(this, 2); - }, - - /** - * 设置Range的开始容器节点和偏移量 - * @method setStart - * @remind 如果给定的节点是元素节点,那么offset指的是其子元素中索引为offset的元素, - * 如果是文本节点,那么offset指的是其文本内容的第offset个字符 - * @remind 如果提供的容器节点是一个不能包含子元素的节点, 则该选区的开始容器将被设置 - * 为该节点的父节点, 此时, 其距离开始容器的偏移量也变成了该节点在其父节点 - * 中的索引 - * @param { Node } node 将被设为当前选区开始边界容器的节点对象 - * @param { int } offset 选区的开始位置偏移量 - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * xxxxxxxxxxxxx[xxx] - * - * - * ``` - * @example - * ```html - * - * xxx[xx]x - * - * - * ``` - */ - setStart: function(node, offset) { - return setEndPoint(true, node, offset, this); - }, - - /** - * 设置Range的结束容器和偏移量 - * @method setEnd - * @param { Node } node 作为当前选区结束边界容器的节点对象 - * @param { int } offset 结束边界的偏移量 - * @see UE.dom.Range:setStart(Node,int) - * @return { UE.dom.Range } 当前range对象 - */ - setEnd: function(node, offset) { - return setEndPoint(false, node, offset, this); - }, - - /** - * 将Range开始位置设置到node节点之后 - * @method setStartAfter - * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引+1 - * @param { Node } node 选区的开始边界将紧接着该节点之后 - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * xxxxxxx[xxxx] - * - * - * ``` - */ - setStartAfter: function(node) { - return this.setStart(node.parentNode, domUtils.getNodeIndex(node) + 1); - }, - - /** - * 将Range开始位置设置到node节点之前 - * @method setStartBefore - * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引 - * @param { Node } node 新的选区开始位置在该节点之前 - * @see UE.dom.Range:setStartAfter(Node) - * @return { UE.dom.Range } 当前range对象 - */ - setStartBefore: function(node) { - return this.setStart(node.parentNode, domUtils.getNodeIndex(node)); - }, - - /** - * 将Range结束位置设置到node节点之后 - * @method setEndAfter - * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引+1 - * @param { Node } node 目标节点 - * @see UE.dom.Range:setStartAfter(Node) - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * [xxxxxxx]xxxx - * - * - * ``` - */ - setEndAfter: function(node) { - return this.setEnd(node.parentNode, domUtils.getNodeIndex(node) + 1); - }, - - /** - * 将Range结束位置设置到node节点之前 - * @method setEndBefore - * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引 - * @param { Node } node 目标节点 - * @see UE.dom.Range:setEndAfter(Node) - * @return { UE.dom.Range } 当前range对象 - */ - setEndBefore: function(node) { - return this.setEnd(node.parentNode, domUtils.getNodeIndex(node)); - }, - - /** - * 设置Range的开始位置到node节点内的第一个子节点之前 - * @method setStartAtFirst - * @remind 选区的开始容器将变成给定的节点, 且偏移量为0 - * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。 - * @param { Node } node 目标节点 - * @see UE.dom.Range:setStartBefore(Node) - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * xxxxx[xx]xxxx - * - * - * ``` - */ - setStartAtFirst: function(node) { - return this.setStart(node, 0); - }, - - /** - * 设置Range的开始位置到node节点内的最后一个节点之后 - * @method setStartAtLast - * @remind 选区的开始容器将变成给定的节点, 且偏移量为该节点的子节点数 - * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。 - * @param { Node } node 目标节点 - * @see UE.dom.Range:setStartAtFirst(Node) - * @return { UE.dom.Range } 当前range对象 - */ - setStartAtLast: function(node) { - return this.setStart( - node, - node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length - ); - }, - - /** - * 设置Range的结束位置到node节点内的第一个节点之前 - * @method setEndAtFirst - * @param { Node } node 目标节点 - * @remind 选区的结束容器将变成给定的节点, 且偏移量为0 - * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。 - * @see UE.dom.Range:setStartAtFirst(Node) - * @return { UE.dom.Range } 当前range对象 - */ - setEndAtFirst: function(node) { - return this.setEnd(node, 0); - }, - - /** - * 设置Range的结束位置到node节点内的最后一个节点之后 - * @method setEndAtLast - * @param { Node } node 目标节点 - * @remind 选区的结束容器将变成给定的节点, 且偏移量为该节点的子节点数量 - * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。 - * @see UE.dom.Range:setStartAtFirst(Node) - * @return { UE.dom.Range } 当前range对象 - */ - setEndAtLast: function(node) { - return this.setEnd( - node, - node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length - ); - }, - - /** - * 选中给定节点 - * @method selectNode - * @remind 此时, 选区的开始容器和结束容器都是该节点的父节点, 其startOffset是该节点在父节点中的位置索引, - * 而endOffset为startOffset+1 - * @param { Node } node 需要选中的节点 - * @return { UE.dom.Range } 当前range对象,此时的range仅包含当前给定的节点对象 - * @example - * ```html - * - * xxxxx[xx]xxxx - * - * - * ``` - */ - selectNode: function(node) { - return this.setStartBefore(node).setEndAfter(node); - }, - - /** - * 选中给定节点内部的所有节点 - * @method selectNodeContents - * @remind 此时, 选区的开始容器和结束容器都是该节点, 其startOffset为0, - * 而endOffset是该节点的子节点数。 - * @param { Node } node 目标节点, 当前range将包含该节点内的所有节点 - * @return { UE.dom.Range } 当前range对象, 此时range仅包含给定节点的所有子节点 - * @example - * ```html - * - * xxxxx[xx]xxxx - * - * - * ``` - */ - selectNodeContents: function(node) { - return this.setStart(node, 0).setEndAtLast(node); - }, - - /** - * clone当前Range对象 - * @method cloneRange - * @remind 返回的range是一个全新的range对象, 其内部所有属性与当前被clone的range相同。 - * @return { UE.dom.Range } 当前range对象的一个副本 - */ - cloneRange: function() { - var me = this; - return new Range(me.document) - .setStart(me.startContainer, me.startOffset) - .setEnd(me.endContainer, me.endOffset); - }, - - /** - * 向当前选区的结束处闭合选区 - * @method collapse - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * xxxxx[xx]xxxx - * - * - * ``` - */ - - /** - * 闭合当前选区,根据给定的toStart参数项决定是向当前选区开始处闭合还是向结束处闭合, - * 如果toStart的值为true,则向开始位置闭合, 反之,向结束位置闭合。 - * @method collapse - * @param { Boolean } toStart 是否向选区开始处闭合 - * @return { UE.dom.Range } 当前range对象,此时range对象处于闭合状态 - * @see UE.dom.Range:collapse() - * @example - * ```html - * - * xxxxx[xx]xxxx - * - * - * ``` - */ - collapse: function(toStart) { - var me = this; - if (toStart) { - me.endContainer = me.startContainer; - me.endOffset = me.startOffset; - } else { - me.startContainer = me.endContainer; - me.startOffset = me.endOffset; - } - me.collapsed = true; - return me; - }, - - /** - * 调整range的开始位置和结束位置,使其"收缩"到最小的位置 - * @method shrinkBoundary - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * xxxx[xxxxx] => xxxx[xxxxx] - * ``` - * - * @example - * ```html - * - * x[xx]xxx - * - * - * ``` - * - * @example - * ```html - * [xxxxxxxxxxx] => [xxxxxxxxxxx] - * ``` - */ - - /** - * 调整range的开始位置和结束位置,使其"收缩"到最小的位置, - * 如果ignoreEnd的值为true,则忽略对结束位置的调整 - * @method shrinkBoundary - * @param { Boolean } ignoreEnd 是否忽略对结束位置的调整 - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.domUtils.Range:shrinkBoundary() - */ - shrinkBoundary: function(ignoreEnd) { - var me = this, - child, - collapsed = me.collapsed; - function check(node) { - return ( - node.nodeType == 1 && - !domUtils.isBookmarkNode(node) && - !dtd.$empty[node.tagName] && - !dtd.$nonChild[node.tagName] - ); - } - while ( - me.startContainer.nodeType == 1 && //是element - (child = me.startContainer.childNodes[me.startOffset]) && //子节点也是element - check(child) - ) { - me.setStart(child, 0); - } - if (collapsed) { - return me.collapse(true); - } - if (!ignoreEnd) { - while ( - me.endContainer.nodeType == 1 && //是element - me.endOffset > 0 && //如果是空元素就退出 endOffset=0那么endOffst-1为负值,childNodes[endOffset]报错 - (child = me.endContainer.childNodes[me.endOffset - 1]) && //子节点也是element - check(child) - ) { - me.setEnd(child, child.childNodes.length); - } - } - return me; - }, - - /** - * 获取离当前选区内包含的所有节点最近的公共祖先节点, - * @method getCommonAncestor - * @remind 返回的公共祖先节点一定不是range自身的容器节点, 但有可能是一个文本节点 - * @return { Node } 当前range对象内所有节点的公共祖先节点 - * @example - * ```html - * //选区示例 - * xxxx[xxx]xxxxxx - * - * ``` - */ - - /** - * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到 - * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf - * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点 - * @method getCommonAncestor - * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点 - * @return { Node } 当前range对象内所有节点的公共祖先节点 - * @see UE.dom.Range:getCommonAncestor() - * @example - * ```html - * - * - * - * xxxxxxxxx[xxx]xxxxxxxx - * - * - * - * - * ``` - */ - - /** - * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到 - * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf - * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点; 同时可以根据 - * ignoreTextNode 参数的取值决定是否忽略类型为文本节点的祖先节点。 - * @method getCommonAncestor - * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点 - * @param { Boolean } ignoreTextNode 获取祖先节点的过程中是否忽略类型为文本节点的祖先节点 - * @return { Node } 当前range对象内所有节点的公共祖先节点 - * @see UE.dom.Range:getCommonAncestor() - * @see UE.dom.Range:getCommonAncestor(Boolean) - * @example - * ```html - * - * - * - * xxxxxxxx[x]xxxxxxxxxxx - * - * - * - * - * ``` - */ - getCommonAncestor: function(includeSelf, ignoreTextNode) { - var me = this, - start = me.startContainer, - end = me.endContainer; - if (start === end) { - if (includeSelf && selectOneNode(this)) { - start = start.childNodes[me.startOffset]; - if (start.nodeType == 1) return start; - } - //只有在上来就相等的情况下才会出现是文本的情况 - return ignoreTextNode && start.nodeType == 3 ? start.parentNode : start; - } - return domUtils.getCommonAncestor(start, end); - }, - - /** - * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上 - * @method trimBoundary - * @remind 该操作有可能会引起文本节点被切开 - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * //选区示例 - * xxx[xxxxx]xxx - * - * - * ``` - */ - - /** - * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上, - * 可以根据 ignoreEnd 参数的值决定是否调整对结束边界的调整 - * @method trimBoundary - * @param { Boolean } ignoreEnd 是否忽略对结束边界的调整 - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * //选区示例 - * xxx[xxxxx]xxx - * - * - * ``` - */ - trimBoundary: function(ignoreEnd) { - this.txtToElmBoundary(); - var start = this.startContainer, - offset = this.startOffset, - collapsed = this.collapsed, - end = this.endContainer; - if (start.nodeType == 3) { - if (offset == 0) { - this.setStartBefore(start); - } else { - if (offset >= start.nodeValue.length) { - this.setStartAfter(start); - } else { - var textNode = domUtils.split(start, offset); - //跟新结束边界 - if (start === end) { - this.setEnd(textNode, this.endOffset - offset); - } else if (start.parentNode === end) { - this.endOffset += 1; - } - this.setStartBefore(textNode); - } - } - if (collapsed) { - return this.collapse(true); - } - } - if (!ignoreEnd) { - offset = this.endOffset; - end = this.endContainer; - if (end.nodeType == 3) { - if (offset == 0) { - this.setEndBefore(end); - } else { - offset < end.nodeValue.length && domUtils.split(end, offset); - this.setEndAfter(end); - } - } - } - return this; - }, - - /** - * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则什么也不做 - * @method txtToElmBoundary - * @remind 该操作不会修改dom节点 - * @return { UE.dom.Range } 当前range对象 - */ - - /** - * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则根据参数项 - * ignoreCollapsed 的值决定是否执行该调整 - * @method txtToElmBoundary - * @param { Boolean } ignoreCollapsed 是否忽略选区的闭合状态, 如果该参数取值为true, 则 - * 不论选区是否闭合, 都会执行该操作, 反之, 则不会对闭合的选区执行该操作 - * @return { UE.dom.Range } 当前range对象 - */ - txtToElmBoundary: function(ignoreCollapsed) { - function adjust(r, c) { - var container = r[c + "Container"], - offset = r[c + "Offset"]; - if (container.nodeType == 3) { - if (!offset) { - r[ - "set" + - c.replace(/(\w)/, function(a) { - return a.toUpperCase(); - }) + - "Before" - ](container); - } else if (offset >= container.nodeValue.length) { - r[ - "set" + - c.replace(/(\w)/, function(a) { - return a.toUpperCase(); - }) + - "After" - ](container); - } - } - } - - if (ignoreCollapsed || !this.collapsed) { - adjust(this, "start"); - adjust(this, "end"); - } - return this; - }, - - /** - * 在当前选区的开始位置前插入节点,新插入的节点会被该range包含 - * @method insertNode - * @param { Node } node 需要插入的节点 - * @remind 插入的节点可以是一个DocumentFragment依次插入多个节点 - * @return { UE.dom.Range } 当前range对象 - */ - insertNode: function(node) { - var first = node, - length = 1; - if (node.nodeType == 11) { - first = node.firstChild; - length = node.childNodes.length; - } - this.trimBoundary(true); - var start = this.startContainer, - offset = this.startOffset; - var nextNode = start.childNodes[offset]; - if (nextNode) { - start.insertBefore(node, nextNode); - } else { - start.appendChild(node); - } - if (first.parentNode === this.endContainer) { - this.endOffset = this.endOffset + length; - } - return this.setStartBefore(first); - }, - - /** - * 闭合选区到当前选区的开始位置, 并且定位光标到闭合后的位置 - * @method setCursor - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.Range:collapse() - */ - - /** - * 闭合选区,可以根据参数toEnd的值控制选区是向前闭合还是向后闭合, 并且定位光标到闭合后的位置。 - * @method setCursor - * @param { Boolean } toEnd 是否向后闭合, 如果为true, 则闭合选区时, 将向结束容器方向闭合, - * 反之,则向开始容器方向闭合 - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.Range:collapse(Boolean) - */ - setCursor: function(toEnd, noFillData) { - return this.collapse(!toEnd).select(noFillData); - }, - - /** - * 创建当前range的一个书签,记录下当前range的位置,方便当dom树改变时,还能找回原来的选区位置 - * @method createBookmark - * @param { Boolean } serialize 控制返回的标记位置是对当前位置的引用还是ID,如果该值为true,则 - * 返回标记位置的ID, 反之则返回标记位置节点的引用 - * @return { Object } 返回一个书签记录键值对, 其包含的key有: start => 开始标记的ID或者引用, - * end => 结束标记的ID或引用, id => 当前标记的类型, 如果为true,则表示 - * 返回的记录的类型为ID, 反之则为引用 - */ - createBookmark: function(serialize, same) { - var endNode, - startNode = this.document.createElement("span"); - startNode.style.cssText = "display:none;line-height:0px;"; - startNode.appendChild(this.document.createTextNode("\u200D")); - startNode.id = "_baidu_bookmark_start_" + (same ? "" : guid++); - - if (!this.collapsed) { - endNode = startNode.cloneNode(true); - endNode.id = "_baidu_bookmark_end_" + (same ? "" : guid++); - } - this.insertNode(startNode); - if (endNode) { - this.collapse().insertNode(endNode).setEndBefore(endNode); - } - this.setStartAfter(startNode); - return { - start: serialize ? startNode.id : startNode, - end: endNode ? (serialize ? endNode.id : endNode) : null, - id: serialize - }; - }, - - /** - * 调整当前range的边界到书签位置,并删除该书签对象所标记的位置内的节点 - * @method moveToBookmark - * @param { BookMark } bookmark createBookmark所创建的标签对象 - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.Range:createBookmark(Boolean) - */ - moveToBookmark: function(bookmark) { - var start = bookmark.id - ? this.document.getElementById(bookmark.start) - : bookmark.start, - end = bookmark.end && bookmark.id - ? this.document.getElementById(bookmark.end) - : bookmark.end; - this.setStartBefore(start); - domUtils.remove(start); - if (end) { - this.setEndBefore(end); - domUtils.remove(end); - } else { - this.collapse(true); - } - return this; - }, - - /** - * 调整range的边界,使其"放大"到最近的父节点 - * @method enlarge - * @remind 会引起选区的变化 - * @return { UE.dom.Range } 当前range对象 - */ - - /** - * 调整range的边界,使其"放大"到最近的父节点,根据参数 toBlock 的取值, 可以 - * 要求扩大之后的父节点是block节点 - * @method enlarge - * @param { Boolean } toBlock 是否要求扩大之后的父节点必须是block节点 - * @return { UE.dom.Range } 当前range对象 - */ - enlarge: function(toBlock, stopFn) { - var isBody = domUtils.isBody, - pre, - node, - tmp = this.document.createTextNode(""); - if (toBlock) { - node = this.startContainer; - if (node.nodeType == 1) { - if (node.childNodes[this.startOffset]) { - pre = node = node.childNodes[this.startOffset]; - } else { - node.appendChild(tmp); - pre = node = tmp; - } - } else { - pre = node; - } - while (1) { - if (domUtils.isBlockElm(node)) { - node = pre; - while ((pre = node.previousSibling) && !domUtils.isBlockElm(pre)) { - node = pre; - } - this.setStartBefore(node); - break; - } - pre = node; - node = node.parentNode; - } - node = this.endContainer; - if (node.nodeType == 1) { - if ((pre = node.childNodes[this.endOffset])) { - node.insertBefore(tmp, pre); - } else { - node.appendChild(tmp); - } - pre = node = tmp; - } else { - pre = node; - } - while (1) { - if (domUtils.isBlockElm(node)) { - node = pre; - while ((pre = node.nextSibling) && !domUtils.isBlockElm(pre)) { - node = pre; - } - this.setEndAfter(node); - break; - } - pre = node; - node = node.parentNode; - } - if (tmp.parentNode === this.endContainer) { - this.endOffset--; - } - domUtils.remove(tmp); - } - - // 扩展边界到最大 - if (!this.collapsed) { - while (this.startOffset == 0) { - if (stopFn && stopFn(this.startContainer)) { - break; - } - if (isBody(this.startContainer)) { - break; - } - this.setStartBefore(this.startContainer); - } - while ( - this.endOffset == - (this.endContainer.nodeType == 1 - ? this.endContainer.childNodes.length - : this.endContainer.nodeValue.length) - ) { - if (stopFn && stopFn(this.endContainer)) { - break; - } - if (isBody(this.endContainer)) { - break; - } - this.setEndAfter(this.endContainer); - } - } - return this; - }, - enlargeToBlockElm: function(ignoreEnd) { - while (!domUtils.isBlockElm(this.startContainer)) { - this.setStartBefore(this.startContainer); - } - if (!ignoreEnd) { - while (!domUtils.isBlockElm(this.endContainer)) { - this.setEndAfter(this.endContainer); - } - } - return this; - }, - /** - * 调整Range的边界,使其"缩小"到最合适的位置 - * @method adjustmentBoundary - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.Range:shrinkBoundary() - */ - adjustmentBoundary: function() { - if (!this.collapsed) { - while ( - !domUtils.isBody(this.startContainer) && - this.startOffset == - this.startContainer[ - this.startContainer.nodeType == 3 ? "nodeValue" : "childNodes" - ].length && - this.startContainer[ - this.startContainer.nodeType == 3 ? "nodeValue" : "childNodes" - ].length - ) { - this.setStartAfter(this.startContainer); - } - while ( - !domUtils.isBody(this.endContainer) && - !this.endOffset && - this.endContainer[ - this.endContainer.nodeType == 3 ? "nodeValue" : "childNodes" - ].length - ) { - this.setEndBefore(this.endContainer); - } - } - return this; - }, - - /** - * 给range选区中的内容添加给定的inline标签 - * @method applyInlineStyle - * @param { String } tagName 需要添加的标签名 - * @example - * ```html - *

    xxxx[xxxx]x

    ==> range.applyInlineStyle("strong") ==>

    xxxx[xxxx]x

    - * ``` - */ - - /** - * 给range选区中的内容添加给定的inline标签, 并且为标签附加上一些初始化属性。 - * @method applyInlineStyle - * @param { String } tagName 需要添加的标签名 - * @param { Object } attrs 跟随新添加的标签的属性 - * @return { UE.dom.Range } 当前选区 - * @example - * ```html - *

    xxxx[xxxx]x

    - * - * ==> - * - * - * range.applyInlineStyle("strong",{"style":"font-size:12px"}) - * - * ==> - * - *

    xxxx[xxxx]x

    - * ``` - */ - applyInlineStyle: function(tagName, attrs, list) { - if (this.collapsed) return this; - this.trimBoundary() - .enlarge(false, function(node) { - return node.nodeType == 1 && domUtils.isBlockElm(node); - }) - .adjustmentBoundary(); - var bookmark = this.createBookmark(), - end = bookmark.end, - filterFn = function(node) { - return node.nodeType == 1 - ? node.tagName.toLowerCase() != "br" - : !domUtils.isWhitespace(node); - }, - current = domUtils.getNextDomNode(bookmark.start, false, filterFn), - node, - pre, - range = this.cloneRange(); - while ( - current && - domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING - ) { - if (current.nodeType == 3 || dtd[tagName][current.tagName]) { - range.setStartBefore(current); - node = current; - while ( - node && - (node.nodeType == 3 || dtd[tagName][node.tagName]) && - node !== end - ) { - pre = node; - node = domUtils.getNextDomNode( - node, - node.nodeType == 1, - null, - function(parent) { - return dtd[tagName][parent.tagName]; - } - ); - } - var frag = range.setEndAfter(pre).extractContents(), - elm; - if (list && list.length > 0) { - var level, top; - top = level = list[0].cloneNode(false); - for (var i = 1, ci; (ci = list[i++]); ) { - level.appendChild(ci.cloneNode(false)); - level = level.firstChild; - } - elm = level; - } else { - elm = range.document.createElement(tagName); - } - if (attrs) { - domUtils.setAttributes(elm, attrs); - } - elm.appendChild(frag); - //针对嵌套span的全局样式指定,做容错处理 - if (elm.tagName == "SPAN" && attrs && attrs.style) { - utils.each(elm.getElementsByTagName("span"), function(s) { - s.style.cssText = s.style.cssText + ";" + attrs.style; - }); - } - range.insertNode(list ? top : elm); - //处理下滑线在a上的情况 - var aNode; - if ( - tagName == "span" && - attrs.style && - /text\-decoration/.test(attrs.style) && - (aNode = domUtils.findParentByTagName(elm, "a", true)) - ) { - domUtils.setAttributes(aNode, attrs); - domUtils.remove(elm, true); - elm = aNode; - } else { - domUtils.mergeSibling(elm); - domUtils.clearEmptySibling(elm); - } - //去除子节点相同的 - domUtils.mergeChild(elm, attrs); - current = domUtils.getNextDomNode(elm, false, filterFn); - domUtils.mergeToParent(elm); - if (node === end) { - break; - } - } else { - current = domUtils.getNextDomNode(current, true, filterFn); - } - } - return this.moveToBookmark(bookmark); - }, - - /** - * 移除当前选区内指定的inline标签,但保留其中的内容 - * @method removeInlineStyle - * @param { String } tagName 需要移除的标签名 - * @return { UE.dom.Range } 当前的range对象 - * @example - * ```html - * xx[xxxxyyyzz]z => range.removeInlineStyle(["em"]) => xx[xxxxyyyzz]z - * ``` - */ - - /** - * 移除当前选区内指定的一组inline标签,但保留其中的内容 - * @method removeInlineStyle - * @param { Array } tagNameArr 需要移除的标签名的数组 - * @return { UE.dom.Range } 当前的range对象 - * @see UE.dom.Range:removeInlineStyle(String) - */ - removeInlineStyle: function(tagNames) { - if (this.collapsed) return this; - tagNames = utils.isArray(tagNames) ? tagNames : [tagNames]; - this.shrinkBoundary().adjustmentBoundary(); - var start = this.startContainer, - end = this.endContainer; - while (1) { - if (start.nodeType == 1) { - if (utils.indexOf(tagNames, start.tagName.toLowerCase()) > -1) { - break; - } - if (start.tagName.toLowerCase() == "body") { - start = null; - break; - } - } - start = start.parentNode; - } - while (1) { - if (end.nodeType == 1) { - if (utils.indexOf(tagNames, end.tagName.toLowerCase()) > -1) { - break; - } - if (end.tagName.toLowerCase() == "body") { - end = null; - break; - } - } - end = end.parentNode; - } - var bookmark = this.createBookmark(), - frag, - tmpRange; - if (start) { - tmpRange = this.cloneRange() - .setEndBefore(bookmark.start) - .setStartBefore(start); - frag = tmpRange.extractContents(); - tmpRange.insertNode(frag); - domUtils.clearEmptySibling(start, true); - start.parentNode.insertBefore(bookmark.start, start); - } - if (end) { - tmpRange = this.cloneRange() - .setStartAfter(bookmark.end) - .setEndAfter(end); - frag = tmpRange.extractContents(); - tmpRange.insertNode(frag); - domUtils.clearEmptySibling(end, false, true); - end.parentNode.insertBefore(bookmark.end, end.nextSibling); - } - var current = domUtils.getNextDomNode(bookmark.start, false, function( - node - ) { - return node.nodeType == 1; - }), - next; - while (current && current !== bookmark.end) { - next = domUtils.getNextDomNode(current, true, function(node) { - return node.nodeType == 1; - }); - if (utils.indexOf(tagNames, current.tagName.toLowerCase()) > -1) { - domUtils.remove(current, true); - } - current = next; - } - return this.moveToBookmark(bookmark); - }, - - /** - * 获取当前选中的自闭合的节点 - * @method getClosedNode - * @return { Node | NULL } 如果当前选中的是自闭合节点, 则返回该节点, 否则返回NULL - */ - getClosedNode: function() { - var node; - if (!this.collapsed) { - var range = this.cloneRange().adjustmentBoundary().shrinkBoundary(); - if (selectOneNode(range)) { - var child = range.startContainer.childNodes[range.startOffset]; - if ( - child && - child.nodeType == 1 && - (dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName]) - ) { - node = child; - } - } - } - return node; - }, - - /** - * 在页面上高亮range所表示的选区 - * @method select - * @return { UE.dom.Range } 返回当前Range对象 - */ - //这里不区分ie9以上,trace:3824 - select: browser.ie - ? function(noFillData, textRange) { - var nativeRange; - if (!this.collapsed) this.shrinkBoundary(); - var node = this.getClosedNode(); - if (node && !textRange) { - try { - nativeRange = this.document.body.createControlRange(); - nativeRange.addElement(node); - nativeRange.select(); - } catch (e) {} - return this; - } - var bookmark = this.createBookmark(), - start = bookmark.start, - end; - nativeRange = this.document.body.createTextRange(); - nativeRange.moveToElementText(start); - nativeRange.moveStart("character", 1); - if (!this.collapsed) { - var nativeRangeEnd = this.document.body.createTextRange(); - end = bookmark.end; - nativeRangeEnd.moveToElementText(end); - nativeRange.setEndPoint("EndToEnd", nativeRangeEnd); - } else { - if (!noFillData && this.startContainer.nodeType != 3) { - //使用|x固定住光标 - var tmpText = this.document.createTextNode(fillChar), - tmp = this.document.createElement("span"); - tmp.appendChild(this.document.createTextNode(fillChar)); - start.parentNode.insertBefore(tmp, start); - start.parentNode.insertBefore(tmpText, start); - //当点b,i,u时,不能清除i上边的b - removeFillData(this.document, tmpText); - fillData = tmpText; - mergeSibling(tmp, "previousSibling"); - mergeSibling(start, "nextSibling"); - nativeRange.moveStart("character", -1); - nativeRange.collapse(true); - } - } - this.moveToBookmark(bookmark); - tmp && domUtils.remove(tmp); - //IE在隐藏状态下不支持range操作,catch一下 - try { - nativeRange.select(); - } catch (e) {} - return this; - } - : function(notInsertFillData) { - function checkOffset(rng) { - function check(node, offset, dir) { - if (node.nodeType == 3 && node.nodeValue.length < offset) { - rng[dir + "Offset"] = node.nodeValue.length; - } - } - check(rng.startContainer, rng.startOffset, "start"); - check(rng.endContainer, rng.endOffset, "end"); - } - var win = domUtils.getWindow(this.document), - sel = win.getSelection(), - txtNode; - //FF下关闭自动长高时滚动条在关闭dialog时会跳 - //ff下如果不body.focus将不能定位闭合光标到编辑器内 - browser.gecko ? this.document.body.focus() : win.focus(); - if (sel) { - sel.removeAllRanges(); - // trace:870 chrome/safari后边是br对于闭合得range不能定位 所以去掉了判断 - // this.startContainer.nodeType != 3 &&! ((child = this.startContainer.childNodes[this.startOffset]) && child.nodeType == 1 && child.tagName == 'BR' - if (this.collapsed && !notInsertFillData) { - // //opear如果没有节点接着,原生的不能够定位,不能在body的第一级插入空白节点 - // if (notInsertFillData && browser.opera && !domUtils.isBody(this.startContainer) && this.startContainer.nodeType == 1) { - // var tmp = this.document.createTextNode(''); - // this.insertNode(tmp).setStart(tmp, 0).collapse(true); - // } - // - //处理光标落在文本节点的情况 - //处理以下的情况 - //|xxxx - //xxxx|xxxx - //xxxx| - var start = this.startContainer, - child = start; - if (start.nodeType == 1) { - child = start.childNodes[this.startOffset]; - } - if ( - !(start.nodeType == 3 && this.startOffset) && - (child - ? !child.previousSibling || - child.previousSibling.nodeType != 3 - : !start.lastChild || start.lastChild.nodeType != 3) - ) { - txtNode = this.document.createTextNode(fillChar); - //跟着前边走 - this.insertNode(txtNode); - removeFillData(this.document, txtNode); - mergeSibling(txtNode, "previousSibling"); - mergeSibling(txtNode, "nextSibling"); - fillData = txtNode; - this.setStart(txtNode, browser.webkit ? 1 : 0).collapse(true); - } - } - var nativeRange = this.document.createRange(); - if ( - this.collapsed && - browser.opera && - this.startContainer.nodeType == 1 - ) { - var child = this.startContainer.childNodes[this.startOffset]; - if (!child) { - //往前靠拢 - child = this.startContainer.lastChild; - if (child && domUtils.isBr(child)) { - this.setStartBefore(child).collapse(true); - } - } else { - //向后靠拢 - while (child && domUtils.isBlockElm(child)) { - if (child.nodeType == 1 && child.childNodes[0]) { - child = child.childNodes[0]; - } else { - break; - } - } - child && this.setStartBefore(child).collapse(true); - } - } - //是createAddress最后一位算的不准,现在这里进行微调 - checkOffset(this); - nativeRange.setStart(this.startContainer, this.startOffset); - nativeRange.setEnd(this.endContainer, this.endOffset); - sel.addRange(nativeRange); - } - return this; - }, - - /** - * 滚动到当前range开始的位置 - * @method scrollToView - * @param { Window } win 当前range对象所属的window对象 - * @return { UE.dom.Range } 当前Range对象 - */ - - /** - * 滚动到距离当前range开始位置 offset 的位置处 - * @method scrollToView - * @param { Window } win 当前range对象所属的window对象 - * @param { Number } offset 距离range开始位置处的偏移量, 如果为正数, 则向下偏移, 反之, 则向上偏移 - * @return { UE.dom.Range } 当前Range对象 - */ - scrollToView: function(win, offset) { - win = win ? window : domUtils.getWindow(this.document); - var me = this, - span = me.document.createElement("span"); - //trace:717 - span.innerHTML = " "; - me.cloneRange().insertNode(span); - domUtils.scrollToView(span, win, offset); - domUtils.remove(span); - return me; - }, - - /** - * 判断当前选区内容是否占位符 - * @private - * @method inFillChar - * @return { Boolean } 如果是占位符返回true,否则返回false - */ - inFillChar: function() { - var start = this.startContainer; - if ( - this.collapsed && - start.nodeType == 3 && - start.nodeValue.replace(new RegExp("^" + domUtils.fillChar), "") - .length + - 1 == - start.nodeValue.length - ) { - return true; - } - return false; - }, - - /** - * 保存 - * @method createAddress - * @private - * @return { Boolean } 返回开始和结束的位置 - * @example - * ```html - * - *

    - * aaaa - * - * - * bbbb - * - * - *

    - * - * - * - * ``` - */ - createAddress: function(ignoreEnd, ignoreTxt) { - var addr = {}, - me = this; - - function getAddress(isStart) { - var node = isStart ? me.startContainer : me.endContainer; - var parents = domUtils.findParents(node, true, function(node) { - return !domUtils.isBody(node); - }), - addrs = []; - for (var i = 0, ci; (ci = parents[i++]); ) { - addrs.push(domUtils.getNodeIndex(ci, ignoreTxt)); - } - var firstIndex = 0; - - if (ignoreTxt) { - if (node.nodeType == 3) { - var tmpNode = node.previousSibling; - while (tmpNode && tmpNode.nodeType == 3) { - firstIndex += tmpNode.nodeValue.replace(fillCharReg, "").length; - tmpNode = tmpNode.previousSibling; - } - firstIndex += isStart ? me.startOffset : me.endOffset; // - (fillCharReg.test(node.nodeValue) ? 1 : 0 ) - } else { - node = node.childNodes[isStart ? me.startOffset : me.endOffset]; - if (node) { - firstIndex = domUtils.getNodeIndex(node, ignoreTxt); - } else { - node = isStart ? me.startContainer : me.endContainer; - var first = node.firstChild; - while (first) { - if (domUtils.isFillChar(first)) { - first = first.nextSibling; - continue; - } - firstIndex++; - if (first.nodeType == 3) { - while (first && first.nodeType == 3) { - first = first.nextSibling; - } - } else { - first = first.nextSibling; - } - } - } - } - } else { - firstIndex = isStart - ? domUtils.isFillChar(node) ? 0 : me.startOffset - : me.endOffset; - } - if (firstIndex < 0) { - firstIndex = 0; - } - addrs.push(firstIndex); - return addrs; - } - addr.startAddress = getAddress(true); - if (!ignoreEnd) { - addr.endAddress = me.collapsed - ? [].concat(addr.startAddress) - : getAddress(); - } - return addr; - }, - - /** - * 保存 - * @method createAddress - * @private - * @return { Boolean } 返回开始和结束的位置 - * @example - * ```html - * - *

    - * aaaa - * - * - * bbbb - * - * - *

    - * - * - * - * ``` - */ - moveToAddress: function(addr, ignoreEnd) { - var me = this; - function getNode(address, isStart) { - var tmpNode = me.document.body, - parentNode, - offset; - for (var i = 0, ci, l = address.length; i < l; i++) { - ci = address[i]; - parentNode = tmpNode; - tmpNode = tmpNode.childNodes[ci]; - if (!tmpNode) { - offset = ci; - break; - } - } - if (isStart) { - if (tmpNode) { - me.setStartBefore(tmpNode); - } else { - me.setStart(parentNode, offset); - } - } else { - if (tmpNode) { - me.setEndBefore(tmpNode); - } else { - me.setEnd(parentNode, offset); - } - } - } - getNode(addr.startAddress, true); - !ignoreEnd && addr.endAddress && getNode(addr.endAddress); - return me; - }, - - /** - * 判断给定的Range对象是否和当前Range对象表示的是同一个选区 - * @method equals - * @param { UE.dom.Range } 需要判断的Range对象 - * @return { Boolean } 如果给定的Range对象与当前Range对象表示的是同一个选区, 则返回true, 否则返回false - */ - equals: function(rng) { - for (var p in this) { - if (this.hasOwnProperty(p)) { - if (this[p] !== rng[p]) return false; - } - } - return true; - }, - - /** - * 遍历range内的节点。每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点 - * 作为其参数。 - * @method traversal - * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数 - * @return { UE.dom.Range } 当前range对象 - * @example - * ```html - * - * - * - * - * - * - * - * - * - * - * ``` - */ - - /** - * 遍历range内的节点。 - * 每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点 - * 作为其参数。 - * 可以通过参数项 filterFn 来指定一个过滤器, 只有符合该过滤器过滤规则的节点才会触 - * 发doFn函数的执行 - * @method traversal - * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数 - * @param { Function } filterFn 过滤器, 该函数接受当前遍历的节点作为参数, 如果该节点满足过滤 - * 规则, 请返回true, 该节点会触发doFn, 否则, 请返回false, 则该节点不 - * 会触发doFn。 - * @return { UE.dom.Range } 当前range对象 - * @see UE.dom.Range:traversal(Function) - * @example - * ```html - * - * - * - * - * - * - * - * - * - * - * ``` - */ - traversal: function(doFn, filterFn) { - if (this.collapsed) return this; - var bookmark = this.createBookmark(), - end = bookmark.end, - current = domUtils.getNextDomNode(bookmark.start, false, filterFn); - while ( - current && - current !== end && - domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING - ) { - var tmpNode = domUtils.getNextDomNode(current, false, filterFn); - doFn(current); - current = tmpNode; - } - return this.moveToBookmark(bookmark); - } - }; - })(); - - - // core/Selection.js - /** - * 选集 - * @file - * @module UE.dom - * @class Selection - * @since 1.2.6.1 - */ - - /** - * 选区集合 - * @unfile - * @module UE.dom - * @class Selection - */ - (function() { - function getBoundaryInformation(range, start) { - var getIndex = domUtils.getNodeIndex; - range = range.duplicate(); - range.collapse(start); - var parent = range.parentElement(); - //如果节点里没有子节点,直接退出 - if (!parent.hasChildNodes()) { - return { container: parent, offset: 0 }; - } - var siblings = parent.children, - child, - testRange = range.duplicate(), - startIndex = 0, - endIndex = siblings.length - 1, - index = -1, - distance; - while (startIndex <= endIndex) { - index = Math.floor((startIndex + endIndex) / 2); - child = siblings[index]; - testRange.moveToElementText(child); - var position = testRange.compareEndPoints("StartToStart", range); - if (position > 0) { - endIndex = index - 1; - } else if (position < 0) { - startIndex = index + 1; - } else { - //trace:1043 - return { container: parent, offset: getIndex(child) }; - } - } - if (index == -1) { - testRange.moveToElementText(parent); - testRange.setEndPoint("StartToStart", range); - distance = testRange.text.replace(/(\r\n|\r)/g, "\n").length; - siblings = parent.childNodes; - if (!distance) { - child = siblings[siblings.length - 1]; - return { container: child, offset: child.nodeValue.length }; - } - - var i = siblings.length; - while (distance > 0) { - distance -= siblings[--i].nodeValue.length; - } - return { container: siblings[i], offset: -distance }; - } - testRange.collapse(position > 0); - testRange.setEndPoint(position > 0 ? "StartToStart" : "EndToStart", range); - distance = testRange.text.replace(/(\r\n|\r)/g, "\n").length; - if (!distance) { - return dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName] - ? { - container: parent, - offset: getIndex(child) + (position > 0 ? 0 : 1) - } - : { - container: child, - offset: position > 0 ? 0 : child.childNodes.length - }; - } - while (distance > 0) { - try { - var pre = child; - child = child[position > 0 ? "previousSibling" : "nextSibling"]; - distance -= child.nodeValue.length; - } catch (e) { - return { container: parent, offset: getIndex(pre) }; - } - } - return { - container: child, - offset: position > 0 ? -distance : child.nodeValue.length + distance - }; - } - - /** - * 将ieRange转换为Range对象 - * @param {Range} ieRange ieRange对象 - * @param {Range} range Range对象 - * @return {Range} range 返回转换后的Range对象 - */ - function transformIERangeToRange(ieRange, range) { - if (ieRange.item) { - range.selectNode(ieRange.item(0)); - } else { - var bi = getBoundaryInformation(ieRange, true); - range.setStart(bi.container, bi.offset); - if (ieRange.compareEndPoints("StartToEnd", ieRange) != 0) { - bi = getBoundaryInformation(ieRange, false); - range.setEnd(bi.container, bi.offset); - } - } - return range; - } - - /** - * 获得ieRange - * @param {Selection} sel Selection对象 - * @return {ieRange} 得到ieRange - */ - function _getIERange(sel) { - var ieRange; - //ie下有可能报错 - try { - ieRange = sel.getNative().createRange(); - } catch (e) { - return null; - } - var el = ieRange.item ? ieRange.item(0) : ieRange.parentElement(); - if ((el.ownerDocument || el) === sel.document) { - return ieRange; - } - return null; - } - - var Selection = (dom.Selection = function(doc) { - var me = this, - iframe; - me.document = doc; - if (browser.ie9below) { - iframe = domUtils.getWindow(doc).frameElement; - domUtils.on(iframe, "beforedeactivate", function() { - me._bakIERange = me.getIERange(); - }); - domUtils.on(iframe, "activate", function() { - try { - if (!_getIERange(me) && me._bakIERange) { - me._bakIERange.select(); - } - } catch (ex) {} - me._bakIERange = null; - }); - } - iframe = doc = null; - }); - - Selection.prototype = { - rangeInBody: function(rng, txtRange) { - var node = browser.ie9below || txtRange - ? rng.item ? rng.item() : rng.parentElement() - : rng.startContainer; - - return node === this.document.body || domUtils.inDoc(node, this.document); - }, - - /** - * 获取原生seleciton对象 - * @method getNative - * @return { Object } 获得selection对象 - * @example - * ```javascript - * editor.selection.getNative(); - * ``` - */ - getNative: function() { - var doc = this.document; - try { - return !doc - ? null - : browser.ie9below - ? doc.selection - : domUtils.getWindow(doc).getSelection(); - } catch (e) { - return null; - } - }, - - /** - * 获得ieRange - * @method getIERange - * @return { Object } 返回ie原生的Range - * @example - * ```javascript - * editor.selection.getIERange(); - * ``` - */ - getIERange: function() { - var ieRange = _getIERange(this); - if (!ieRange) { - if (this._bakIERange) { - return this._bakIERange; - } - } - return ieRange; - }, - - /** - * 缓存当前选区的range和选区的开始节点 - * @method cache - */ - cache: function() { - this.clear(); - this._cachedRange = this.getRange(); - this._cachedStartElement = this.getStart(); - this._cachedStartElementPath = this.getStartElementPath(); - }, - - /** - * 获取选区开始位置的父节点到body - * @method getStartElementPath - * @return { Array } 返回父节点集合 - * @example - * ```javascript - * editor.selection.getStartElementPath(); - * ``` - */ - getStartElementPath: function() { - if (this._cachedStartElementPath) { - return this._cachedStartElementPath; - } - var start = this.getStart(); - if (start) { - return domUtils.findParents(start, true, null, true); - } - return []; - }, - - /** - * 清空缓存 - * @method clear - */ - clear: function() { - this._cachedStartElementPath = this._cachedRange = this._cachedStartElement = null; - }, - - /** - * 编辑器是否得到了选区 - * @method isFocus - */ - isFocus: function() { - try { - if (browser.ie9below) { - var nativeRange = _getIERange(this); - return !!(nativeRange && this.rangeInBody(nativeRange)); - } else { - return !!this.getNative().rangeCount; - } - } catch (e) { - return false; - } - }, - - /** - * 获取选区对应的Range - * @method getRange - * @return { Object } 得到Range对象 - * @example - * ```javascript - * editor.selection.getRange(); - * ``` - */ - getRange: function() { - var me = this; - function optimze(range) { - var child = me.document.body.firstChild, - collapsed = range.collapsed; - while (child && child.firstChild) { - range.setStart(child, 0); - child = child.firstChild; - } - if (!range.startContainer) { - range.setStart(me.document.body, 0); - } - if (collapsed) { - range.collapse(true); - } - } - - if (me._cachedRange != null) { - return this._cachedRange; - } - var range = new baidu.editor.dom.Range(me.document); - - if (browser.ie9below) { - var nativeRange = me.getIERange(); - if (nativeRange) { - //备份的_bakIERange可能已经实效了,dom树发生了变化比如从源码模式切回来,所以try一下,实效就放到body开始位置 - try { - transformIERangeToRange(nativeRange, range); - } catch (e) { - optimze(range); - } - } else { - optimze(range); - } - } else { - var sel = me.getNative(); - if (sel && sel.rangeCount) { - var firstRange = sel.getRangeAt(0); - var lastRange = sel.getRangeAt(sel.rangeCount - 1); - range - .setStart(firstRange.startContainer, firstRange.startOffset) - .setEnd(lastRange.endContainer, lastRange.endOffset); - if ( - range.collapsed && - domUtils.isBody(range.startContainer) && - !range.startOffset - ) { - optimze(range); - } - } else { - //trace:1734 有可能已经不在dom树上了,标识的节点 - if ( - this._bakRange && - domUtils.inDoc(this._bakRange.startContainer, this.document) - ) { - return this._bakRange; - } - optimze(range); - } - } - return (this._bakRange = range); - }, - - /** - * 获取开始元素,用于状态反射 - * @method getStart - * @return { Element } 获得开始元素 - * @example - * ```javascript - * editor.selection.getStart(); - * ``` - */ - getStart: function() { - if (this._cachedStartElement) { - return this._cachedStartElement; - } - var range = browser.ie9below ? this.getIERange() : this.getRange(), - tmpRange, - start, - tmp, - parent; - if (browser.ie9below) { - if (!range) { - //todo 给第一个值可能会有问题 - return this.document.body.firstChild; - } - //control元素 - if (range.item) { - return range.item(0); - } - tmpRange = range.duplicate(); - //修正ie下x[xx] 闭合后 x|xx - tmpRange.text.length > 0 && tmpRange.moveStart("character", 1); - tmpRange.collapse(1); - start = tmpRange.parentElement(); - parent = tmp = range.parentElement(); - while ((tmp = tmp.parentNode)) { - if (tmp == start) { - start = parent; - break; - } - } - } else { - range.shrinkBoundary(); - start = range.startContainer; - if (start.nodeType == 1 && start.hasChildNodes()) { - start = - start.childNodes[ - Math.min(start.childNodes.length - 1, range.startOffset) - ]; - } - if (start.nodeType == 3) { - return start.parentNode; - } - } - return start; - }, - - /** - * 得到选区中的文本 - * @method getText - * @return { String } 选区中包含的文本 - * @example - * ```javascript - * editor.selection.getText(); - * ``` - */ - getText: function() { - var nativeSel, nativeRange; - if (this.isFocus() && (nativeSel = this.getNative())) { - nativeRange = browser.ie9below - ? nativeSel.createRange() - : nativeSel.getRangeAt(0); - return browser.ie9below ? nativeRange.text : nativeRange.toString(); - } - return ""; - }, - - /** - * 清除选区 - * @method clearRange - * @example - * ```javascript - * editor.selection.clearRange(); - * ``` - */ - clearRange: function() { - this.getNative()[browser.ie9below ? "empty" : "removeAllRanges"](); - } - }; - })(); - - - // core/Editor.js - /** - * 编辑器主类,包含编辑器提供的大部分公用接口 - * @file - * @module UE - * @class Editor - * @since 1.2.6.1 - */ - - /** - * UEditor公用空间,UEditor所有的功能都挂载在该空间下 - * @unfile - * @module UE - */ - - /** - * UEditor的核心类,为用户提供与编辑器交互的接口。 - * @unfile - * @module UE - * @class Editor - */ - - (function() { - var uid = 0, - _selectionChangeTimer; - - /** - * 获取编辑器的html内容,赋值到编辑器所在表单的textarea文本域里面 - * @private - * @method setValue - * @param { UE.Editor } editor 编辑器事例 - */ - function setValue(form, editor) { - var textarea; - if (editor.options.textarea) { - if (utils.isString(editor.options.textarea)) { - for ( - var i = 0, ti, tis = domUtils.getElementsByTagName(form, "textarea"); - (ti = tis[i++]); - - ) { - if (ti.id == "ueditor_textarea_" + editor.options.textarea) { - textarea = ti; - break; - } - } - } else { - textarea = editor.textarea; - } - } - if (!textarea) { - form.appendChild( - (textarea = domUtils.createElement(document, "textarea", { - name: editor.options.textarea, - id: "ueditor_textarea_" + editor.options.textarea, - style: "display:none" - })) - ); - //不要产生多个textarea - editor.textarea = textarea; - } - !textarea.getAttribute("name") && - textarea.setAttribute("name", editor.options.textarea); - textarea.value = editor.hasContents() - ? editor.options.allHtmlEnabled - ? editor.getAllHtml() - : editor.getContent(null, null, true) - : ""; - } - function loadPlugins(me) { - //初始化插件 - for (var pi in UE.plugins) { - UE.plugins[pi].call(me); - } - } - function checkCurLang(I18N) { - for (var lang in I18N) { - return lang; - } - } - - function langReadied(me) { - me.langIsReady = true; - - me.fireEvent("langReady"); - } - - /** - * 编辑器准备就绪后会触发该事件 - * @module UE - * @class Editor - * @event ready - * @remind render方法执行完成之后,会触发该事件 - * @remind - * @example - * ```javascript - * editor.addListener( 'ready', function( editor ) { - * editor.execCommand( 'focus' ); //编辑器家在完成后,让编辑器拿到焦点 - * } ); - * ``` - */ - /** - * 执行destroy方法,会触发该事件 - * @module UE - * @class Editor - * @event destroy - * @see UE.Editor:destroy() - */ - /** - * 执行reset方法,会触发该事件 - * @module UE - * @class Editor - * @event reset - * @see UE.Editor:reset() - */ - /** - * 执行focus方法,会触发该事件 - * @module UE - * @class Editor - * @event focus - * @see UE.Editor:focus(Boolean) - */ - /** - * 语言加载完成会触发该事件 - * @module UE - * @class Editor - * @event langReady - */ - /** - * 运行命令之后会触发该命令 - * @module UE - * @class Editor - * @event beforeExecCommand - */ - /** - * 运行命令之后会触发该命令 - * @module UE - * @class Editor - * @event afterExecCommand - */ - /** - * 运行命令之前会触发该命令 - * @module UE - * @class Editor - * @event firstBeforeExecCommand - */ - /** - * 在getContent方法执行之前会触发该事件 - * @module UE - * @class Editor - * @event beforeGetContent - * @see UE.Editor:getContent() - */ - /** - * 在getContent方法执行之后会触发该事件 - * @module UE - * @class Editor - * @event afterGetContent - * @see UE.Editor:getContent() - */ - /** - * 在getAllHtml方法执行时会触发该事件 - * @module UE - * @class Editor - * @event getAllHtml - * @see UE.Editor:getAllHtml() - */ - /** - * 在setContent方法执行之前会触发该事件 - * @module UE - * @class Editor - * @event beforeSetContent - * @see UE.Editor:setContent(String) - */ - /** - * 在setContent方法执行之后会触发该事件 - * @module UE - * @class Editor - * @event afterSetContent - * @see UE.Editor:setContent(String) - */ - /** - * 每当编辑器内部选区发生改变时,将触发该事件 - * @event selectionchange - * @warning 该事件的触发非常频繁,不建议在该事件的处理过程中做重量级的处理 - * @example - * ```javascript - * editor.addListener( 'selectionchange', function( editor ) { - * console.log('选区发生改变'); - * } - */ - /** - * 在所有selectionchange的监听函数执行之前,会触发该事件 - * @module UE - * @class Editor - * @event beforeSelectionChange - * @see UE.Editor:selectionchange - */ - /** - * 在所有selectionchange的监听函数执行完之后,会触发该事件 - * @module UE - * @class Editor - * @event afterSelectionChange - * @see UE.Editor:selectionchange - */ - /** - * 编辑器内容发生改变时会触发该事件 - * @module UE - * @class Editor - * @event contentChange - */ - - /** - * 以默认参数构建一个编辑器实例 - * @constructor - * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面 - * @example - * ```javascript - * var editor = new UE.Editor(); - * editor.execCommand('blod'); - * ``` - * @see UE.Config - */ - - /** - * 以给定的参数集合创建一个编辑器实例,对于未指定的参数,将应用默认参数。 - * @constructor - * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面 - * @param { Object } setting 创建编辑器的参数 - * @example - * ```javascript - * var editor = new UE.Editor(); - * editor.execCommand('blod'); - * ``` - * @see UE.Config - */ - var Editor = (UE.Editor = function(options) { - var me = this; - me.uid = uid++; - EventBase.call(me); - me.commands = {}; - me.options = utils.extend(utils.clone(options || {}), UEDITOR_CONFIG, true); - me.shortcutkeys = {}; - me.inputRules = []; - me.outputRules = []; - //设置默认的常用属性 - me.setOpt(Editor.defaultOptions(me)); - - /* 尝试异步加载后台配置 */ - me.loadServerConfig(); - - if (!utils.isEmptyObject(UE.I18N)) { - //修改默认的语言类型 - me.options.lang = checkCurLang(UE.I18N); - UE.plugin.load(me); - langReadied(me); - } else { - utils.loadFile( - document, - { - src: - me.options.langPath + - me.options.lang + - "/" + - me.options.lang + - ".js", - tag: "script", - type: "text/javascript", - defer: "defer" - }, - function() { - UE.plugin.load(me); - langReadied(me); - } - ); - } - - UE.instants["ueditorInstant" + me.uid] = me; - }); - Editor.prototype = { - registerCommand: function(name, obj) { - this.commands[name] = obj; - }, - /** - * 编辑器对外提供的监听ready事件的接口, 通过调用该方法,达到的效果与监听ready事件是一致的 - * @method ready - * @param { Function } fn 编辑器ready之后所执行的回调, 如果在注册事件之前编辑器已经ready,将会 - * 立即触发该回调。 - * @remind 需要等待编辑器加载完成后才能执行的代码,可以使用该方法传入 - * @example - * ```javascript - * editor.ready( function( editor ) { - * editor.setContent('初始化完毕'); - * } ); - * ``` - * @see UE.Editor.event:ready - */ - ready: function(fn) { - var me = this; - if (fn) { - me.isReady ? fn.apply(me) : me.addListener("ready", fn); - } - }, - - /** - * 该方法是提供给插件里面使用,设置配置项默认值 - * @method setOpt - * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置 - * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。 - * @param { String } key 编辑器的可接受的选项名称 - * @param { * } val 该选项可接受的值 - * @example - * ```javascript - * editor.setOpt( 'initContent', '欢迎使用编辑器' ); - * ``` - */ - - /** - * 该方法是提供给插件里面使用,以{key:value}集合的方式设置插件内用到的配置项默认值 - * @method setOpt - * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置 - * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。 - * @param { Object } options 将要设置的选项的键值对对象 - * @example - * ```javascript - * editor.setOpt( { - * 'initContent': '欢迎使用编辑器' - * } ); - * ``` - */ - setOpt: function(key, val) { - var obj = {}; - if (utils.isString(key)) { - obj[key] = val; - } else { - obj = key; - } - utils.extend(this.options, obj, true); - }, - getOpt: function(key) { - return this.options[key]; - }, - /** - * 销毁编辑器实例,使用textarea代替 - * @method destroy - * @example - * ```javascript - * editor.destroy(); - * ``` - */ - destroy: function() { - var me = this; - me.fireEvent("destroy"); - var container = me.container.parentNode; - var textarea = me.textarea; - if (!textarea) { - textarea = document.createElement("textarea"); - container.parentNode.insertBefore(textarea, container); - } else { - textarea.style.display = ""; - } - - textarea.style.width = me.iframe.offsetWidth + "px"; - textarea.style.height = me.iframe.offsetHeight + "px"; - textarea.value = me.getContent(); - textarea.id = me.key; - container.innerHTML = ""; - domUtils.remove(container); - var key = me.key; - //trace:2004 - for (var p in me) { - if (me.hasOwnProperty(p)) { - delete this[p]; - } - } - UE.delEditor(key); - }, - - /** - * 渲染编辑器的DOM到指定容器 - * @method render - * @param { String } containerId 指定一个容器ID - * @remind 执行该方法,会触发ready事件 - * @warning 必须且只能调用一次 - */ - - /** - * 渲染编辑器的DOM到指定容器 - * @method render - * @param { Element } containerDom 直接指定容器对象 - * @remind 执行该方法,会触发ready事件 - * @warning 必须且只能调用一次 - */ - render: function(container) { - var me = this, - options = me.options, - getStyleValue = function(attr) { - return parseInt(domUtils.getComputedStyle(container, attr)); - }; - if (utils.isString(container)) { - container = document.getElementById(container); - } - if (container) { - if (options.initialFrameWidth) { - options.minFrameWidth = options.initialFrameWidth; - } else { - options.minFrameWidth = options.initialFrameWidth = - container.offsetWidth; - } - if (options.initialFrameHeight) { - options.minFrameHeight = options.initialFrameHeight; - } else { - options.initialFrameHeight = options.minFrameHeight = - container.offsetHeight; - } - - container.style.width = /%$/.test(options.initialFrameWidth) - ? "100%" - : options.initialFrameWidth - - getStyleValue("padding-left") - - getStyleValue("padding-right") + - "px"; - container.style.height = /%$/.test(options.initialFrameHeight) - ? "100%" - : options.initialFrameHeight - - getStyleValue("padding-top") - - getStyleValue("padding-bottom") + - "px"; - - container.style.zIndex = options.zIndex; - - var html = - (ie && browser.version < 9 ? "" : "") + - "" + - "" + - "" + - (options.iframeCssUrl - ? "" - : "") + - (options.initialStyle - ? "" - : "") + - "" + - "" + - "" + - (options.iframeJsUrl - ? "" - : "") + - ""; - - container.appendChild( - domUtils.createElement(document, "iframe", { - id: "ueditor_" + me.uid, - width: "100%", - height: "100%", - frameborder: "0", - //先注释掉了,加的原因忘记了,但开启会直接导致全屏模式下内容多时不会出现滚动条 - // scrolling :'no', - src: - "javascript:void(function(){document.open();" + - (options.customDomain && document.domain != location.hostname - ? 'document.domain="' + document.domain + '";' - : "") + - 'document.write("' + - html + - '");document.close();}())' - }) - ); - container.style.overflow = "hidden"; - //解决如果是给定的百分比,会导致高度算不对的问题 - setTimeout(function() { - if (/%$/.test(options.initialFrameWidth)) { - options.minFrameWidth = options.initialFrameWidth = - container.offsetWidth; - //如果这里给定宽度,会导致ie在拖动窗口大小时,编辑区域不随着变化 - // container.style.width = options.initialFrameWidth + 'px'; - } - if (/%$/.test(options.initialFrameHeight)) { - options.minFrameHeight = options.initialFrameHeight = - container.offsetHeight; - container.style.height = options.initialFrameHeight + "px"; - } - }); - } - }, - - /** - * 编辑器初始化 - * @method _setup - * @private - * @param { Element } doc 编辑器Iframe中的文档对象 - */ - _setup: function(doc) { - var me = this, - options = me.options; - if (ie) { - doc.body.disabled = true; - doc.body.contentEditable = true; - doc.body.disabled = false; - } else { - doc.body.contentEditable = true; - } - doc.body.spellcheck = false; - me.document = doc; - me.window = doc.defaultView || doc.parentWindow; - me.iframe = me.window.frameElement; - me.body = doc.body; - me.selection = new dom.Selection(doc); - //gecko初始化就能得到range,无法判断isFocus了 - var geckoSel; - if (browser.gecko && (geckoSel = this.selection.getNative())) { - geckoSel.removeAllRanges(); - } - this._initEvents(); - //为form提交提供一个隐藏的textarea - for ( - var form = this.iframe.parentNode; - !domUtils.isBody(form); - form = form.parentNode - ) { - if (form.tagName == "FORM") { - me.form = form; - if (me.options.autoSyncData) { - domUtils.on(me.window, "blur", function() { - setValue(form, me); - }); - } else { - domUtils.on(form, "submit", function() { - setValue(this, me); - }); - } - break; - } - } - if (options.initialContent) { - if (options.autoClearinitialContent) { - var oldExecCommand = me.execCommand; - me.execCommand = function() { - me.fireEvent("firstBeforeExecCommand"); - return oldExecCommand.apply(me, arguments); - }; - this._setDefaultContent(options.initialContent); - } else this.setContent(options.initialContent, false, true); - } - - //编辑器不能为空内容 - - if (domUtils.isEmptyNode(me.body)) { - me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; - } - //如果要求focus, 就把光标定位到内容开始 - if (options.focus) { - setTimeout(function() { - me.focus(me.options.focusInEnd); - //如果自动清除开着,就不需要做selectionchange; - !me.options.autoClearinitialContent && me._selectionChange(); - }, 0); - } - if (!me.container) { - me.container = this.iframe.parentNode; - } - if (options.fullscreen && me.ui) { - me.ui.setFullScreen(true); - } - - try { - me.document.execCommand("2D-position", false, false); - } catch (e) {} - try { - me.document.execCommand("enableInlineTableEditing", false, false); - } catch (e) {} - try { - me.document.execCommand("enableObjectResizing", false, false); - } catch (e) {} - - //挂接快捷键 - me._bindshortcutKeys(); - me.isReady = 1; - me.fireEvent("ready"); - options.onready && options.onready.call(me); - if (!browser.ie9below) { - domUtils.on(me.window, ["blur", "focus"], function(e) { - //chrome下会出现alt+tab切换时,导致选区位置不对 - if (e.type == "blur") { - me._bakRange = me.selection.getRange(); - try { - me._bakNativeRange = me.selection.getNative().getRangeAt(0); - me.selection.getNative().removeAllRanges(); - } catch (e) { - me._bakNativeRange = null; - } - } else { - try { - me._bakRange && me._bakRange.select(); - } catch (e) {} - } - }); - } - //trace:1518 ff3.6body不够寛,会导致点击空白处无法获得焦点 - if (browser.gecko && browser.version <= 10902) { - //修复ff3.6初始化进来,不能点击获得焦点 - me.body.contentEditable = false; - setTimeout(function() { - me.body.contentEditable = true; - }, 100); - setInterval(function() { - me.body.style.height = me.iframe.offsetHeight - 20 + "px"; - }, 100); - } - - !options.isShow && me.setHide(); - options.readonly && me.setDisabled(); - }, - - /** - * 同步数据到编辑器所在的form - * 从编辑器的容器节点向上查找form元素,若找到,就同步编辑内容到找到的form里,为提交数据做准备,主要用于是手动提交的情况 - * 后台取得数据的键值,使用你容器上的name属性,如果没有就使用参数里的textarea项 - * @method sync - * @example - * ```javascript - * editor.sync(); - * form.sumbit(); //form变量已经指向了form元素 - * ``` - */ - - /** - * 根据传入的formId,在页面上查找要同步数据的表单,若找到,就同步编辑内容到找到的form里,为提交数据做准备 - * 后台取得数据的键值,该键值默认使用给定的编辑器容器的name属性,如果没有name属性则使用参数项里给定的“textarea”项 - * @method sync - * @param { String } formID 指定一个要同步数据的form的id,编辑器的数据会同步到你指定form下 - */ - sync: function(formId) { - var me = this, - form = formId - ? document.getElementById(formId) - : domUtils.findParent( - me.iframe.parentNode, - function(node) { - return node.tagName == "FORM"; - }, - true - ); - form && setValue(form, me); - }, - - /** - * 设置编辑器高度 - * @method setHeight - * @remind 当配置项autoHeightEnabled为真时,该方法无效 - * @param { Number } number 设置的高度值,纯数值,不带单位 - * @example - * ```javascript - * editor.setHeight(number); - * ``` - */ - setHeight: function(height, notSetHeight) { - if (height !== parseInt(this.iframe.parentNode.style.height)) { - this.iframe.parentNode.style.height = height + "px"; - } - !notSetHeight && - (this.options.minFrameHeight = this.options.initialFrameHeight = height); - this.body.style.height = height + "px"; - !notSetHeight && this.trigger("setHeight"); - }, - - /** - * 为编辑器的编辑命令提供快捷键 - * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口 - * @method addshortcutkey - * @param { Object } keyset 命令名和快捷键键值对对象,多个按钮的快捷键用“+”分隔 - * @example - * ```javascript - * editor.addshortcutkey({ - * "Bold" : "ctrl+66",//^B - * "Italic" : "ctrl+73", //^I - * }); - * ``` - */ - /** - * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口 - * @method addshortcutkey - * @param { String } cmd 触发快捷键时,响应的命令 - * @param { String } keys 快捷键的字符串,多个按钮用“+”分隔 - * @example - * ```javascript - * editor.addshortcutkey("Underline", "ctrl+85"); //^U - * ``` - */ - addshortcutkey: function(cmd, keys) { - var obj = {}; - if (keys) { - obj[cmd] = keys; - } else { - obj = cmd; - } - utils.extend(this.shortcutkeys, obj); - }, - - /** - * 对编辑器设置keydown事件监听,绑定快捷键和命令,当快捷键组合触发成功,会响应对应的命令 - * @method _bindshortcutKeys - * @private - */ - _bindshortcutKeys: function() { - var me = this, - shortcutkeys = this.shortcutkeys; - me.addListener("keydown", function(type, e) { - var keyCode = e.keyCode || e.which; - for (var i in shortcutkeys) { - var tmp = shortcutkeys[i].split(","); - for (var t = 0, ti; (ti = tmp[t++]); ) { - ti = ti.split(":"); - var key = ti[0], - param = ti[1]; - if ( - /^(ctrl)(\+shift)?\+(\d+)$/.test(key.toLowerCase()) || - /^(\d+)$/.test(key) - ) { - if ( - ((RegExp.$1 == "ctrl" ? e.ctrlKey || e.metaKey : 0) && - (RegExp.$2 != "" ? e[RegExp.$2.slice(1) + "Key"] : 1) && - keyCode == RegExp.$3) || - keyCode == RegExp.$1 - ) { - if (me.queryCommandState(i, param) != -1) - me.execCommand(i, param); - domUtils.preventDefault(e); - } - } - } - } - }); - }, - - /** - * 获取编辑器的内容 - * @method getContent - * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容 - * @return { String } 编辑器的内容字符串, 如果编辑器的内容为空,或者是空的标签内容(如:”<p><br/></p>“), 则返回空字符串 - * @example - * ```javascript - * //编辑器html内容:

    123456

    - * var content = editor.getContent(); //返回值:

    123456

    - * ``` - */ - - /** - * 获取编辑器的内容。 可以通过参数定义编辑器内置的判空规则 - * @method getContent - * @param { Function } fn 自定的判空规则, 要求该方法返回一个boolean类型的值, - * 代表当前编辑器的内容是否空, - * 如果返回true, 则该方法将直接返回空字符串;如果返回false,则编辑器将返回 - * 经过内置过滤规则处理后的内容。 - * @remind 该方法在处理包含有初始化内容的时候能起到很好的作用。 - * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容 - * @return { String } 编辑器的内容字符串 - * @example - * ```javascript - * // editor 是一个编辑器的实例 - * var content = editor.getContent( function ( editor ) { - * return editor.body.innerHTML === '欢迎使用UEditor'; //返回空字符串 - * } ); - * ``` - */ - getContent: function(cmd, fn, notSetCursor, ignoreBlank, formatter) { - var me = this; - if (cmd && utils.isFunction(cmd)) { - fn = cmd; - cmd = ""; - } - if (fn ? !fn() : !this.hasContents()) { - return ""; - } - me.fireEvent("beforegetcontent"); - var root = UE.htmlparser(me.body.innerHTML, ignoreBlank); - me.filterOutputRule(root); - me.fireEvent("aftergetcontent", cmd, root); - return root.toHtml(formatter); - }, - - /** - * 取得完整的html代码,可以直接显示成完整的html文档 - * @method getAllHtml - * @return { String } 编辑器的内容html文档字符串 - * @eaxmple - * ```javascript - * editor.getAllHtml(); //返回格式大致是: ...... - * ``` - */ - getAllHtml: function() { - var me = this, - headHtml = [], - html = ""; - me.fireEvent("getAllHtml", headHtml); - if (browser.ie && browser.version > 8) { - var headHtmlForIE9 = ""; - utils.each(me.document.styleSheets, function(si) { - headHtmlForIE9 += si.href - ? '' - : ""; - }); - utils.each(me.document.getElementsByTagName("script"), function(si) { - headHtmlForIE9 += si.outerHTML; - }); - } - return ( - "" + - (me.options.charset - ? '' - : "") + - (headHtmlForIE9 || - me.document.getElementsByTagName("head")[0].innerHTML) + - headHtml.join("\n") + - "" + - "" + - me.getContent(null, null, true) + - "" - ); - }, - - /** - * 得到编辑器的纯文本内容,但会保留段落格式 - * @method getPlainTxt - * @return { String } 编辑器带段落格式的纯文本内容字符串 - * @example - * ```javascript - * //编辑器html内容:

    1

    2

    - * console.log(editor.getPlainTxt()); //输出:"1\n2\n - * ``` - */ - getPlainTxt: function() { - var reg = new RegExp(domUtils.fillChar, "g"), - html = this.body.innerHTML.replace(/[\n\r]/g, ""); //ie要先去了\n在处理 - html = html - .replace(/<(p|div)[^>]*>(| )<\/\1>/gi, "\n") - .replace(//gi, "\n") - .replace(/<[^>/]+>/g, "") - .replace(/(\n)?<\/([^>]+)>/g, function(a, b, c) { - return dtd.$block[c] ? "\n" : b ? b : ""; - }); - //取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0 - return html - .replace(reg, "") - .replace(/\u00a0/g, " ") - .replace(/ /g, " "); - }, - - /** - * 获取编辑器中的纯文本内容,没有段落格式 - * @method getContentTxt - * @return { String } 编辑器不带段落格式的纯文本内容字符串 - * @example - * ```javascript - * //编辑器html内容:

    1

    2

    - * console.log(editor.getPlainTxt()); //输出:"12 - * ``` - */ - getContentTxt: function() { - var reg = new RegExp(domUtils.fillChar, "g"); - //取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0 - return this.body[browser.ie ? "innerText" : "textContent"] - .replace(reg, "") - .replace(/\u00a0/g, " "); - }, - - /** - * 设置编辑器的内容,可修改编辑器当前的html内容 - * @method setContent - * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容 - * @warning 该方法会触发selectionchange事件 - * @param { String } html 要插入的html内容 - * @example - * ```javascript - * editor.getContent('

    test

    '); - * ``` - */ - - /** - * 设置编辑器的内容,可修改编辑器当前的html内容 - * @method setContent - * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容 - * @warning 该方法会触发selectionchange事件 - * @param { String } html 要插入的html内容 - * @param { Boolean } isAppendTo 若传入true,不清空原来的内容,在最后插入内容,否则,清空内容再插入 - * @example - * ```javascript - * //假设设置前的编辑器内容是

    old text

    - * editor.setContent('

    new text

    ', true); //插入的结果是

    old text

    new text

    - * ``` - */ - setContent: function(html, isAppendTo, notFireSelectionchange) { - var me = this; - - me.fireEvent("beforesetcontent", html); - var root = UE.htmlparser(html); - me.filterInputRule(root); - html = root.toHtml(); - - me.body.innerHTML = (isAppendTo ? me.body.innerHTML : "") + html; - - function isCdataDiv(node) { - return node.tagName == "DIV" && node.getAttribute("cdata_tag"); - } - //给文本或者inline节点套p标签 - if (me.options.enterTag == "p") { - var child = this.body.firstChild, - tmpNode; - if ( - !child || - (child.nodeType == 1 && - (dtd.$cdata[child.tagName] || - isCdataDiv(child) || - domUtils.isCustomeNode(child)) && - child === this.body.lastChild) - ) { - this.body.innerHTML = - "

    " + - (browser.ie ? " " : "
    ") + - "

    " + - this.body.innerHTML; - } else { - var p = me.document.createElement("p"); - while (child) { - while ( - child && - (child.nodeType == 3 || - (child.nodeType == 1 && - dtd.p[child.tagName] && - !dtd.$cdata[child.tagName])) - ) { - tmpNode = child.nextSibling; - p.appendChild(child); - child = tmpNode; - } - if (p.firstChild) { - if (!child) { - me.body.appendChild(p); - break; - } else { - child.parentNode.insertBefore(p, child); - p = me.document.createElement("p"); - } - } - child = child.nextSibling; - } - } - } - me.fireEvent("aftersetcontent"); - me.fireEvent("contentchange"); - - !notFireSelectionchange && me._selectionChange(); - //清除保存的选区 - me._bakRange = me._bakIERange = me._bakNativeRange = null; - //trace:1742 setContent后gecko能得到焦点问题 - var geckoSel; - if (browser.gecko && (geckoSel = this.selection.getNative())) { - geckoSel.removeAllRanges(); - } - if (me.options.autoSyncData) { - me.form && setValue(me.form, me); - } - }, - - /** - * 让编辑器获得焦点,默认focus到编辑器头部 - * @method focus - * @example - * ```javascript - * editor.focus() - * ``` - */ - - /** - * 让编辑器获得焦点,toEnd确定focus位置 - * @method focus - * @param { Boolean } toEnd 默认focus到编辑器头部,toEnd为true时focus到内容尾部 - * @example - * ```javascript - * editor.focus(true) - * ``` - */ - focus: function(toEnd) { - try { - var me = this, - rng = me.selection.getRange(); - if (toEnd) { - var node = me.body.lastChild; - if (node && node.nodeType == 1 && !dtd.$empty[node.tagName]) { - if (domUtils.isEmptyBlock(node)) { - rng.setStartAtFirst(node); - } else { - rng.setStartAtLast(node); - } - rng.collapse(true); - } - rng.setCursor(true); - } else { - if ( - !rng.collapsed && - domUtils.isBody(rng.startContainer) && - rng.startOffset == 0 - ) { - var node = me.body.firstChild; - if (node && node.nodeType == 1 && !dtd.$empty[node.tagName]) { - rng.setStartAtFirst(node).collapse(true); - } - } - - rng.select(true); - } - this.fireEvent("focus selectionchange"); - } catch (e) {} - }, - isFocus: function() { - return this.selection.isFocus(); - }, - blur: function() { - var sel = this.selection.getNative(); - if (sel.empty && browser.ie) { - var nativeRng = document.body.createTextRange(); - nativeRng.moveToElementText(document.body); - nativeRng.collapse(true); - nativeRng.select(); - sel.empty(); - } else { - sel.removeAllRanges(); - } - - //this.fireEvent('blur selectionchange'); - }, - /** - * 初始化UE事件及部分事件代理 - * @method _initEvents - * @private - */ - _initEvents: function() { - var me = this, - doc = me.document, - win = me.window; - me._proxyDomEvent = utils.bind(me._proxyDomEvent, me); - domUtils.on( - doc, - [ - "click", - "contextmenu", - "mousedown", - "keydown", - "keyup", - "keypress", - "mouseup", - "mouseover", - "mouseout", - "selectstart" - ], - me._proxyDomEvent - ); - domUtils.on(win, ["focus", "blur"], me._proxyDomEvent); - domUtils.on(me.body, "drop", function(e) { - //阻止ff下默认的弹出新页面打开图片 - if (browser.gecko && e.stopPropagation) { - e.stopPropagation(); - } - me.fireEvent("contentchange"); - }); - domUtils.on(doc, ["mouseup", "keydown"], function(evt) { - //特殊键不触发selectionchange - if ( - evt.type == "keydown" && - (evt.ctrlKey || evt.metaKey || evt.shiftKey || evt.altKey) - ) { - return; - } - if (evt.button == 2) return; - me._selectionChange(250, evt); - }); - }, - /** - * 触发事件代理 - * @method _proxyDomEvent - * @private - * @return { * } fireEvent的返回值 - * @see UE.EventBase:fireEvent(String) - */ - _proxyDomEvent: function(evt) { - if ( - this.fireEvent("before" + evt.type.replace(/^on/, "").toLowerCase()) === - false - ) { - return false; - } - if (this.fireEvent(evt.type.replace(/^on/, ""), evt) === false) { - return false; - } - return this.fireEvent( - "after" + evt.type.replace(/^on/, "").toLowerCase() - ); - }, - /** - * 变化选区 - * @method _selectionChange - * @private - */ - _selectionChange: function(delay, evt) { - var me = this; - //有光标才做selectionchange 为了解决未focus时点击source不能触发更改工具栏状态的问题(source命令notNeedUndo=1) - // if ( !me.selection.isFocus() ){ - // return; - // } - - var hackForMouseUp = false; - var mouseX, mouseY; - if (browser.ie && browser.version < 9 && evt && evt.type == "mouseup") { - var range = this.selection.getRange(); - if (!range.collapsed) { - hackForMouseUp = true; - mouseX = evt.clientX; - mouseY = evt.clientY; - } - } - clearTimeout(_selectionChangeTimer); - _selectionChangeTimer = setTimeout(function() { - if (!me.selection || !me.selection.getNative()) { - return; - } - //修复一个IE下的bug: 鼠标点击一段已选择的文本中间时,可能在mouseup后的一段时间内取到的range是在selection的type为None下的错误值. - //IE下如果用户是拖拽一段已选择文本,则不会触发mouseup事件,所以这里的特殊处理不会对其有影响 - var ieRange; - if (hackForMouseUp && me.selection.getNative().type == "None") { - ieRange = me.document.body.createTextRange(); - try { - ieRange.moveToPoint(mouseX, mouseY); - } catch (ex) { - ieRange = null; - } - } - var bakGetIERange; - if (ieRange) { - bakGetIERange = me.selection.getIERange; - me.selection.getIERange = function() { - return ieRange; - }; - } - me.selection.cache(); - if (bakGetIERange) { - me.selection.getIERange = bakGetIERange; - } - if (me.selection._cachedRange && me.selection._cachedStartElement) { - me.fireEvent("beforeselectionchange"); - // 第二个参数causeByUi为true代表由用户交互造成的selectionchange. - me.fireEvent("selectionchange", !!evt); - me.fireEvent("afterselectionchange"); - me.selection.clear(); - } - }, delay || 50); - }, - - /** - * 执行编辑命令 - * @method _callCmdFn - * @private - * @param { String } fnName 函数名称 - * @param { * } args 传给命令函数的参数 - * @return { * } 返回命令函数运行的返回值 - */ - _callCmdFn: function(fnName, args) { - var cmdName = args[0].toLowerCase(), - cmd, - cmdFn; - cmd = this.commands[cmdName] || UE.commands[cmdName]; - cmdFn = cmd && cmd[fnName]; - //没有querycommandstate或者没有command的都默认返回0 - if ((!cmd || !cmdFn) && fnName == "queryCommandState") { - return 0; - } else if (cmdFn) { - return cmdFn.apply(this, args); - } - }, - - /** - * 执行编辑命令cmdName,完成富文本编辑效果 - * @method execCommand - * @param { String } cmdName 需要执行的命令 - * @remind 具体命令的使用请参考命令列表 - * @return { * } 返回命令函数运行的返回值 - * @example - * ```javascript - * editor.execCommand(cmdName); - * ``` - */ - execCommand: function(cmdName) { - cmdName = cmdName.toLowerCase(); - var me = this, - result, - cmd = me.commands[cmdName] || UE.commands[cmdName]; - if (!cmd || !cmd.execCommand) { - return null; - } - if (!cmd.notNeedUndo && !me.__hasEnterExecCommand) { - me.__hasEnterExecCommand = true; - if (me.queryCommandState.apply(me, arguments) != -1) { - me.fireEvent("saveScene"); - me.fireEvent.apply( - me, - ["beforeexeccommand", cmdName].concat(arguments) - ); - result = this._callCmdFn("execCommand", arguments); - //保存场景时,做了内容对比,再看是否进行contentchange触发,这里多触发了一次,去掉 - // (!cmd.ignoreContentChange && !me._ignoreContentChange) && me.fireEvent('contentchange'); - me.fireEvent.apply( - me, - ["afterexeccommand", cmdName].concat(arguments) - ); - me.fireEvent("saveScene"); - } - me.__hasEnterExecCommand = false; - } else { - result = this._callCmdFn("execCommand", arguments); - !me.__hasEnterExecCommand && - !cmd.ignoreContentChange && - !me._ignoreContentChange && - me.fireEvent("contentchange"); - } - !me.__hasEnterExecCommand && - !cmd.ignoreContentChange && - !me._ignoreContentChange && - me._selectionChange(); - return result; - }, - - /** - * 根据传入的command命令,查选编辑器当前的选区,返回命令的状态 - * @method queryCommandState - * @param { String } cmdName 需要查询的命令名称 - * @remind 具体命令的使用请参考命令列表 - * @return { Number } number 返回放前命令的状态,返回值三种情况:(-1|0|1) - * @example - * ```javascript - * editor.queryCommandState(cmdName) => (-1|0|1) - * ``` - * @see COMMAND.LIST - */ - queryCommandState: function(cmdName) { - return this._callCmdFn("queryCommandState", arguments); - }, - - /** - * 根据传入的command命令,查选编辑器当前的选区,根据命令返回相关的值 - * @method queryCommandValue - * @param { String } cmdName 需要查询的命令名称 - * @remind 具体命令的使用请参考命令列表 - * @remind 只有部分插件有此方法 - * @return { * } 返回每个命令特定的当前状态值 - * @grammar editor.queryCommandValue(cmdName) => {*} - * @see COMMAND.LIST - */ - queryCommandValue: function(cmdName) { - return this._callCmdFn("queryCommandValue", arguments); - }, - - /** - * 检查编辑区域中是否有内容 - * @method hasContents - * @remind 默认有文本内容,或者有以下节点都不认为是空 - * table,ul,ol,dl,iframe,area,base,col,hr,img,embed,input,link,meta,param - * @return { Boolean } 检查有内容返回true,否则返回false - * @example - * ```javascript - * editor.hasContents() - * ``` - */ - - /** - * 检查编辑区域中是否有内容,若包含参数tags中的节点类型,直接返回true - * @method hasContents - * @param { Array } tags 传入数组判断时用到的节点类型 - * @return { Boolean } 若文档中包含tags数组里对应的tag,返回true,否则返回false - * @example - * ```javascript - * editor.hasContents(['span']); - * ``` - */ - hasContents: function(tags) { - if (tags) { - for (var i = 0, ci; (ci = tags[i++]); ) { - if (this.document.getElementsByTagName(ci).length > 0) { - return true; - } - } - } - if (!domUtils.isEmptyBlock(this.body)) { - return true; - } - //随时添加,定义的特殊标签如果存在,不能认为是空 - tags = ["div"]; - for (i = 0; (ci = tags[i++]); ) { - var nodes = domUtils.getElementsByTagName(this.document, ci); - for (var n = 0, cn; (cn = nodes[n++]); ) { - if (domUtils.isCustomeNode(cn)) { - return true; - } - } - } - return false; - }, - - /** - * 重置编辑器,可用来做多个tab使用同一个编辑器实例 - * @method reset - * @remind 此方法会清空编辑器内容,清空回退列表,会触发reset事件 - * @example - * ```javascript - * editor.reset() - * ``` - */ - reset: function() { - this.fireEvent("reset"); - }, - - /** - * 设置当前编辑区域可以编辑 - * @method setEnabled - * @example - * ```javascript - * editor.setEnabled() - * ``` - */ - setEnabled: function() { - var me = this, - range; - if (me.body.contentEditable == "false") { - me.body.contentEditable = true; - range = me.selection.getRange(); - //有可能内容丢失了 - try { - range.moveToBookmark(me.lastBk); - delete me.lastBk; - } catch (e) { - range.setStartAtFirst(me.body).collapse(true); - } - range.select(true); - if (me.bkqueryCommandState) { - me.queryCommandState = me.bkqueryCommandState; - delete me.bkqueryCommandState; - } - if (me.bkqueryCommandValue) { - me.queryCommandValue = me.bkqueryCommandValue; - delete me.bkqueryCommandValue; - } - me.fireEvent("selectionchange"); - } - }, - enable: function() { - return this.setEnabled(); - }, - - /** 设置当前编辑区域不可编辑 - * @method setDisabled - */ - - /** 设置当前编辑区域不可编辑,except中的命令除外 - * @method setDisabled - * @param { String } except 例外命令的字符串 - * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 - * @example - * ```javascript - * editor.setDisabled('bold'); //禁用工具栏中除加粗之外的所有功能 - * ``` - */ - - /** 设置当前编辑区域不可编辑,except中的命令除外 - * @method setDisabled - * @param { Array } except 例外命令的字符串数组,数组中的命令仍然可以执行 - * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 - * @example - * ```javascript - * editor.setDisabled(['bold','insertimage']); //禁用工具栏中除加粗和插入图片之外的所有功能 - * ``` - */ - setDisabled: function(except) { - var me = this; - except = except ? (utils.isArray(except) ? except : [except]) : []; - if (me.body.contentEditable == "true") { - if (!me.lastBk) { - me.lastBk = me.selection.getRange().createBookmark(true); - } - me.body.contentEditable = false; - me.bkqueryCommandState = me.queryCommandState; - me.bkqueryCommandValue = me.queryCommandValue; - me.queryCommandState = function(type) { - if (utils.indexOf(except, type) != -1) { - return me.bkqueryCommandState.apply(me, arguments); - } - return -1; - }; - me.queryCommandValue = function(type) { - if (utils.indexOf(except, type) != -1) { - return me.bkqueryCommandValue.apply(me, arguments); - } - return null; - }; - me.fireEvent("selectionchange"); - } - }, - disable: function(except) { - return this.setDisabled(except); - }, - - /** - * 设置默认内容 - * @method _setDefaultContent - * @private - * @param { String } cont 要存入的内容 - */ - _setDefaultContent: (function() { - function clear() { - var me = this; - if (me.document.getElementById("initContent")) { - me.body.innerHTML = "

    " + (ie ? "" : "
    ") + "

    "; - me.removeListener("firstBeforeExecCommand focus", clear); - setTimeout(function() { - me.focus(); - me._selectionChange(); - }, 0); - } - } - - return function(cont) { - var me = this; - me.body.innerHTML = '

    ' + cont + "

    "; - - me.addListener("firstBeforeExecCommand focus", clear); - }; - })(), - - /** - * 显示编辑器 - * @method setShow - * @example - * ```javascript - * editor.setShow() - * ``` - */ - setShow: function() { - var me = this, - range = me.selection.getRange(); - if (me.container.style.display == "none") { - //有可能内容丢失了 - try { - range.moveToBookmark(me.lastBk); - delete me.lastBk; - } catch (e) { - range.setStartAtFirst(me.body).collapse(true); - } - //ie下focus实效,所以做了个延迟 - setTimeout(function() { - range.select(true); - }, 100); - me.container.style.display = ""; - } - }, - show: function() { - return this.setShow(); - }, - /** - * 隐藏编辑器 - * @method setHide - * @example - * ```javascript - * editor.setHide() - * ``` - */ - setHide: function() { - var me = this; - if (!me.lastBk) { - me.lastBk = me.selection.getRange().createBookmark(true); - } - me.container.style.display = "none"; - }, - hide: function() { - return this.setHide(); - }, - - /** - * 根据指定的路径,获取对应的语言资源 - * @method getLang - * @param { String } path 路径根据的是lang目录下的语言文件的路径结构 - * @return { Object | String } 根据路径返回语言资源的Json格式对象或者语言字符串 - * @example - * ```javascript - * editor.getLang('contextMenu.delete'); //如果当前是中文,那返回是的是'删除' - * ``` - */ - getLang: function(path) { - var lang = UE.I18N[this.options.lang]; - if (!lang) { - throw Error("not import language file"); - } - path = (path || "").split("."); - for (var i = 0, ci; (ci = path[i++]); ) { - lang = lang[ci]; - if (!lang) break; - } - return lang; - }, - - /** - * 计算编辑器html内容字符串的长度 - * @method getContentLength - * @return { Number } 返回计算的长度 - * @example - * ```javascript - * //编辑器html内容

    132

    - * editor.getContentLength() //返回27 - * ``` - */ - /** - * 计算编辑器当前纯文本内容的长度 - * @method getContentLength - * @param { Boolean } ingoneHtml 传入true时,只按照纯文本来计算 - * @return { Number } 返回计算的长度,内容中有hr/img/iframe标签,长度加1 - * @example - * ```javascript - * //编辑器html内容

    132

    - * editor.getContentLength() //返回3 - * ``` - */ - getContentLength: function(ingoneHtml, tagNames) { - var count = this.getContent(false, false, true).length; - if (ingoneHtml) { - tagNames = (tagNames || []).concat(["hr", "img", "iframe"]); - count = this.getContentTxt().replace(/[\t\r\n]+/g, "").length; - for (var i = 0, ci; (ci = tagNames[i++]); ) { - count += this.document.getElementsByTagName(ci).length; - } - } - return count; - }, - - /** - * 注册输入过滤规则 - * @method addInputRule - * @param { Function } rule 要添加的过滤规则 - * @example - * ```javascript - * editor.addInputRule(function(root){ - * $.each(root.getNodesByTagName('div'),function(i,node){ - * node.tagName="p"; - * }); - * }); - * ``` - */ - addInputRule: function(rule) { - this.inputRules.push(rule); - }, - - /** - * 执行注册的过滤规则 - * @method filterInputRule - * @param { UE.uNode } root 要过滤的uNode节点 - * @remind 执行editor.setContent方法和执行'inserthtml'命令后,会运行该过滤函数 - * @example - * ```javascript - * editor.filterInputRule(editor.body); - * ``` - * @see UE.Editor:addInputRule - */ - filterInputRule: function(root) { - for (var i = 0, ci; (ci = this.inputRules[i++]); ) { - ci.call(this, root); - } - }, - - /** - * 注册输出过滤规则 - * @method addOutputRule - * @param { Function } rule 要添加的过滤规则 - * @example - * ```javascript - * editor.addOutputRule(function(root){ - * $.each(root.getNodesByTagName('p'),function(i,node){ - * node.tagName="div"; - * }); - * }); - * ``` - */ - addOutputRule: function(rule) { - this.outputRules.push(rule); - }, - - /** - * 根据输出过滤规则,过滤编辑器内容 - * @method filterOutputRule - * @remind 执行editor.getContent方法的时候,会先运行该过滤函数 - * @param { UE.uNode } root 要过滤的uNode节点 - * @example - * ```javascript - * editor.filterOutputRule(editor.body); - * ``` - * @see UE.Editor:addOutputRule - */ - filterOutputRule: function(root) { - for (var i = 0, ci; (ci = this.outputRules[i++]); ) { - ci.call(this, root); - } - }, - - /** - * 根据action名称获取请求的路径 - * @method getActionUrl - * @remind 假如没有设置serverUrl,会根据imageUrl设置默认的controller路径 - * @param { String } action action名称 - * @example - * ```javascript - * editor.getActionUrl('config'); //返回 "/ueditor/php/controller.php?action=config" - * editor.getActionUrl('image'); //返回 "/ueditor/php/controller.php?action=uplaodimage" - * editor.getActionUrl('scrawl'); //返回 "/ueditor/php/controller.php?action=uplaodscrawl" - * editor.getActionUrl('imageManager'); //返回 "/ueditor/php/controller.php?action=listimage" - * ``` - */ - getActionUrl: function(action) { - var actionName = this.getOpt(action) || action, - imageUrl = this.getOpt("imageUrl"), - serverUrl = this.getOpt("serverUrl"); - - if (!serverUrl && imageUrl) { - serverUrl = imageUrl.replace(/^(.*[\/]).+([\.].+)$/, "$1controller$2"); - } - - if (serverUrl) { - serverUrl = - serverUrl + - (serverUrl.indexOf("?") == -1 ? "?" : "&") + - "action=" + - (actionName || ""); - return utils.formatUrl(serverUrl); - } else { - return ""; - } - } - }; - utils.inherits(Editor, EventBase); - })(); - - - // core/Editor.defaultoptions.js - //维护编辑器一下默认的不在插件中的配置项 - UE.Editor.defaultOptions = function(editor) { - var _url = editor.options.UEDITOR_HOME_URL; - return { - isShow: true, - initialContent: "", - initialStyle: "", - autoClearinitialContent: false, - iframeCssUrl: _url + "themes/iframe.css", - textarea: "editorValue", - focus: false, - focusInEnd: true, - autoClearEmptyNode: true, - fullscreen: false, - readonly: false, - zIndex: 999, - imagePopup: true, - enterTag: "p", - customDomain: false, - lang: "zh-cn", - langPath: _url + "lang/", - theme: "default", - themePath: _url + "themes/", - allHtmlEnabled: false, - scaleEnabled: false, - tableNativeEditInFF: false, - autoSyncData: true, - fileNameFormat: "{time}{rand:6}" - }; - }; - - - // core/loadconfig.js - (function() { - UE.Editor.prototype.loadServerConfig = function() { - var me = this; - setTimeout(function() { - try { - me.options.imageUrl && - me.setOpt( - "serverUrl", - me.options.imageUrl.replace( - /^(.*[\/]).+([\.].+)$/, - "$1controller$2" - ) - ); - - var configUrl = me.getActionUrl("config"), - isJsonp = utils.isCrossDomainUrl(configUrl); - - /* 发出ajax请求 */ - me._serverConfigLoaded = false; - - configUrl && - UE.ajax.request(configUrl, { - method: "GET", - dataType: isJsonp ? "jsonp" : "", - data: { - token: JSON.parse(localStorage.getItem('IASF_server_token')).value - }, - onsuccess: function(r) { - try { - var config = isJsonp ? r : eval("(" + r.responseText + ")"); - utils.extend(me.options, config); - me.fireEvent("serverConfigLoaded"); - me._serverConfigLoaded = true; - } catch (e) { - showErrorMsg(me.getLang("loadconfigFormatError")); - } - }, - onerror: function() { - showErrorMsg(me.getLang("loadconfigHttpError")); - } - }); - } catch (e) { - showErrorMsg(me.getLang("loadconfigError")); - } - }); - - function showErrorMsg(msg) { - console && console.error(msg); - //me.fireEvent('showMessage', { - // 'title': msg, - // 'type': 'error' - //}); - } - }; - - UE.Editor.prototype.isServerConfigLoaded = function() { - var me = this; - return me._serverConfigLoaded || false; - }; - - UE.Editor.prototype.afterConfigReady = function(handler) { - if (!handler || !utils.isFunction(handler)) return; - var me = this; - var readyHandler = function() { - handler.apply(me, arguments); - me.removeListener("serverConfigLoaded", readyHandler); - }; - - if (me.isServerConfigLoaded()) { - handler.call(me, "serverConfigLoaded"); - } else { - me.addListener("serverConfigLoaded", readyHandler); - } - }; - })(); - - - // core/ajax.js - /** - * @file - * @module UE.ajax - * @since 1.2.6.1 - */ - - /** - * 提供对ajax请求的支持 - * @module UE.ajax - */ - UE.ajax = (function() { - //创建一个ajaxRequest对象 - var fnStr = "XMLHttpRequest()"; - try { - new ActiveXObject("Msxml2.XMLHTTP"); - fnStr = "ActiveXObject('Msxml2.XMLHTTP')"; - } catch (e) { - try { - new ActiveXObject("Microsoft.XMLHTTP"); - fnStr = "ActiveXObject('Microsoft.XMLHTTP')"; - } catch (e) {} - } - var creatAjaxRequest = new Function("return new " + fnStr); - - /** - * 将json参数转化成适合ajax提交的参数列表 - * @param json - */ - function json2str(json) { - var strArr = []; - for (var i in json) { - //忽略默认的几个参数 - if ( - i == "method" || - i == "timeout" || - i == "async" || - i == "dataType" || - i == "callback" - ) - continue; - //忽略控制 - if (json[i] == undefined || json[i] == null) continue; - //传递过来的对象和函数不在提交之列 - if ( - !( - (typeof json[i]).toLowerCase() == "function" || - (typeof json[i]).toLowerCase() == "object" - ) - ) { - strArr.push(encodeURIComponent(i) + "=" + encodeURIComponent(json[i])); - } else if (utils.isArray(json[i])) { - //支持传数组内容 - for (var j = 0; j < json[i].length; j++) { - strArr.push( - encodeURIComponent(i) + "[]=" + encodeURIComponent(json[i][j]) - ); - } - } - } - return strArr.join("&"); - } - - function doAjax(url, ajaxOptions) { - var xhr = creatAjaxRequest(), - //是否超时 - timeIsOut = false, - //默认参数 - defaultAjaxOptions = { - method: "POST", - timeout: 5000, - async: true, - data: {}, //需要传递对象的话只能覆盖 - onsuccess: function() {}, - onerror: function() {} - }; - - if (typeof url === "object") { - ajaxOptions = url; - url = ajaxOptions.url; - } - if (!xhr || !url) return; - var ajaxOpts = ajaxOptions - ? utils.extend(defaultAjaxOptions, ajaxOptions) - : defaultAjaxOptions; - - var submitStr = json2str(ajaxOpts); // { name:"Jim",city:"Beijing" } --> "name=Jim&city=Beijing" - //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串 - if (!utils.isEmptyObject(ajaxOpts.data)) { - submitStr += (submitStr ? "&" : "") + json2str(ajaxOpts.data); - } - //超时检测 - var timerID = setTimeout(function() { - if (xhr.readyState != 4) { - timeIsOut = true; - xhr.abort(); - clearTimeout(timerID); - } - }, ajaxOpts.timeout); - - var method = ajaxOpts.method.toUpperCase(); - var str = - url + - (url.indexOf("?") == -1 ? "?" : "&") + - (method == "POST" ? "" : submitStr + "&noCache=" + +new Date()); - xhr.open(method, str, ajaxOpts.async); - xhr.onreadystatechange = function() { - if (xhr.readyState == 4) { - if (!timeIsOut && xhr.status == 200) { - ajaxOpts.onsuccess(xhr); - } else { - ajaxOpts.onerror(xhr); - } - } - }; - const token = JSON.parse(localStorage.getItem('IASF_server_token')).value - console.log("🚀 ~ file: ueditor.all.min.js:9025 ~ doAjax ~ token:", token) - xhr.setRequestHeader("Authorization", token) - if (method == "POST") { - xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); - xhr.send(submitStr); - } else { - xhr.send(null); - } - } - - function doJsonp(url, opts) { - var successhandler = opts.onsuccess || function() {}, - scr = document.createElement("SCRIPT"), - options = opts || {}, - charset = options["charset"], - callbackField = options["jsonp"] || "callback", - callbackFnName, - timeOut = options["timeOut"] || 0, - timer, - reg = new RegExp("(\\?|&)" + callbackField + "=([^&]*)"), - matches; - - if (utils.isFunction(successhandler)) { - callbackFnName = - "bd__editor__" + Math.floor(Math.random() * 2147483648).toString(36); - window[callbackFnName] = getCallBack(0); - } else if (utils.isString(successhandler)) { - callbackFnName = successhandler; - } else { - if ((matches = reg.exec(url))) { - callbackFnName = matches[2]; - } - } - - url = url.replace(reg, "\x241" + callbackField + "=" + callbackFnName); - - if (url.search(reg) < 0) { - url += - (url.indexOf("?") < 0 ? "?" : "&") + - callbackField + - "=" + - callbackFnName; - } - - var queryStr = json2str(opts); // { name:"Jim",city:"Beijing" } --> "name=Jim&city=Beijing" - //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串 - if (!utils.isEmptyObject(opts.data)) { - queryStr += (queryStr ? "&" : "") + json2str(opts.data); - } - if (queryStr) { - url = url.replace(/\?/, "?" + queryStr + "&"); - } - - scr.onerror = getCallBack(1); - if (timeOut) { - timer = setTimeout(getCallBack(1), timeOut); - } - createScriptTag(scr, url, charset); - - function createScriptTag(scr, url, charset) { - scr.setAttribute("type", "text/javascript"); - scr.setAttribute("defer", "defer"); - charset && scr.setAttribute("charset", charset); - scr.setAttribute("src", url); - document.getElementsByTagName("head")[0].appendChild(scr); - } - - function getCallBack(onTimeOut) { - return function() { - try { - if (onTimeOut) { - options.onerror && options.onerror(); - } else { - try { - clearTimeout(timer); - successhandler.apply(window, arguments); - } catch (e) {} - } - } catch (exception) { - options.onerror && options.onerror.call(window, exception); - } finally { - options.oncomplete && options.oncomplete.apply(window, arguments); - scr.parentNode && scr.parentNode.removeChild(scr); - window[callbackFnName] = null; - try { - delete window[callbackFnName]; - } catch (e) {} - } - }; - } - } - - return { - /** - * 根据给定的参数项,向指定的url发起一个ajax请求。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求 - * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调 - * @method request - * @param { URLString } url ajax请求的url地址 - * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下: - * @example - * ```javascript - * //向sayhello.php发起一个异步的Ajax GET请求, 请求超时时间为10s, 请求完成后执行相应的回调。 - * UE.ajax.requeset( 'sayhello.php', { - * - * //请求方法。可选值: 'GET', 'POST',默认值是'POST' - * method: 'GET', - * - * //超时时间。 默认为5000, 单位是ms - * timeout: 10000, - * - * //是否是异步请求。 true为异步请求, false为同步请求 - * async: true, - * - * //请求携带的数据。如果请求为GET请求, data会经过stringify后附加到请求url之后。 - * data: { - * name: 'ueditor' - * }, - * - * //请求成功后的回调, 该回调接受当前的XMLHttpRequest对象作为参数。 - * onsuccess: function ( xhr ) { - * console.log( xhr.responseText ); - * }, - * - * //请求失败或者超时后的回调。 - * onerror: function ( xhr ) { - * alert( 'Ajax请求失败' ); - * } - * - * } ); - * ``` - */ - - /** - * 根据给定的参数项发起一个ajax请求, 参数项里必须包含一个url地址。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求 - * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调。 - * @method request - * @warning 如果在参数项里未提供一个key为“url”的地址值,则该请求将直接退出。 - * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下: - * @example - * ```javascript - * - * //向sayhello.php发起一个异步的Ajax POST请求, 请求超时时间为5s, 请求完成后不执行任何回调。 - * UE.ajax.requeset( 'sayhello.php', { - * - * //请求的地址, 该项是必须的。 - * url: 'sayhello.php' - * - * } ); - * ``` - */ - request: function(url, opts) { - console.log("🚀 ~ file: ueditor.all.min.js:9176 ~ url:", url, opts) - if (opts && opts.dataType == "jsonp") { - doJsonp(url, opts); - } else { - doAjax(url, opts); - } - }, - getJSONP: function(url, data, fn) { - console.log("🚀 ~ file: ueditor.all.min.js:9184 ~ url:", url) - var opts = { - data: data, - oncomplete: fn - }; - doJsonp(url, opts); - } - }; - })(); - - - // core/filterword.js - /** - * UE过滤word的静态方法 - * @file - */ - - /** - * UEditor公用空间,UEditor所有的功能都挂载在该空间下 - * @module UE - */ - - /** - * 根据传入html字符串过滤word - * @module UE - * @since 1.2.6.1 - * @method filterWord - * @param { String } html html字符串 - * @return { String } 已过滤后的结果字符串 - * @example - * ```javascript - * UE.filterWord(html); - * ``` - */ - var filterWord = (UE.filterWord = (function() { - //是否是word过来的内容 - function isWordDocument(str) { - return /(class="?Mso|style="[^"]*\bmso\-|w:WordDocument|<(v|o):|lang=)/gi.test( - str - ); - } - //去掉小数 - function transUnit(v) { - v = v.replace(/[\d.]+\w+/g, function(m) { - return utils.transUnitToPx(m); - }); - return v; - } - - function filterPasteWord(str) { - return ( - str - .replace(/[\t\r\n]+/g, " ") - .replace(//gi, "") - //转换图片 - .replace(/]*>[\s\S]*?.<\/v:shape>/gi, function(str) { - //opera能自己解析出image所这里直接返回空 - if (browser.opera) { - return ""; - } - try { - //有可能是bitmap占为图,无用,直接过滤掉,主要体现在粘贴excel表格中 - if (/Bitmap/i.test(str)) { - return ""; - } - var width = str.match(/width:([ \d.]*p[tx])/i)[1], - height = str.match(/height:([ \d.]*p[tx])/i)[1], - src = str.match(/src=\s*"([^"]*)"/i)[1]; - return ( - '' - ); - } catch (e) { - return ""; - } - }) - //针对wps添加的多余标签处理 - .replace(/<\/?div[^>]*>/g, "") - //去掉多余的属性 - .replace(/v:\w+=(["']?)[^'"]+\1/g, "") - .replace( - /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi, - "" - ) - .replace( - /

    ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, - "

    $1

    " - ) - //去掉多余的属性 - .replace(/\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/gi, function( - str, - name, - marks, - val - ) { - //保留list的标示 - return name == "class" && val == "MsoListParagraph" ? str : ""; - }) - //清除多余的font/span不能匹配 有可能是空格 - .replace(/<(font|span)[^>]*>(\s*)<\/\1>/gi, function(a, b, c) { - return c.replace(/[\t\r\n ]+/g, " "); - }) - //处理style的问题 - .replace(/(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi, function( - str, - tag, - tmp, - style - ) { - var n = [], - s = style - .replace(/^\s+|\s+$/, "") - .replace(/'/g, "'") - .replace(/"/gi, "'") - .replace(/[\d.]+(cm|pt)/g, function(str) { - return utils.transUnitToPx(str); - }) - .split(/;\s*/g); - - for (var i = 0, v; (v = s[i]); i++) { - var name, - value, - parts = v.split(":"); - - if (parts.length == 2) { - name = parts[0].toLowerCase(); - value = parts[1].toLowerCase(); - if ( - (/^(background)\w*/.test(name) && - value.replace(/(initial|\s)/g, "").length == 0) || - (/^(margin)\w*/.test(name) && /^0\w+$/.test(value)) - ) { - continue; - } - - switch (name) { - case "mso-padding-alt": - case "mso-padding-top-alt": - case "mso-padding-right-alt": - case "mso-padding-bottom-alt": - case "mso-padding-left-alt": - case "mso-margin-alt": - case "mso-margin-top-alt": - case "mso-margin-right-alt": - case "mso-margin-bottom-alt": - case "mso-margin-left-alt": - //ie下会出现挤到一起的情况 - //case "mso-table-layout-alt": - case "mso-height": - case "mso-width": - case "mso-vertical-align-alt": - //trace:1819 ff下会解析出padding在table上 - if (!/]/.test(html)) { - return UE.htmlparser(html).children[0]; - } else { - return new uNode({ - type: "element", - children: [], - tagName: html - }); - } - }; - uNode.createText = function(data, noTrans) { - return new UE.uNode({ - type: "text", - data: noTrans ? data : utils.unhtml(data || "") - }); - }; - function nodeToHtml(node, arr, formatter, current) { - switch (node.type) { - case "root": - for (var i = 0, ci; (ci = node.children[i++]); ) { - //插入新行 - if ( - formatter && - ci.type == "element" && - !dtd.$inlineWithA[ci.tagName] && - i > 1 - ) { - insertLine(arr, current, true); - insertIndent(arr, current); - } - nodeToHtml(ci, arr, formatter, current); - } - break; - case "text": - isText(node, arr); - break; - case "element": - isElement(node, arr, formatter, current); - break; - case "comment": - isComment(node, arr, formatter); - } - return arr; - } - - function isText(node, arr) { - if (node.parentNode.tagName == "pre") { - //源码模式下输入html标签,不能做转换处理,直接输出 - arr.push(node.data); - } else { - arr.push( - notTransTagName[node.parentNode.tagName] - ? utils.html(node.data) - : node.data.replace(/[ ]{2}/g, "  ") - ); - } - } - - function isElement(node, arr, formatter, current) { - var attrhtml = ""; - if (node.attrs) { - attrhtml = []; - var attrs = node.attrs; - for (var a in attrs) { - //这里就针对 - //

    '

    - //这里边的\"做转换,要不用innerHTML直接被截断了,属性src - //有可能做的不够 - attrhtml.push( - a + - (attrs[a] !== undefined - ? '="' + - (notTransAttrs[a] - ? utils.html(attrs[a]).replace(/["]/g, function(a) { - return """; - }) - : utils.unhtml(attrs[a])) + - '"' - : "") - ); - } - attrhtml = attrhtml.join(" "); - } - arr.push( - "<" + - node.tagName + - (attrhtml ? " " + attrhtml : "") + - (dtd.$empty[node.tagName] ? "/" : "") + - ">" - ); - //插入新行 - if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != "pre") { - if (node.children && node.children.length) { - current = insertLine(arr, current, true); - insertIndent(arr, current); - } - } - if (node.children && node.children.length) { - for (var i = 0, ci; (ci = node.children[i++]); ) { - if ( - formatter && - ci.type == "element" && - !dtd.$inlineWithA[ci.tagName] && - i > 1 - ) { - insertLine(arr, current); - insertIndent(arr, current); - } - nodeToHtml(ci, arr, formatter, current); - } - } - if (!dtd.$empty[node.tagName]) { - if ( - formatter && - !dtd.$inlineWithA[node.tagName] && - node.tagName != "pre" - ) { - if (node.children && node.children.length) { - current = insertLine(arr, current); - insertIndent(arr, current); - } - } - arr.push(""); - } - } - - function isComment(node, arr) { - arr.push(""); - } - - function getNodeById(root, id) { - var node; - if (root.type == "element" && root.getAttr("id") == id) { - return root; - } - if (root.children && root.children.length) { - for (var i = 0, ci; (ci = root.children[i++]); ) { - if ((node = getNodeById(ci, id))) { - return node; - } - } - } - } - - function getNodesByTagName(node, tagName, arr) { - if (node.type == "element" && node.tagName == tagName) { - arr.push(node); - } - if (node.children && node.children.length) { - for (var i = 0, ci; (ci = node.children[i++]); ) { - getNodesByTagName(ci, tagName, arr); - } - } - } - function nodeTraversal(root, fn) { - if (root.children && root.children.length) { - for (var i = 0, ci; (ci = root.children[i]); ) { - nodeTraversal(ci, fn); - //ci被替换的情况,这里就不再走 fn了 - if (ci.parentNode) { - if (ci.children && ci.children.length) { - fn(ci); - } - if (ci.parentNode) i++; - } - } - } else { - fn(root); - } - } - uNode.prototype = { - /** - * 当前节点对象,转换成html文本 - * @method toHtml - * @return { String } 返回转换后的html字符串 - * @example - * ```javascript - * node.toHtml(); - * ``` - */ - - /** - * 当前节点对象,转换成html文本 - * @method toHtml - * @param { Boolean } formatter 是否格式化返回值 - * @return { String } 返回转换后的html字符串 - * @example - * ```javascript - * node.toHtml( true ); - * ``` - */ - toHtml: function(formatter) { - var arr = []; - nodeToHtml(this, arr, formatter, 0); - return arr.join(""); - }, - - /** - * 获取节点的html内容 - * @method innerHTML - * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 - * @return { String } 返回节点的html内容 - * @example - * ```javascript - * var htmlstr = node.innerHTML(); - * ``` - */ - - /** - * 设置节点的html内容 - * @method innerHTML - * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 - * @param { String } htmlstr 传入要设置的html内容 - * @return { UE.uNode } 返回节点本身 - * @example - * ```javascript - * node.innerHTML('text'); - * ``` - */ - innerHTML: function(htmlstr) { - if (this.type != "element" || dtd.$empty[this.tagName]) { - return this; - } - if (utils.isString(htmlstr)) { - if (this.children) { - for (var i = 0, ci; (ci = this.children[i++]); ) { - ci.parentNode = null; - } - } - this.children = []; - var tmpRoot = UE.htmlparser(htmlstr); - for (var i = 0, ci; (ci = tmpRoot.children[i++]); ) { - this.children.push(ci); - ci.parentNode = this; - } - return this; - } else { - var tmpRoot = new UE.uNode({ - type: "root", - children: this.children - }); - return tmpRoot.toHtml(); - } - }, - - /** - * 获取节点的纯文本内容 - * @method innerText - * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 - * @return { String } 返回节点的存文本内容 - * @example - * ```javascript - * var textStr = node.innerText(); - * ``` - */ - - /** - * 设置节点的纯文本内容 - * @method innerText - * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 - * @param { String } textStr 传入要设置的文本内容 - * @return { UE.uNode } 返回节点本身 - * @example - * ```javascript - * node.innerText('text'); - * ``` - */ - innerText: function(textStr, noTrans) { - if (this.type != "element" || dtd.$empty[this.tagName]) { - return this; - } - if (textStr) { - if (this.children) { - for (var i = 0, ci; (ci = this.children[i++]); ) { - ci.parentNode = null; - } - } - this.children = []; - this.appendChild(uNode.createText(textStr, noTrans)); - return this; - } else { - return this.toHtml().replace(/<[^>]+>/g, ""); - } - }, - - /** - * 获取当前对象的data属性 - * @method getData - * @return { Object } 若节点的type值是elemenet,返回空字符串,否则返回节点的data属性 - * @example - * ```javascript - * node.getData(); - * ``` - */ - getData: function() { - if (this.type == "element") return ""; - return this.data; - }, - - /** - * 获取当前节点下的第一个子节点 - * @method firstChild - * @return { UE.uNode } 返回第一个子节点 - * @example - * ```javascript - * node.firstChild(); //返回第一个子节点 - * ``` - */ - firstChild: function() { - // if (this.type != 'element' || dtd.$empty[this.tagName]) { - // return this; - // } - return this.children ? this.children[0] : null; - }, - - /** - * 获取当前节点下的最后一个子节点 - * @method lastChild - * @return { UE.uNode } 返回最后一个子节点 - * @example - * ```javascript - * node.lastChild(); //返回最后一个子节点 - * ``` - */ - lastChild: function() { - // if (this.type != 'element' || dtd.$empty[this.tagName] ) { - // return this; - // } - return this.children ? this.children[this.children.length - 1] : null; - }, - - /** - * 获取和当前节点有相同父亲节点的前一个节点 - * @method previousSibling - * @return { UE.uNode } 返回前一个节点 - * @example - * ```javascript - * node.children[2].previousSibling(); //返回子节点node.children[1] - * ``` - */ - previousSibling: function() { - var parent = this.parentNode; - for (var i = 0, ci; (ci = parent.children[i]); i++) { - if (ci === this) { - return i == 0 ? null : parent.children[i - 1]; - } - } - }, - - /** - * 获取和当前节点有相同父亲节点的后一个节点 - * @method nextSibling - * @return { UE.uNode } 返回后一个节点,找不到返回null - * @example - * ```javascript - * node.children[2].nextSibling(); //如果有,返回子节点node.children[3] - * ``` - */ - nextSibling: function() { - var parent = this.parentNode; - for (var i = 0, ci; (ci = parent.children[i++]); ) { - if (ci === this) { - return parent.children[i]; - } - } - }, - - /** - * 用新的节点替换当前节点 - * @method replaceChild - * @param { UE.uNode } target 要替换成该节点参数 - * @param { UE.uNode } source 要被替换掉的节点 - * @return { UE.uNode } 返回替换之后的节点对象 - * @example - * ```javascript - * node.replaceChild(newNode, childNode); //用newNode替换childNode,childNode是node的子节点 - * ``` - */ - replaceChild: function(target, source) { - if (this.children) { - if (target.parentNode) { - target.parentNode.removeChild(target); - } - for (var i = 0, ci; (ci = this.children[i]); i++) { - if (ci === source) { - this.children.splice(i, 1, target); - source.parentNode = null; - target.parentNode = this; - return target; - } - } - } - }, - - /** - * 在节点的子节点列表最后位置插入一个节点 - * @method appendChild - * @param { UE.uNode } node 要插入的节点 - * @return { UE.uNode } 返回刚插入的子节点 - * @example - * ```javascript - * node.appendChild( newNode ); //在node内插入子节点newNode - * ``` - */ - appendChild: function(node) { - if ( - this.type == "root" || - (this.type == "element" && !dtd.$empty[this.tagName]) - ) { - if (!this.children) { - this.children = []; - } - if (node.parentNode) { - node.parentNode.removeChild(node); - } - for (var i = 0, ci; (ci = this.children[i]); i++) { - if (ci === node) { - this.children.splice(i, 1); - break; - } - } - this.children.push(node); - node.parentNode = this; - return node; - } - }, - - /** - * 在传入节点的前面插入一个节点 - * @method insertBefore - * @param { UE.uNode } target 要插入的节点 - * @param { UE.uNode } source 在该参数节点前面插入 - * @return { UE.uNode } 返回刚插入的子节点 - * @example - * ```javascript - * node.parentNode.insertBefore(newNode, node); //在node节点后面插入newNode - * ``` - */ - insertBefore: function(target, source) { - if (this.children) { - if (target.parentNode) { - target.parentNode.removeChild(target); - } - for (var i = 0, ci; (ci = this.children[i]); i++) { - if (ci === source) { - this.children.splice(i, 0, target); - target.parentNode = this; - return target; - } - } - } - }, - - /** - * 在传入节点的后面插入一个节点 - * @method insertAfter - * @param { UE.uNode } target 要插入的节点 - * @param { UE.uNode } source 在该参数节点后面插入 - * @return { UE.uNode } 返回刚插入的子节点 - * @example - * ```javascript - * node.parentNode.insertAfter(newNode, node); //在node节点后面插入newNode - * ``` - */ - insertAfter: function(target, source) { - if (this.children) { - if (target.parentNode) { - target.parentNode.removeChild(target); - } - for (var i = 0, ci; (ci = this.children[i]); i++) { - if (ci === source) { - this.children.splice(i + 1, 0, target); - target.parentNode = this; - return target; - } - } - } - }, - - /** - * 从当前节点的子节点列表中,移除节点 - * @method removeChild - * @param { UE.uNode } node 要移除的节点引用 - * @param { Boolean } keepChildren 是否保留移除节点的子节点,若传入true,自动把移除节点的子节点插入到移除的位置 - * @return { * } 返回刚移除的子节点 - * @example - * ```javascript - * node.removeChild(childNode,true); //在node的子节点列表中移除child节点,并且吧child的子节点插入到移除的位置 - * ``` - */ - removeChild: function(node, keepChildren) { - if (this.children) { - for (var i = 0, ci; (ci = this.children[i]); i++) { - if (ci === node) { - this.children.splice(i, 1); - ci.parentNode = null; - if (keepChildren && ci.children && ci.children.length) { - for (var j = 0, cj; (cj = ci.children[j]); j++) { - this.children.splice(i + j, 0, cj); - cj.parentNode = this; - } - } - return ci; - } - } - } - }, - - /** - * 获取当前节点所代表的元素属性,即获取attrs对象下的属性值 - * @method getAttr - * @param { String } attrName 要获取的属性名称 - * @return { * } 返回attrs对象下的属性值 - * @example - * ```javascript - * node.getAttr('title'); - * ``` - */ - getAttr: function(attrName) { - return this.attrs && this.attrs[attrName.toLowerCase()]; - }, - - /** - * 设置当前节点所代表的元素属性,即设置attrs对象下的属性值 - * @method setAttr - * @param { String } attrName 要设置的属性名称 - * @param { * } attrVal 要设置的属性值,类型视设置的属性而定 - * @return { * } 返回attrs对象下的属性值 - * @example - * ```javascript - * node.setAttr('title','标题'); - * ``` - */ - setAttr: function(attrName, attrVal) { - if (!attrName) { - delete this.attrs; - return; - } - if (!this.attrs) { - this.attrs = {}; - } - if (utils.isObject(attrName)) { - for (var a in attrName) { - if (!attrName[a]) { - delete this.attrs[a]; - } else { - this.attrs[a.toLowerCase()] = attrName[a]; - } - } - } else { - if (!attrVal) { - delete this.attrs[attrName]; - } else { - this.attrs[attrName.toLowerCase()] = attrVal; - } - } - }, - - /** - * 获取当前节点在父节点下的位置索引 - * @method getIndex - * @return { Number } 返回索引数值,如果没有父节点,返回-1 - * @example - * ```javascript - * node.getIndex(); - * ``` - */ - getIndex: function() { - var parent = this.parentNode; - for (var i = 0, ci; (ci = parent.children[i]); i++) { - if (ci === this) { - return i; - } - } - return -1; - }, - - /** - * 在当前节点下,根据id查找节点 - * @method getNodeById - * @param { String } id 要查找的id - * @return { UE.uNode } 返回找到的节点 - * @example - * ```javascript - * node.getNodeById('textId'); - * ``` - */ - getNodeById: function(id) { - var node; - if (this.children && this.children.length) { - for (var i = 0, ci; (ci = this.children[i++]); ) { - if ((node = getNodeById(ci, id))) { - return node; - } - } - } - }, - - /** - * 在当前节点下,根据元素名称查找节点列表 - * @method getNodesByTagName - * @param { String } tagNames 要查找的元素名称 - * @return { Array } 返回找到的节点列表 - * @example - * ```javascript - * node.getNodesByTagName('span'); - * ``` - */ - getNodesByTagName: function(tagNames) { - tagNames = utils.trim(tagNames).replace(/[ ]{2,}/g, " ").split(" "); - var arr = [], - me = this; - utils.each(tagNames, function(tagName) { - if (me.children && me.children.length) { - for (var i = 0, ci; (ci = me.children[i++]); ) { - getNodesByTagName(ci, tagName, arr); - } - } - }); - return arr; - }, - - /** - * 根据样式名称,获取节点的样式值 - * @method getStyle - * @param { String } name 要获取的样式名称 - * @return { String } 返回样式值 - * @example - * ```javascript - * node.getStyle('font-size'); - * ``` - */ - getStyle: function(name) { - var cssStyle = this.getAttr("style"); - if (!cssStyle) { - return ""; - } - var reg = new RegExp("(^|;)\\s*" + name + ":([^;]+)", "i"); - var match = cssStyle.match(reg); - if (match && match[0]) { - return match[2]; - } - return ""; - }, - - /** - * 给节点设置样式 - * @method setStyle - * @param { String } name 要设置的的样式名称 - * @param { String } val 要设置的的样值 - * @example - * ```javascript - * node.setStyle('font-size', '12px'); - * ``` - */ - setStyle: function(name, val) { - function exec(name, val) { - var reg = new RegExp("(^|;)\\s*" + name + ":([^;]+;?)", "gi"); - cssStyle = cssStyle.replace(reg, "$1"); - if (val) { - cssStyle = name + ":" + utils.unhtml(val) + ";" + cssStyle; - } - } - - var cssStyle = this.getAttr("style"); - if (!cssStyle) { - cssStyle = ""; - } - if (utils.isObject(name)) { - for (var a in name) { - exec(a, name[a]); - } - } else { - exec(name, val); - } - this.setAttr("style", utils.trim(cssStyle)); - }, - - /** - * 传入一个函数,递归遍历当前节点下的所有节点 - * @method traversal - * @param { Function } fn 遍历到节点的时,传入节点作为参数,运行此函数 - * @example - * ```javascript - * traversal(node, function(){ - * console.log(node.type); - * }); - * ``` - */ - traversal: function(fn) { - if (this.children && this.children.length) { - nodeTraversal(this, fn); - } - return this; - } - }; - })(); - - - // core/htmlparser.js - /** - * html字符串转换成uNode节点 - * @file - * @module UE - * @since 1.2.6.1 - */ - - /** - * UEditor公用空间,UEditor所有的功能都挂载在该空间下 - * @unfile - * @module UE - */ - - /** - * html字符串转换成uNode节点的静态方法 - * @method htmlparser - * @param { String } htmlstr 要转换的html代码 - * @param { Boolean } ignoreBlank 若设置为true,转换的时候忽略\n\r\t等空白字符 - * @return { uNode } 给定的html片段转换形成的uNode对象 - * @example - * ```javascript - * var root = UE.htmlparser('

    htmlparser

    ', true); - * ``` - */ - - var htmlparser = (UE.htmlparser = function(htmlstr, ignoreBlank) { - //todo 原来的方式 [^"'<>\/] 有\/就不能配对上 " - ); - } - html.push(""); - } - //禁止指定table-width - return "
    这样的标签了 - //先去掉了,加上的原因忘了,这里先记录 - //var re_tag = /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/<>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g, - //以上的正则表达式无法匹配:

    - //修改为如下正则表达式: - var re_tag = /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g, - re_attr = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g; - - //ie下取得的html可能会有\n存在,要去掉,在处理replace(/[\t\r\n]*/g,'');代码高量的\n不能去除 - var allowEmptyTags = { - b: 1, - code: 1, - i: 1, - u: 1, - strike: 1, - s: 1, - tt: 1, - strong: 1, - q: 1, - samp: 1, - em: 1, - span: 1, - sub: 1, - img: 1, - sup: 1, - font: 1, - big: 1, - small: 1, - iframe: 1, - a: 1, - br: 1, - pre: 1 - }; - htmlstr = htmlstr.replace(new RegExp(domUtils.fillChar, "g"), ""); - if (!ignoreBlank) { - htmlstr = htmlstr.replace( - new RegExp( - "[\\r\\t\\n" + - (ignoreBlank ? "" : " ") + - "]*]*)>[\\r\\t\\n" + - (ignoreBlank ? "" : " ") + - "]*", - "g" - ), - function(a, b) { - //br暂时单独处理 - if (b && allowEmptyTags[b.toLowerCase()]) { - return a.replace(/(^[\n\r]+)|([\n\r]+$)/g, ""); - } - return a - .replace(new RegExp("^[\\r\\n" + (ignoreBlank ? "" : " ") + "]+"), "") - .replace( - new RegExp("[\\r\\n" + (ignoreBlank ? "" : " ") + "]+$"), - "" - ); - } - ); - } - - var notTransAttrs = { - href: 1, - src: 1 - }; - - var uNode = UE.uNode, - needParentNode = { - td: "tr", - tr: ["tbody", "thead", "tfoot"], - tbody: "table", - th: "tr", - thead: "table", - tfoot: "table", - caption: "table", - li: ["ul", "ol"], - dt: "dl", - dd: "dl", - option: "select" - }, - needChild = { - ol: "li", - ul: "li" - }; - - function text(parent, data) { - if (needChild[parent.tagName]) { - var tmpNode = uNode.createElement(needChild[parent.tagName]); - parent.appendChild(tmpNode); - tmpNode.appendChild(uNode.createText(data)); - parent = tmpNode; - } else { - parent.appendChild(uNode.createText(data)); - } - } - - function element(parent, tagName, htmlattr) { - var needParentTag; - if ((needParentTag = needParentNode[tagName])) { - var tmpParent = parent, - hasParent; - while (tmpParent.type != "root") { - if ( - utils.isArray(needParentTag) - ? utils.indexOf(needParentTag, tmpParent.tagName) != -1 - : needParentTag == tmpParent.tagName - ) { - parent = tmpParent; - hasParent = true; - break; - } - tmpParent = tmpParent.parentNode; - } - if (!hasParent) { - parent = element( - parent, - utils.isArray(needParentTag) ? needParentTag[0] : needParentTag - ); - } - } - //按dtd处理嵌套 - // if(parent.type != 'root' && !dtd[parent.tagName][tagName]) - // parent = parent.parentNode; - var elm = new uNode({ - parentNode: parent, - type: "element", - tagName: tagName.toLowerCase(), - //是自闭合的处理一下 - children: dtd.$empty[tagName] ? null : [] - }); - //如果属性存在,处理属性 - if (htmlattr) { - var attrs = {}, - match; - while ((match = re_attr.exec(htmlattr))) { - attrs[match[1].toLowerCase()] = notTransAttrs[match[1].toLowerCase()] - ? match[2] || match[3] || match[4] - : utils.unhtml(match[2] || match[3] || match[4]); - } - elm.attrs = attrs; - } - //trace:3970 - // //如果parent下不能放elm - // if(dtd.$inline[parent.tagName] && dtd.$block[elm.tagName] && !dtd[parent.tagName][elm.tagName]){ - // parent = parent.parentNode; - // elm.parentNode = parent; - // } - parent.children.push(elm); - //如果是自闭合节点返回父亲节点 - return dtd.$empty[tagName] ? parent : elm; - } - - function comment(parent, data) { - parent.children.push( - new uNode({ - type: "comment", - data: data, - parentNode: parent - }) - ); - } - - var match, - currentIndex = 0, - nextIndex = 0; - //设置根节点 - var root = new uNode({ - type: "root", - children: [] - }); - var currentParent = root; - - while ((match = re_tag.exec(htmlstr))) { - currentIndex = match.index; - try { - if (currentIndex > nextIndex) { - //text node - text(currentParent, htmlstr.slice(nextIndex, currentIndex)); - } - if (match[3]) { - if (dtd.$cdata[currentParent.tagName]) { - text(currentParent, match[0]); - } else { - //start tag - currentParent = element( - currentParent, - match[3].toLowerCase(), - match[4] - ); - } - } else if (match[1]) { - if (currentParent.type != "root") { - if (dtd.$cdata[currentParent.tagName] && !dtd.$cdata[match[1]]) { - text(currentParent, match[0]); - } else { - var tmpParent = currentParent; - while ( - currentParent.type == "element" && - currentParent.tagName != match[1].toLowerCase() - ) { - currentParent = currentParent.parentNode; - if (currentParent.type == "root") { - currentParent = tmpParent; - throw "break"; - } - } - //end tag - currentParent = currentParent.parentNode; - } - } - } else if (match[2]) { - //comment - comment(currentParent, match[2]); - } - } catch (e) {} - - nextIndex = re_tag.lastIndex; - } - //如果结束是文本,就有可能丢掉,所以这里手动判断一下 - //例如
  • sdfsdfsdf
  • sdfsdfsdfsdf - if (nextIndex < htmlstr.length) { - text(currentParent, htmlstr.slice(nextIndex)); - } - return root; - }); - - - // core/filternode.js - /** - * UE过滤节点的静态方法 - * @file - */ - - /** - * UEditor公用空间,UEditor所有的功能都挂载在该空间下 - * @module UE - */ - - /** - * 根据传入节点和过滤规则过滤相应节点 - * @module UE - * @since 1.2.6.1 - * @method filterNode - * @param { Object } root 指定root节点 - * @param { Object } rules 过滤规则json对象 - * @example - * ```javascript - * UE.filterNode(root,editor.options.filterRules); - * ``` - */ - var filterNode = (UE.filterNode = (function() { - function filterNode(node, rules) { - switch (node.type) { - case "text": - break; - case "element": - var val; - if ((val = rules[node.tagName])) { - if (val === "-") { - node.parentNode.removeChild(node); - } else if (utils.isFunction(val)) { - var parentNode = node.parentNode, - index = node.getIndex(); - val(node); - if (node.parentNode) { - if (node.children) { - for (var i = 0, ci; (ci = node.children[i]); ) { - filterNode(ci, rules); - if (ci.parentNode) { - i++; - } - } - } - } else { - for (var i = index, ci; (ci = parentNode.children[i]); ) { - filterNode(ci, rules); - if (ci.parentNode) { - i++; - } - } - } - } else { - var attrs = val["$"]; - if (attrs && node.attrs) { - var tmpAttrs = {}, - tmpVal; - for (var a in attrs) { - tmpVal = node.getAttr(a); - //todo 只先对style单独处理 - if (a == "style" && utils.isArray(attrs[a])) { - var tmpCssStyle = []; - utils.each(attrs[a], function(v) { - var tmp; - if ((tmp = node.getStyle(v))) { - tmpCssStyle.push(v + ":" + tmp); - } - }); - tmpVal = tmpCssStyle.join(";"); - } - if (tmpVal) { - tmpAttrs[a] = tmpVal; - } - } - node.attrs = tmpAttrs; - } - if (node.children) { - for (var i = 0, ci; (ci = node.children[i]); ) { - filterNode(ci, rules); - if (ci.parentNode) { - i++; - } - } - } - } - } else { - //如果不在名单里扣出子节点并删除该节点,cdata除外 - if (dtd.$cdata[node.tagName]) { - node.parentNode.removeChild(node); - } else { - var parentNode = node.parentNode, - index = node.getIndex(); - node.parentNode.removeChild(node, true); - for (var i = index, ci; (ci = parentNode.children[i]); ) { - filterNode(ci, rules); - if (ci.parentNode) { - i++; - } - } - } - } - break; - case "comment": - node.parentNode.removeChild(node); - } - } - return function(root, rules) { - if (utils.isEmptyObject(rules)) { - return root; - } - var val; - if ((val = rules["-"])) { - utils.each(val.split(" "), function(k) { - rules[k] = "-"; - }); - } - for (var i = 0, ci; (ci = root.children[i]); ) { - filterNode(ci, rules); - if (ci.parentNode) { - i++; - } - } - return root; - }; - })()); - - - // core/plugin.js - /** - * Created with JetBrains PhpStorm. - * User: campaign - * Date: 10/8/13 - * Time: 6:15 PM - * To change this template use File | Settings | File Templates. - */ - UE.plugin = (function() { - var _plugins = {}; - return { - register: function(pluginName, fn, oldOptionName, afterDisabled) { - if (oldOptionName && utils.isFunction(oldOptionName)) { - afterDisabled = oldOptionName; - oldOptionName = null; - } - _plugins[pluginName] = { - optionName: oldOptionName || pluginName, - execFn: fn, - //当插件被禁用时执行 - afterDisabled: afterDisabled - }; - }, - load: function(editor) { - utils.each(_plugins, function(plugin) { - var _export = plugin.execFn.call(editor); - if (editor.options[plugin.optionName] !== false) { - if (_export) { - //后边需要再做扩展 - utils.each(_export, function(v, k) { - switch (k.toLowerCase()) { - case "shortcutkey": - editor.addshortcutkey(v); - break; - case "bindevents": - utils.each(v, function(fn, eventName) { - editor.addListener(eventName, fn); - }); - break; - case "bindmultievents": - utils.each(utils.isArray(v) ? v : [v], function(event) { - var types = utils.trim(event.type).split(/\s+/); - utils.each(types, function(eventName) { - editor.addListener(eventName, event.handler); - }); - }); - break; - case "commands": - utils.each(v, function(execFn, execName) { - editor.commands[execName] = execFn; - }); - break; - case "outputrule": - editor.addOutputRule(v); - break; - case "inputrule": - editor.addInputRule(v); - break; - case "defaultoptions": - editor.setOpt(v); - } - }); - } - } else if (plugin.afterDisabled) { - plugin.afterDisabled.call(editor); - } - }); - //向下兼容 - utils.each(UE.plugins, function(plugin) { - plugin.call(editor); - }); - }, - run: function(pluginName, editor) { - var plugin = _plugins[pluginName]; - if (plugin) { - plugin.exeFn.call(editor); - } - } - }; - })(); - - - // core/keymap.js - var keymap = (UE.keymap = { - Backspace: 8, - Tab: 9, - Enter: 13, - - Shift: 16, - Control: 17, - Alt: 18, - CapsLock: 20, - - Esc: 27, - - Spacebar: 32, - - PageUp: 33, - PageDown: 34, - End: 35, - Home: 36, - - Left: 37, - Up: 38, - Right: 39, - Down: 40, - - Insert: 45, - - Del: 46, - - NumLock: 144, - - Cmd: 91, - - "=": 187, - "-": 189, - - b: 66, - i: 73, - //回退 - z: 90, - y: 89, - //粘贴 - v: 86, - x: 88, - - s: 83, - - n: 78 - }); - - - // core/localstorage.js - //存储媒介封装 - var LocalStorage = (UE.LocalStorage = (function() { - var storage = window.localStorage || getUserData() || null, - LOCAL_FILE = "localStorage"; - - return { - saveLocalData: function(key, data) { - if (storage && data) { - storage.setItem(key, data); - return true; - } - - return false; - }, - - getLocalData: function(key) { - if (storage) { - return storage.getItem(key); - } - - return null; - }, - - removeItem: function(key) { - storage && storage.removeItem(key); - } - }; - - function getUserData() { - var container = document.createElement("div"); - container.style.display = "none"; - - if (!container.addBehavior) { - return null; - } - - container.addBehavior("#default#userdata"); - - return { - getItem: function(key) { - var result = null; - - try { - document.body.appendChild(container); - container.load(LOCAL_FILE); - result = container.getAttribute(key); - document.body.removeChild(container); - } catch (e) {} - - return result; - }, - - setItem: function(key, value) { - document.body.appendChild(container); - container.setAttribute(key, value); - container.save(LOCAL_FILE); - document.body.removeChild(container); - }, - - //// 暂时没有用到 - //clear: function () { - // - // var expiresTime = new Date(); - // expiresTime.setFullYear(expiresTime.getFullYear() - 1); - // document.body.appendChild(container); - // container.expires = expiresTime.toUTCString(); - // container.save(LOCAL_FILE); - // document.body.removeChild(container); - // - //}, - - removeItem: function(key) { - document.body.appendChild(container); - container.removeAttribute(key); - container.save(LOCAL_FILE); - document.body.removeChild(container); - } - }; - } - })()); - - (function() { - var ROOTKEY = "ueditor_preference"; - - UE.Editor.prototype.setPreferences = function(key, value) { - var obj = {}; - if (utils.isString(key)) { - obj[key] = value; - } else { - obj = key; - } - var data = LocalStorage.getLocalData(ROOTKEY); - if (data && (data = utils.str2json(data))) { - utils.extend(data, obj); - } else { - data = obj; - } - data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data)); - }; - - UE.Editor.prototype.getPreferences = function(key) { - var data = LocalStorage.getLocalData(ROOTKEY); - if (data && (data = utils.str2json(data))) { - return key ? data[key] : data; - } - return null; - }; - - UE.Editor.prototype.removePreferences = function(key) { - var data = LocalStorage.getLocalData(ROOTKEY); - if (data && (data = utils.str2json(data))) { - data[key] = undefined; - delete data[key]; - } - data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data)); - }; - })(); - - - // plugins/defaultfilter.js - ///import core - ///plugin 编辑器默认的过滤转换机制 - - UE.plugins["defaultfilter"] = function() { - var me = this; - me.setOpt({ - allowDivTransToP: true, - disabledTableInTable: true, - rgb2Hex: true - }); - //默认的过滤处理 - //进入编辑器的内容处理 - me.addInputRule(function(root) { - var allowDivTransToP = this.options.allowDivTransToP; - var val; - function tdParent(node) { - while (node && node.type == "element") { - if (node.tagName == "td") { - return true; - } - node = node.parentNode; - } - return false; - } - //进行默认的处理 - root.traversal(function(node) { - if (node.type == "element") { - if ( - !dtd.$cdata[node.tagName] && - me.options.autoClearEmptyNode && - dtd.$inline[node.tagName] && - !dtd.$empty[node.tagName] && - (!node.attrs || utils.isEmptyObject(node.attrs)) - ) { - if (!node.firstChild()) node.parentNode.removeChild(node); - else if ( - node.tagName == "span" && - (!node.attrs || utils.isEmptyObject(node.attrs)) - ) { - node.parentNode.removeChild(node, true); - } - return; - } - switch (node.tagName) { - case "style": - case "script": - node.setAttr({ - cdata_tag: node.tagName, - cdata_data: node.innerHTML() || "", - _ue_custom_node_: "true" - }); - node.tagName = "div"; - node.innerHTML(""); - break; - case "a": - if ((val = node.getAttr("href"))) { - node.setAttr("_href", val); - } - break; - case "img": - //todo base64暂时去掉,后边做远程图片上传后,干掉这个 - if ((val = node.getAttr("src"))) { - if (/^data:/.test(val)) { - node.parentNode.removeChild(node); - break; - } - } - node.setAttr("_src", node.getAttr("src")); - break; - case "span": - if (browser.webkit && (val = node.getStyle("white-space"))) { - if (/nowrap|normal/.test(val)) { - node.setStyle("white-space", ""); - if ( - me.options.autoClearEmptyNode && - utils.isEmptyObject(node.attrs) - ) { - node.parentNode.removeChild(node, true); - } - } - } - val = node.getAttr("id"); - if (val && /^_baidu_bookmark_/i.test(val)) { - node.parentNode.removeChild(node); - } - break; - case "p": - if ((val = node.getAttr("align"))) { - node.setAttr("align"); - node.setStyle("text-align", val); - } - //trace:3431 - // var cssStyle = node.getAttr('style'); - // if (cssStyle) { - // cssStyle = cssStyle.replace(/(margin|padding)[^;]+/g, ''); - // node.setAttr('style', cssStyle) - // - // } - //p标签不允许嵌套 - utils.each(node.children, function(n) { - if (n.type == "element" && n.tagName == "p") { - var next = n.nextSibling(); - node.parentNode.insertAfter(n, node); - var last = n; - while (next) { - var tmp = next.nextSibling(); - node.parentNode.insertAfter(next, last); - last = next; - next = tmp; - } - return false; - } - }); - if (!node.firstChild()) { - node.innerHTML(browser.ie ? " " : "
    "); - } - break; - case "div": - if (node.getAttr("cdata_tag")) { - break; - } - //针对代码这里不处理插入代码的div - val = node.getAttr("class"); - if (val && /^line number\d+/.test(val)) { - break; - } - if (!allowDivTransToP) { - break; - } - var tmpNode, - p = UE.uNode.createElement("p"); - while ((tmpNode = node.firstChild())) { - if ( - tmpNode.type == "text" || - !UE.dom.dtd.$block[tmpNode.tagName] - ) { - p.appendChild(tmpNode); - } else { - if (p.firstChild()) { - node.parentNode.insertBefore(p, node); - p = UE.uNode.createElement("p"); - } else { - node.parentNode.insertBefore(tmpNode, node); - } - } - } - if (p.firstChild()) { - node.parentNode.insertBefore(p, node); - } - node.parentNode.removeChild(node); - break; - case "dl": - node.tagName = "ul"; - break; - case "dt": - case "dd": - node.tagName = "li"; - break; - case "li": - var className = node.getAttr("class"); - if (!className || !/list\-/.test(className)) { - node.setAttr(); - } - var tmpNodes = node.getNodesByTagName("ol ul"); - UE.utils.each(tmpNodes, function(n) { - node.parentNode.insertAfter(n, node); - }); - break; - case "td": - case "th": - case "caption": - if (!node.children || !node.children.length) { - node.appendChild( - browser.ie11below - ? UE.uNode.createText(" ") - : UE.uNode.createElement("br") - ); - } - break; - case "table": - if (me.options.disabledTableInTable && tdParent(node)) { - node.parentNode.insertBefore( - UE.uNode.createText(node.innerText()), - node - ); - node.parentNode.removeChild(node); - } - } - } - // if(node.type == 'comment'){ - // node.parentNode.removeChild(node); - // } - }); - }); - - //从编辑器出去的内容处理 - me.addOutputRule(function(root) { - var val; - root.traversal(function(node) { - if (node.type == "element") { - if ( - me.options.autoClearEmptyNode && - dtd.$inline[node.tagName] && - !dtd.$empty[node.tagName] && - (!node.attrs || utils.isEmptyObject(node.attrs)) - ) { - if (!node.firstChild()) node.parentNode.removeChild(node); - else if ( - node.tagName == "span" && - (!node.attrs || utils.isEmptyObject(node.attrs)) - ) { - node.parentNode.removeChild(node, true); - } - return; - } - switch (node.tagName) { - case "div": - if ((val = node.getAttr("cdata_tag"))) { - node.tagName = val; - node.appendChild(UE.uNode.createText(node.getAttr("cdata_data"))); - node.setAttr({ - cdata_tag: "", - cdata_data: "", - _ue_custom_node_: "" - }); - } - break; - case "a": - if ((val = node.getAttr("_href"))) { - node.setAttr({ - href: utils.html(val), - _href: "" - }); - } - break; - break; - case "span": - val = node.getAttr("id"); - if (val && /^_baidu_bookmark_/i.test(val)) { - node.parentNode.removeChild(node); - } - //将color的rgb格式转换为#16进制格式 - if (me.getOpt("rgb2Hex")) { - var cssStyle = node.getAttr("style"); - if (cssStyle) { - node.setAttr( - "style", - cssStyle.replace(/rgba?\(([\d,\s]+)\)/g, function(a, value) { - var array = value.split(","); - if (array.length > 3) return ""; - value = "#"; - for (var i = 0, color; (color = array[i++]); ) { - color = parseInt( - color.replace(/[^\d]/gi, ""), - 10 - ).toString(16); - value += color.length == 1 ? "0" + color : color; - } - return value.toUpperCase(); - }) - ); - } - } - break; - case "img": - if ((val = node.getAttr("_src"))) { - node.setAttr({ - src: node.getAttr("_src"), - _src: "" - }); - } - } - } - }); - }); - }; - - - // plugins/inserthtml.js - /** - * 插入html字符串插件 - * @file - * @since 1.2.6.1 - */ - - /** - * 插入html代码 - * @command inserthtml - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } html 插入的html字符串 - * @remaind 插入的标签内容是在当前的选区位置上插入,如果当前是闭合状态,那直接插入内容, 如果当前是选中状态,将先清除当前选中内容后,再做插入 - * @warning 注意:该命令会对当前选区的位置,对插入的内容进行过滤转换处理。 过滤的规则遵循html语意化的原则。 - * @example - * ```javascript - * //xxx[BB]xxx 当前选区为非闭合选区,选中BB这两个文本 - * //执行命令,插入CC - * //插入后的效果 xxxCCxxx - * //

    xx|xxx

    当前选区为闭合状态 - * //插入

    CC

    - * //结果

    xx

    CC

    xxx

    - * //

    xxxx

    |

    xxx

    当前选区在两个p标签之间 - * //插入 xxxx - * //结果

    xxxx

    xxxx

    xxx

    - * ``` - */ - - UE.commands["inserthtml"] = { - execCommand: function(command, html, notNeedFilter) { - var me = this, - range, - div; - if (!html) { - return; - } - if (me.fireEvent("beforeinserthtml", html) === true) { - return; - } - range = me.selection.getRange(); - div = range.document.createElement("div"); - div.style.display = "inline"; - - if (!notNeedFilter) { - var root = UE.htmlparser(html); - //如果给了过滤规则就先进行过滤 - if (me.options.filterRules) { - UE.filterNode(root, me.options.filterRules); - } - //执行默认的处理 - me.filterInputRule(root); - html = root.toHtml(); - } - div.innerHTML = utils.trim(html); - - if (!range.collapsed) { - var tmpNode = range.startContainer; - if (domUtils.isFillChar(tmpNode)) { - range.setStartBefore(tmpNode); - } - tmpNode = range.endContainer; - if (domUtils.isFillChar(tmpNode)) { - range.setEndAfter(tmpNode); - } - range.txtToElmBoundary(); - //结束边界可能放到了br的前边,要把br包含进来 - // x[xxx]
    - if (range.endContainer && range.endContainer.nodeType == 1) { - tmpNode = range.endContainer.childNodes[range.endOffset]; - if (tmpNode && domUtils.isBr(tmpNode)) { - range.setEndAfter(tmpNode); - } - } - if (range.startOffset == 0) { - tmpNode = range.startContainer; - if (domUtils.isBoundaryNode(tmpNode, "firstChild")) { - tmpNode = range.endContainer; - if ( - range.endOffset == - (tmpNode.nodeType == 3 - ? tmpNode.nodeValue.length - : tmpNode.childNodes.length) && - domUtils.isBoundaryNode(tmpNode, "lastChild") - ) { - me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; - range.setStart(me.body.firstChild, 0).collapse(true); - } - } - } - !range.collapsed && range.deleteContents(); - if (range.startContainer.nodeType == 1) { - var child = range.startContainer.childNodes[range.startOffset], - pre; - if ( - child && - domUtils.isBlockElm(child) && - (pre = child.previousSibling) && - domUtils.isBlockElm(pre) - ) { - range.setEnd(pre, pre.childNodes.length).collapse(); - while (child.firstChild) { - pre.appendChild(child.firstChild); - } - domUtils.remove(child); - } - } - } - - var child, - parent, - pre, - tmp, - hadBreak = 0, - nextNode; - //如果当前位置选中了fillchar要干掉,要不会产生空行 - if (range.inFillChar()) { - child = range.startContainer; - if (domUtils.isFillChar(child)) { - range.setStartBefore(child).collapse(true); - domUtils.remove(child); - } else if (domUtils.isFillChar(child, true)) { - child.nodeValue = child.nodeValue.replace(fillCharReg, ""); - range.startOffset--; - range.collapsed && range.collapse(true); - } - } - //列表单独处理 - var li = domUtils.findParentByTagName(range.startContainer, "li", true); - if (li) { - var next, last; - while ((child = div.firstChild)) { - //针对hr单独处理一下先 - while ( - child && - (child.nodeType == 3 || - !domUtils.isBlockElm(child) || - child.tagName == "HR") - ) { - next = child.nextSibling; - range.insertNode(child).collapse(); - last = child; - child = next; - } - if (child) { - if (/^(ol|ul)$/i.test(child.tagName)) { - while (child.firstChild) { - last = child.firstChild; - domUtils.insertAfter(li, child.firstChild); - li = li.nextSibling; - } - domUtils.remove(child); - } else { - var tmpLi; - next = child.nextSibling; - tmpLi = me.document.createElement("li"); - domUtils.insertAfter(li, tmpLi); - tmpLi.appendChild(child); - last = child; - child = next; - li = tmpLi; - } - } - } - li = domUtils.findParentByTagName(range.startContainer, "li", true); - if (domUtils.isEmptyBlock(li)) { - domUtils.remove(li); - } - if (last) { - range.setStartAfter(last).collapse(true).select(true); - } - } else { - while ((child = div.firstChild)) { - if (hadBreak) { - var p = me.document.createElement("p"); - while (child && (child.nodeType == 3 || !dtd.$block[child.tagName])) { - nextNode = child.nextSibling; - p.appendChild(child); - child = nextNode; - } - if (p.firstChild) { - child = p; - } - } - range.insertNode(child); - nextNode = child.nextSibling; - if ( - !hadBreak && - child.nodeType == domUtils.NODE_ELEMENT && - domUtils.isBlockElm(child) - ) { - parent = domUtils.findParent(child, function(node) { - return domUtils.isBlockElm(node); - }); - if ( - parent && - parent.tagName.toLowerCase() != "body" && - !( - dtd[parent.tagName][child.nodeName] && child.parentNode === parent - ) - ) { - if (!dtd[parent.tagName][child.nodeName]) { - pre = parent; - } else { - tmp = child.parentNode; - while (tmp !== parent) { - pre = tmp; - tmp = tmp.parentNode; - } - } - - domUtils.breakParent(child, pre || tmp); - //去掉break后前一个多余的节点

    |<[p> ==>

    |

    - var pre = child.previousSibling; - domUtils.trimWhiteTextNode(pre); - if (!pre.childNodes.length) { - domUtils.remove(pre); - } - //trace:2012,在非ie的情况,切开后剩下的节点有可能不能点入光标添加br占位 - - if ( - !browser.ie && - (next = child.nextSibling) && - domUtils.isBlockElm(next) && - next.lastChild && - !domUtils.isBr(next.lastChild) - ) { - next.appendChild(me.document.createElement("br")); - } - hadBreak = 1; - } - } - var next = child.nextSibling; - if (!div.firstChild && next && domUtils.isBlockElm(next)) { - range.setStart(next, 0).collapse(true); - break; - } - range.setEndAfter(child).collapse(); - } - - child = range.startContainer; - - if (nextNode && domUtils.isBr(nextNode)) { - domUtils.remove(nextNode); - } - //用chrome可能有空白展位符 - if (domUtils.isBlockElm(child) && domUtils.isEmptyNode(child)) { - if ((nextNode = child.nextSibling)) { - domUtils.remove(child); - if (nextNode.nodeType == 1 && dtd.$block[nextNode.tagName]) { - range.setStart(nextNode, 0).collapse(true).shrinkBoundary(); - } - } else { - try { - child.innerHTML = browser.ie ? domUtils.fillChar : "
    "; - } catch (e) { - range.setStartBefore(child); - domUtils.remove(child); - } - } - } - //加上true因为在删除表情等时会删两次,第一次是删的fillData - try { - range.select(true); - } catch (e) {} - } - - setTimeout(function() { - range = me.selection.getRange(); - range.scrollToView( - me.autoHeightEnabled, - me.autoHeightEnabled ? domUtils.getXY(me.iframe).y : 0 - ); - me.fireEvent("afterinserthtml", html); - }, 200); - } - }; - - - // plugins/autotypeset.js - /** - * 自动排版 - * @file - * @since 1.2.6.1 - */ - - /** - * 对当前编辑器的内容执行自动排版, 排版的行为根据config配置文件里的“autotypeset”选项进行控制。 - * @command autotypeset - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'autotypeset' ); - * ``` - */ - - UE.plugins["autotypeset"] = function() { - this.setOpt({ - autotypeset: { - mergeEmptyline: true, //合并空行 - removeClass: true, //去掉冗余的class - removeEmptyline: false, //去掉空行 - textAlign: "left", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版 - imageBlockLine: "center", //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版 - pasteFilter: false, //根据规则过滤没事粘贴进来的内容 - clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号 - clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体 - removeEmptyNode: false, // 去掉空节点 - //可以去掉的标签 - removeTagNames: utils.extend({ div: 1 }, dtd.$removeEmpty), - indent: false, // 行首缩进 - indentValue: "2em", //行首缩进的大小 - bdc2sb: false, - tobdc: false - } - }); - - var me = this, - opt = me.options.autotypeset, - remainClass = { - selectTdClass: 1, - pagebreak: 1, - anchorclass: 1 - }, - remainTag = { - li: 1 - }, - tags = { - div: 1, - p: 1, - //trace:2183 这些也认为是行 - blockquote: 1, - center: 1, - h1: 1, - h2: 1, - h3: 1, - h4: 1, - h5: 1, - h6: 1, - span: 1 - }, - highlightCont; - //升级了版本,但配置项目里没有autotypeset - if (!opt) { - return; - } - - readLocalOpts(); - - function isLine(node, notEmpty) { - if (!node || node.nodeType == 3) return 0; - if (domUtils.isBr(node)) return 1; - if (node && node.parentNode && tags[node.tagName.toLowerCase()]) { - if ( - (highlightCont && highlightCont.contains(node)) || - node.getAttribute("pagebreak") - ) { - return 0; - } - - return notEmpty - ? !domUtils.isEmptyBlock(node) - : domUtils.isEmptyBlock( - node, - new RegExp("[\\s" + domUtils.fillChar + "]", "g") - ); - } - } - - function removeNotAttributeSpan(node) { - if (!node.style.cssText) { - domUtils.removeAttributes(node, ["style"]); - if ( - node.tagName.toLowerCase() == "span" && - domUtils.hasNoAttributes(node) - ) { - domUtils.remove(node, true); - } - } - } - function autotype(type, html) { - var me = this, - cont; - if (html) { - if (!opt.pasteFilter) { - return; - } - cont = me.document.createElement("div"); - cont.innerHTML = html.html; - } else { - cont = me.document.body; - } - var nodes = domUtils.getElementsByTagName(cont, "*"); - - // 行首缩进,段落方向,段间距,段内间距 - for (var i = 0, ci; (ci = nodes[i++]); ) { - if (me.fireEvent("excludeNodeinautotype", ci) === true) { - continue; - } - //font-size - if (opt.clearFontSize && ci.style.fontSize) { - domUtils.removeStyle(ci, "font-size"); - - removeNotAttributeSpan(ci); - } - //font-family - if (opt.clearFontFamily && ci.style.fontFamily) { - domUtils.removeStyle(ci, "font-family"); - removeNotAttributeSpan(ci); - } - - if (isLine(ci)) { - //合并空行 - if (opt.mergeEmptyline) { - var next = ci.nextSibling, - tmpNode, - isBr = domUtils.isBr(ci); - while (isLine(next)) { - tmpNode = next; - next = tmpNode.nextSibling; - if (isBr && (!next || (next && !domUtils.isBr(next)))) { - break; - } - domUtils.remove(tmpNode); - } - } - //去掉空行,保留占位的空行 - if ( - opt.removeEmptyline && - domUtils.inDoc(ci, cont) && - !remainTag[ci.parentNode.tagName.toLowerCase()] - ) { - if (domUtils.isBr(ci)) { - next = ci.nextSibling; - if (next && !domUtils.isBr(next)) { - continue; - } - } - domUtils.remove(ci); - continue; - } - } - if (isLine(ci, true) && ci.tagName != "SPAN") { - if (opt.indent) { - ci.style.textIndent = opt.indentValue; - } - if (opt.textAlign) { - ci.style.textAlign = opt.textAlign; - } - // if(opt.lineHeight) - // ci.style.lineHeight = opt.lineHeight + 'cm'; - } - - //去掉class,保留的class不去掉 - if ( - opt.removeClass && - ci.className && - !remainClass[ci.className.toLowerCase()] - ) { - if (highlightCont && highlightCont.contains(ci)) { - continue; - } - domUtils.removeAttributes(ci, ["class"]); - } - - //表情不处理 - if ( - opt.imageBlockLine && - ci.tagName.toLowerCase() == "img" && - !ci.getAttribute("emotion") - ) { - if (html) { - var img = ci; - switch (opt.imageBlockLine) { - case "left": - case "right": - case "none": - var pN = img.parentNode, - tmpNode, - pre, - next; - while (dtd.$inline[pN.tagName] || pN.tagName == "A") { - pN = pN.parentNode; - } - tmpNode = pN; - if ( - tmpNode.tagName == "P" && - domUtils.getStyle(tmpNode, "text-align") == "center" - ) { - if ( - !domUtils.isBody(tmpNode) && - domUtils.getChildCount(tmpNode, function(node) { - return !domUtils.isBr(node) && !domUtils.isWhitespace(node); - }) == 1 - ) { - pre = tmpNode.previousSibling; - next = tmpNode.nextSibling; - if ( - pre && - next && - pre.nodeType == 1 && - next.nodeType == 1 && - pre.tagName == next.tagName && - domUtils.isBlockElm(pre) - ) { - pre.appendChild(tmpNode.firstChild); - while (next.firstChild) { - pre.appendChild(next.firstChild); - } - domUtils.remove(tmpNode); - domUtils.remove(next); - } else { - domUtils.setStyle(tmpNode, "text-align", ""); - } - } - } - domUtils.setStyle(img, "float", opt.imageBlockLine); - break; - case "center": - if (me.queryCommandValue("imagefloat") != "center") { - pN = img.parentNode; - domUtils.setStyle(img, "float", "none"); - tmpNode = img; - while ( - pN && - domUtils.getChildCount(pN, function(node) { - return !domUtils.isBr(node) && !domUtils.isWhitespace(node); - }) == 1 && - (dtd.$inline[pN.tagName] || pN.tagName == "A") - ) { - tmpNode = pN; - pN = pN.parentNode; - } - var pNode = me.document.createElement("p"); - domUtils.setAttributes(pNode, { - style: "text-align:center" - }); - tmpNode.parentNode.insertBefore(pNode, tmpNode); - pNode.appendChild(tmpNode); - domUtils.setStyle(tmpNode, "float", ""); - } - } - } else { - var range = me.selection.getRange(); - range.selectNode(ci).select(); - me.execCommand("imagefloat", opt.imageBlockLine); - } - } - - //去掉冗余的标签 - if (opt.removeEmptyNode) { - if ( - opt.removeTagNames[ci.tagName.toLowerCase()] && - domUtils.hasNoAttributes(ci) && - domUtils.isEmptyBlock(ci) - ) { - domUtils.remove(ci); - } - } - } - if (opt.tobdc) { - var root = UE.htmlparser(cont.innerHTML); - root.traversal(function(node) { - if (node.type == "text") { - node.data = ToDBC(node.data); - } - }); - cont.innerHTML = root.toHtml(); - } - if (opt.bdc2sb) { - var root = UE.htmlparser(cont.innerHTML); - root.traversal(function(node) { - if (node.type == "text") { - node.data = DBC2SB(node.data); - } - }); - cont.innerHTML = root.toHtml(); - } - if (html) { - html.html = cont.innerHTML; - } - } - if (opt.pasteFilter) { - me.addListener("beforepaste", autotype); - } - - function DBC2SB(str) { - var result = ""; - for (var i = 0; i < str.length; i++) { - var code = str.charCodeAt(i); //获取当前字符的unicode编码 - if (code >= 65281 && code <= 65373) { - //在这个unicode编码范围中的是所有的英文字母已经各种字符 - result += String.fromCharCode(str.charCodeAt(i) - 65248); //把全角字符的unicode编码转换为对应半角字符的unicode码 - } else if (code == 12288) { - //空格 - result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32); - } else { - result += str.charAt(i); - } - } - return result; - } - function ToDBC(txtstring) { - txtstring = utils.html(txtstring); - var tmp = ""; - var mark = ""; /*用于判断,如果是html尖括里的标记,则不进行全角的转换*/ - for (var i = 0; i < txtstring.length; i++) { - if (txtstring.charCodeAt(i) == 32) { - tmp = tmp + String.fromCharCode(12288); - } else if (txtstring.charCodeAt(i) < 127) { - tmp = tmp + String.fromCharCode(txtstring.charCodeAt(i) + 65248); - } else { - tmp += txtstring.charAt(i); - } - } - return tmp; - } - - function readLocalOpts() { - var cookieOpt = me.getPreferences("autotypeset"); - utils.extend(me.options.autotypeset, cookieOpt); - } - - me.commands["autotypeset"] = { - execCommand: function() { - me.removeListener("beforepaste", autotype); - if (opt.pasteFilter) { - me.addListener("beforepaste", autotype); - } - autotype.call(me); - } - }; - }; - - - // plugins/autosubmit.js - /** - * 快捷键提交 - * @file - * @since 1.2.6.1 - */ - - /** - * 提交表单 - * @command autosubmit - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'autosubmit' ); - * ``` - */ - - UE.plugin.register("autosubmit", function() { - return { - shortcutkey: { - autosubmit: "ctrl+13" //手动提交 - }, - commands: { - autosubmit: { - execCommand: function() { - var me = this, - form = domUtils.findParentByTagName(me.iframe, "form", false); - if (form) { - if (me.fireEvent("beforesubmit") === false) { - return; - } - me.sync(); - form.submit(); - } - } - } - } - }; - }); - - - // plugins/background.js - /** - * 背景插件,为UEditor提供设置背景功能 - * @file - * @since 1.2.6.1 - */ - UE.plugin.register("background", function() { - var me = this, - cssRuleId = "editor_background", - isSetColored, - reg = new RegExp("body[\\s]*\\{(.+)\\}", "i"); - - function stringToObj(str) { - var obj = {}, - styles = str.split(";"); - utils.each(styles, function(v) { - var index = v.indexOf(":"), - key = utils.trim(v.substr(0, index)).toLowerCase(); - key && (obj[key] = utils.trim(v.substr(index + 1) || "")); - }); - return obj; - } - - function setBackground(obj) { - if (obj) { - var styles = []; - for (var name in obj) { - if (obj.hasOwnProperty(name)) { - styles.push(name + ":" + obj[name] + "; "); - } - } - utils.cssRule( - cssRuleId, - styles.length ? "body{" + styles.join("") + "}" : "", - me.document - ); - } else { - utils.cssRule(cssRuleId, "", me.document); - } - } - //重写editor.hasContent方法 - - var orgFn = me.hasContents; - me.hasContents = function() { - if (me.queryCommandValue("background")) { - return true; - } - return orgFn.apply(me, arguments); - }; - return { - bindEvents: { - getAllHtml: function(type, headHtml) { - var body = this.body, - su = domUtils.getComputedStyle(body, "background-image"), - url = ""; - if (su.indexOf(me.options.imagePath) > 0) { - url = su - .substring(su.indexOf(me.options.imagePath), su.length - 1) - .replace(/"|\(|\)/gi, ""); - } else { - url = su != "none" ? su.replace(/url\("?|"?\)/gi, "") : ""; - } - var html = ' "; - headHtml.push(html); - }, - aftersetcontent: function() { - if (isSetColored == false) setBackground(); - } - }, - inputRule: function(root) { - isSetColored = false; - utils.each(root.getNodesByTagName("p"), function(p) { - var styles = p.getAttr("data-background"); - if (styles) { - isSetColored = true; - setBackground(stringToObj(styles)); - p.parentNode.removeChild(p); - } - }); - }, - outputRule: function(root) { - var me = this, - styles = (utils.cssRule(cssRuleId, me.document) || "") - .replace(/[\n\r]+/g, "") - .match(reg); - if (styles) { - root.appendChild( - UE.uNode.createElement( - '


    ' - ) - ); - } - }, - commands: { - background: { - execCommand: function(cmd, obj) { - setBackground(obj); - }, - queryCommandValue: function() { - var me = this, - styles = (utils.cssRule(cssRuleId, me.document) || "") - .replace(/[\n\r]+/g, "") - .match(reg); - return styles ? stringToObj(styles[1]) : null; - }, - notNeedUndo: true - } - } - }; - }); - - - // plugins/image.js - /** - * 图片插入、排版插件 - * @file - * @since 1.2.6.1 - */ - - /** - * 图片对齐方式 - * @command imagefloat - * @method execCommand - * @remind 值center为独占一行居中 - * @param { String } cmd 命令字符串 - * @param { String } align 对齐方式,可传left、right、none、center - * @remaind center表示图片独占一行 - * @example - * ```javascript - * editor.execCommand( 'imagefloat', 'center' ); - * ``` - */ - - /** - * 如果选区所在位置是图片区域 - * @command imagefloat - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回图片对齐方式 - * @example - * ```javascript - * editor.queryCommandValue( 'imagefloat' ); - * ``` - */ - - UE.commands["imagefloat"] = { - execCommand: function(cmd, align) { - var me = this, - range = me.selection.getRange(); - if (!range.collapsed) { - var img = range.getClosedNode(); - if (img && img.tagName == "IMG") { - switch (align) { - case "left": - case "right": - case "none": - var pN = img.parentNode, - tmpNode, - pre, - next; - while (dtd.$inline[pN.tagName] || pN.tagName == "A") { - pN = pN.parentNode; - } - tmpNode = pN; - if ( - tmpNode.tagName == "P" && - domUtils.getStyle(tmpNode, "text-align") == "center" - ) { - if ( - !domUtils.isBody(tmpNode) && - domUtils.getChildCount(tmpNode, function(node) { - return !domUtils.isBr(node) && !domUtils.isWhitespace(node); - }) == 1 - ) { - pre = tmpNode.previousSibling; - next = tmpNode.nextSibling; - if ( - pre && - next && - pre.nodeType == 1 && - next.nodeType == 1 && - pre.tagName == next.tagName && - domUtils.isBlockElm(pre) - ) { - pre.appendChild(tmpNode.firstChild); - while (next.firstChild) { - pre.appendChild(next.firstChild); - } - domUtils.remove(tmpNode); - domUtils.remove(next); - } else { - domUtils.setStyle(tmpNode, "text-align", ""); - } - } - - range.selectNode(img).select(); - } - domUtils.setStyle(img, "float", align == "none" ? "" : align); - if (align == "none") { - domUtils.removeAttributes(img, "align"); - } - - break; - case "center": - if (me.queryCommandValue("imagefloat") != "center") { - pN = img.parentNode; - domUtils.setStyle(img, "float", ""); - domUtils.removeAttributes(img, "align"); - tmpNode = img; - while ( - pN && - domUtils.getChildCount(pN, function(node) { - return !domUtils.isBr(node) && !domUtils.isWhitespace(node); - }) == 1 && - (dtd.$inline[pN.tagName] || pN.tagName == "A") - ) { - tmpNode = pN; - pN = pN.parentNode; - } - range.setStartBefore(tmpNode).setCursor(false); - pN = me.document.createElement("div"); - pN.appendChild(tmpNode); - domUtils.setStyle(tmpNode, "float", ""); - - me.execCommand( - "insertHtml", - '

    ' + - pN.innerHTML + - "

    " - ); - - tmpNode = me.document.getElementById("_img_parent_tmp"); - tmpNode.removeAttribute("id"); - tmpNode = tmpNode.firstChild; - range.selectNode(tmpNode).select(); - //去掉后边多余的元素 - next = tmpNode.parentNode.nextSibling; - if (next && domUtils.isEmptyNode(next)) { - domUtils.remove(next); - } - } - - break; - } - } - } - }, - queryCommandValue: function() { - var range = this.selection.getRange(), - startNode, - floatStyle; - if (range.collapsed) { - return "none"; - } - startNode = range.getClosedNode(); - if (startNode && startNode.nodeType == 1 && startNode.tagName == "IMG") { - floatStyle = - domUtils.getComputedStyle(startNode, "float") || - startNode.getAttribute("align"); - - if (floatStyle == "none") { - floatStyle = domUtils.getComputedStyle( - startNode.parentNode, - "text-align" - ) == "center" - ? "center" - : floatStyle; - } - return { - left: 1, - right: 1, - center: 1 - }[floatStyle] - ? floatStyle - : "none"; - } - return "none"; - }, - queryCommandState: function() { - var range = this.selection.getRange(), - startNode; - - if (range.collapsed) return -1; - - startNode = range.getClosedNode(); - if (startNode && startNode.nodeType == 1 && startNode.tagName == "IMG") { - return 0; - } - return -1; - } - }; - - /** - * 插入图片 - * @command insertimage - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Object } opt 属性键值对,这些属性都将被复制到当前插入图片 - * @remind 该命令第二个参数可接受一个图片配置项对象的数组,可以插入多张图片, - * 此时数组的每一个元素都是一个Object类型的图片属性集合。 - * @example - * ```javascript - * editor.execCommand( 'insertimage', { - * src:'a/b/c.jpg', - * width:'100', - * height:'100' - * } ); - * ``` - * @example - * ```javascript - * editor.execCommand( 'insertimage', [{ - * src:'a/b/c.jpg', - * width:'100', - * height:'100' - * },{ - * src:'a/b/d.jpg', - * width:'100', - * height:'100' - * }] ); - * ``` - */ - - UE.commands["insertimage"] = { - execCommand: function(cmd, opt) { - opt = utils.isArray(opt) ? opt : [opt]; - if (!opt.length) { - return; - } - var me = this, - range = me.selection.getRange(), - img = range.getClosedNode(); - - if (me.fireEvent("beforeinsertimage", opt) === true) { - return; - } - - if ( - img && - /img/i.test(img.tagName) && - (img.className != "edui-faked-video" || - img.className.indexOf("edui-upload-video") != -1) && - !img.getAttribute("word_img") - ) { - var first = opt.shift(); - var floatStyle = first["floatStyle"]; - delete first["floatStyle"]; - //// img.style.border = (first.border||0) +"px solid #000"; - //// img.style.margin = (first.margin||0) +"px"; - // img.style.cssText += ';margin:' + (first.margin||0) +"px;" + 'border:' + (first.border||0) +"px solid #000"; - domUtils.setAttributes(img, first); - me.execCommand("imagefloat", floatStyle); - if (opt.length > 0) { - range.setStartAfter(img).setCursor(false, true); - me.execCommand("insertimage", opt); - } - } else { - var html = [], - str = "", - ci; - ci = opt[0]; - if (opt.length == 1) { - str = - '' + ci.alt + '"; - if (ci["floatStyle"] == "center") { - str = '

    ' + str + "

    "; - } - html.push(str); - } else { - for (var i = 0; (ci = opt[i++]); ) { - str = - "

    "; - html.push(str); - } - } - - me.execCommand("insertHtml", html.join("")); - } - - me.fireEvent("afterinsertimage", opt); - } - }; - - - // plugins/justify.js - /** - * 段落格式 - * @file - * @since 1.2.6.1 - */ - - /** - * 段落对齐方式 - * @command justify - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } align 对齐方式:left => 居左,right => 居右,center => 居中,justify => 两端对齐 - * @example - * ```javascript - * editor.execCommand( 'justify', 'center' ); - * ``` - */ - /** - * 如果选区所在位置是段落区域,返回当前段落对齐方式 - * @command justify - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回段落对齐方式 - * @example - * ```javascript - * editor.queryCommandValue( 'justify' ); - * ``` - */ - - UE.plugins["justify"] = function() { - var me = this, - block = domUtils.isBlockElm, - defaultValue = { - left: 1, - right: 1, - center: 1, - justify: 1 - }, - doJustify = function(range, style) { - var bookmark = range.createBookmark(), - filterFn = function(node) { - return node.nodeType == 1 - ? node.tagName.toLowerCase() != "br" && - !domUtils.isBookmarkNode(node) - : !domUtils.isWhitespace(node); - }; - - range.enlarge(true); - var bookmark2 = range.createBookmark(), - current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), - tmpRange = range.cloneRange(), - tmpNode; - while ( - current && - !( - domUtils.getPosition(current, bookmark2.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - if (current.nodeType == 3 || !block(current)) { - tmpRange.setStartBefore(current); - while (current && current !== bookmark2.end && !block(current)) { - tmpNode = current; - current = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return !block(node); - }); - } - tmpRange.setEndAfter(tmpNode); - var common = tmpRange.getCommonAncestor(); - if (!domUtils.isBody(common) && block(common)) { - domUtils.setStyles( - common, - utils.isString(style) ? { "text-align": style } : style - ); - current = common; - } else { - var p = range.document.createElement("p"); - domUtils.setStyles( - p, - utils.isString(style) ? { "text-align": style } : style - ); - var frag = tmpRange.extractContents(); - p.appendChild(frag); - tmpRange.insertNode(p); - current = p; - } - current = domUtils.getNextDomNode(current, false, filterFn); - } else { - current = domUtils.getNextDomNode(current, true, filterFn); - } - } - return range.moveToBookmark(bookmark2).moveToBookmark(bookmark); - }; - - UE.commands["justify"] = { - execCommand: function(cmdName, align) { - var range = this.selection.getRange(), - txt; - - //闭合时单独处理 - if (range.collapsed) { - txt = this.document.createTextNode("p"); - range.insertNode(txt); - } - doJustify(range, align); - if (txt) { - range.setStartBefore(txt).collapse(true); - domUtils.remove(txt); - } - - range.select(); - - return true; - }, - queryCommandValue: function() { - var startNode = this.selection.getStart(), - value = domUtils.getComputedStyle(startNode, "text-align"); - return defaultValue[value] ? value : "left"; - }, - queryCommandState: function() { - var start = this.selection.getStart(), - cell = - start && - domUtils.findParentByTagName(start, ["td", "th", "caption"], true); - - return cell ? -1 : 0; - } - }; - }; - - - // plugins/font.js - /** - * 字体颜色,背景色,字号,字体,下划线,删除线 - * @file - * @since 1.2.6.1 - */ - - /** - * 字体颜色 - * @command forecolor - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } value 色值(必须十六进制) - * @example - * ```javascript - * editor.execCommand( 'forecolor', '#000' ); - * ``` - */ - /** - * 返回选区字体颜色 - * @command forecolor - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回字体颜色 - * @example - * ```javascript - * editor.queryCommandValue( 'forecolor' ); - * ``` - */ - - /** - * 字体背景颜色 - * @command backcolor - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } value 色值(必须十六进制) - * @example - * ```javascript - * editor.execCommand( 'backcolor', '#000' ); - * ``` - */ - /** - * 返回选区字体颜色 - * @command backcolor - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回字体背景颜色 - * @example - * ```javascript - * editor.queryCommandValue( 'backcolor' ); - * ``` - */ - - /** - * 字体大小 - * @command fontsize - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } value 字体大小 - * @example - * ```javascript - * editor.execCommand( 'fontsize', '14px' ); - * ``` - */ - /** - * 返回选区字体大小 - * @command fontsize - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回字体大小 - * @example - * ```javascript - * editor.queryCommandValue( 'fontsize' ); - * ``` - */ - - /** - * 字体样式 - * @command fontfamily - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } value 字体样式 - * @example - * ```javascript - * editor.execCommand( 'fontfamily', '微软雅黑' ); - * ``` - */ - /** - * 返回选区字体样式 - * @command fontfamily - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回字体样式 - * @example - * ```javascript - * editor.queryCommandValue( 'fontfamily' ); - * ``` - */ - - /** - * 字体下划线,与删除线互斥 - * @command underline - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'underline' ); - * ``` - */ - - /** - * 字体删除线,与下划线互斥 - * @command strikethrough - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'strikethrough' ); - * ``` - */ - - /** - * 字体边框 - * @command fontborder - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'fontborder' ); - * ``` - */ - - UE.plugins["font"] = function() { - var me = this, - fonts = { - forecolor: "color", - backcolor: "background-color", - fontsize: "font-size", - fontfamily: "font-family", - underline: "text-decoration", - strikethrough: "text-decoration", - fontborder: "border" - }, - needCmd = { underline: 1, strikethrough: 1, fontborder: 1 }, - needSetChild = { - forecolor: "color", - backcolor: "background-color", - fontsize: "font-size", - fontfamily: "font-family" - }; - me.setOpt({ - fontfamily: [ - { name: "songti", val: "宋体,SimSun" }, - { name: "yahei", val: "微软雅黑,Microsoft YaHei" }, - { name: "kaiti", val: "楷体,楷体_GB2312, SimKai" }, - { name: "heiti", val: "黑体, SimHei" }, - { name: "lishu", val: "隶书, SimLi" }, - { name: "andaleMono", val: "andale mono" }, - { name: "arial", val: "arial, helvetica,sans-serif" }, - { name: "arialBlack", val: "arial black,avant garde" }, - { name: "comicSansMs", val: "comic sans ms" }, - { name: "impact", val: "impact,chicago" }, - { name: "timesNewRoman", val: "times new roman" } - ], - fontsize: [10, 11, 12, 14, 16, 18, 20, 24, 36] - }); - - function mergeWithParent(node) { - var parent; - while ((parent = node.parentNode)) { - if ( - parent.tagName == "SPAN" && - domUtils.getChildCount(parent, function(child) { - return !domUtils.isBookmarkNode(child) && !domUtils.isBr(child); - }) == 1 - ) { - parent.style.cssText += node.style.cssText; - domUtils.remove(node, true); - node = parent; - } else { - break; - } - } - } - function mergeChild(rng, cmdName, value) { - if (needSetChild[cmdName]) { - rng.adjustmentBoundary(); - if (!rng.collapsed && rng.startContainer.nodeType == 1) { - var start = rng.startContainer.childNodes[rng.startOffset]; - if (start && domUtils.isTagNode(start, "span")) { - var bk = rng.createBookmark(); - utils.each(domUtils.getElementsByTagName(start, "span"), function( - span - ) { - if (!span.parentNode || domUtils.isBookmarkNode(span)) return; - if ( - cmdName == "backcolor" && - domUtils - .getComputedStyle(span, "background-color") - .toLowerCase() === value - ) { - return; - } - domUtils.removeStyle(span, needSetChild[cmdName]); - if (span.style.cssText.replace(/^\s+$/, "").length == 0) { - domUtils.remove(span, true); - } - }); - rng.moveToBookmark(bk); - } - } - } - } - function mergesibling(rng, cmdName, value) { - var collapsed = rng.collapsed, - bk = rng.createBookmark(), - common; - if (collapsed) { - common = bk.start.parentNode; - while (dtd.$inline[common.tagName]) { - common = common.parentNode; - } - } else { - common = domUtils.getCommonAncestor(bk.start, bk.end); - } - utils.each(domUtils.getElementsByTagName(common, "span"), function(span) { - if (!span.parentNode || domUtils.isBookmarkNode(span)) return; - if (/\s*border\s*:\s*none;?\s*/i.test(span.style.cssText)) { - if (/^\s*border\s*:\s*none;?\s*$/.test(span.style.cssText)) { - domUtils.remove(span, true); - } else { - domUtils.removeStyle(span, "border"); - } - return; - } - if ( - /border/i.test(span.style.cssText) && - span.parentNode.tagName == "SPAN" && - /border/i.test(span.parentNode.style.cssText) - ) { - span.style.cssText = span.style.cssText.replace( - /border[^:]*:[^;]+;?/gi, - "" - ); - } - if (!(cmdName == "fontborder" && value == "none")) { - var next = span.nextSibling; - while (next && next.nodeType == 1 && next.tagName == "SPAN") { - if (domUtils.isBookmarkNode(next) && cmdName == "fontborder") { - span.appendChild(next); - next = span.nextSibling; - continue; - } - if (next.style.cssText == span.style.cssText) { - domUtils.moveChild(next, span); - domUtils.remove(next); - } - if (span.nextSibling === next) break; - next = span.nextSibling; - } - } - - mergeWithParent(span); - if (browser.ie && browser.version > 8) { - //拷贝父亲们的特别的属性,这里只做背景颜色的处理 - var parent = domUtils.findParent(span, function(n) { - return ( - n.tagName == "SPAN" && /background-color/.test(n.style.cssText) - ); - }); - if (parent && !/background-color/.test(span.style.cssText)) { - span.style.backgroundColor = parent.style.backgroundColor; - } - } - }); - rng.moveToBookmark(bk); - mergeChild(rng, cmdName, value); - } - - me.addInputRule(function(root) { - utils.each(root.getNodesByTagName("u s del font strike"), function(node) { - if (node.tagName == "font") { - var cssStyle = []; - for (var p in node.attrs) { - switch (p) { - case "size": - cssStyle.push( - "font-size:" + - ({ - "1": "10", - "2": "12", - "3": "16", - "4": "18", - "5": "24", - "6": "32", - "7": "48" - }[node.attrs[p]] || node.attrs[p]) + - "px" - ); - break; - case "color": - cssStyle.push("color:" + node.attrs[p]); - break; - case "face": - cssStyle.push("font-family:" + node.attrs[p]); - break; - case "style": - cssStyle.push(node.attrs[p]); - } - } - node.attrs = { - style: cssStyle.join(";") - }; - } else { - var val = node.tagName == "u" ? "underline" : "line-through"; - node.attrs = { - style: (node.getAttr("style") || "") + "text-decoration:" + val + ";" - }; - } - node.tagName = "span"; - }); - // utils.each(root.getNodesByTagName('span'), function (node) { - // var val; - // if(val = node.getAttr('class')){ - // if(/fontstrikethrough/.test(val)){ - // node.setStyle('text-decoration','line-through'); - // if(node.attrs['class']){ - // node.attrs['class'] = node.attrs['class'].replace(/fontstrikethrough/,''); - // }else{ - // node.setAttr('class') - // } - // } - // if(/fontborder/.test(val)){ - // node.setStyle('border','1px solid #000'); - // if(node.attrs['class']){ - // node.attrs['class'] = node.attrs['class'].replace(/fontborder/,''); - // }else{ - // node.setAttr('class') - // } - // } - // } - // }); - }); - // me.addOutputRule(function(root){ - // utils.each(root.getNodesByTagName('span'), function (node) { - // var val; - // if(val = node.getStyle('text-decoration')){ - // if(/line-through/.test(val)){ - // if(node.attrs['class']){ - // node.attrs['class'] += ' fontstrikethrough'; - // }else{ - // node.setAttr('class','fontstrikethrough') - // } - // } - // - // node.setStyle('text-decoration') - // } - // if(val = node.getStyle('border')){ - // if(/1px/.test(val) && /solid/.test(val)){ - // if(node.attrs['class']){ - // node.attrs['class'] += ' fontborder'; - // - // }else{ - // node.setAttr('class','fontborder') - // } - // } - // node.setStyle('border') - // - // } - // }); - // }); - for (var p in fonts) { - (function(cmd, style) { - UE.commands[cmd] = { - execCommand: function(cmdName, value) { - value = - value || - (this.queryCommandState(cmdName) - ? "none" - : cmdName == "underline" - ? "underline" - : cmdName == "fontborder" ? "1px solid #000" : "line-through"); - var me = this, - range = this.selection.getRange(), - text; - - if (value == "default") { - if (range.collapsed) { - text = me.document.createTextNode("font"); - range.insertNode(text).select(); - } - me.execCommand("removeFormat", "span,a", style); - if (text) { - range.setStartBefore(text).collapse(true); - domUtils.remove(text); - } - mergesibling(range, cmdName, value); - range.select(); - } else { - if (!range.collapsed) { - if (needCmd[cmd] && me.queryCommandValue(cmd)) { - me.execCommand("removeFormat", "span,a", style); - } - range = me.selection.getRange(); - - range.applyInlineStyle("span", { style: style + ":" + value }); - mergesibling(range, cmdName, value); - range.select(); - } else { - var span = domUtils.findParentByTagName( - range.startContainer, - "span", - true - ); - text = me.document.createTextNode("font"); - if ( - span && - !span.children.length && - !span[browser.ie ? "innerText" : "textContent"].replace( - fillCharReg, - "" - ).length - ) { - //for ie hack when enter - range.insertNode(text); - if (needCmd[cmd]) { - range.selectNode(text).select(); - me.execCommand("removeFormat", "span,a", style, null); - - span = domUtils.findParentByTagName(text, "span", true); - range.setStartBefore(text); - } - span && (span.style.cssText += ";" + style + ":" + value); - range.collapse(true).select(); - } else { - range.insertNode(text); - range.selectNode(text).select(); - span = range.document.createElement("span"); - - if (needCmd[cmd]) { - //a标签内的不处理跳过 - if (domUtils.findParentByTagName(text, "a", true)) { - range.setStartBefore(text).setCursor(); - domUtils.remove(text); - return; - } - me.execCommand("removeFormat", "span,a", style); - } - - span.style.cssText = style + ":" + value; - - text.parentNode.insertBefore(span, text); - //修复,span套span 但样式不继承的问题 - if (!browser.ie || (browser.ie && browser.version == 9)) { - var spanParent = span.parentNode; - while (!domUtils.isBlockElm(spanParent)) { - if (spanParent.tagName == "SPAN") { - //opera合并style不会加入";" - span.style.cssText = - spanParent.style.cssText + ";" + span.style.cssText; - } - spanParent = spanParent.parentNode; - } - } - - if (opera) { - setTimeout(function() { - range.setStart(span, 0).collapse(true); - mergesibling(range, cmdName, value); - range.select(); - }); - } else { - range.setStart(span, 0).collapse(true); - mergesibling(range, cmdName, value); - range.select(); - } - - //trace:981 - //domUtils.mergeToParent(span) - } - domUtils.remove(text); - } - } - return true; - }, - queryCommandValue: function(cmdName) { - var startNode = this.selection.getStart(); - - //trace:946 - if (cmdName == "underline" || cmdName == "strikethrough") { - var tmpNode = startNode, - value; - while ( - tmpNode && - !domUtils.isBlockElm(tmpNode) && - !domUtils.isBody(tmpNode) - ) { - if (tmpNode.nodeType == 1) { - value = domUtils.getComputedStyle(tmpNode, style); - if (value != "none") { - return value; - } - } - - tmpNode = tmpNode.parentNode; - } - return "none"; - } - if (cmdName == "fontborder") { - var tmp = startNode, - val; - while (tmp && dtd.$inline[tmp.tagName]) { - if ((val = domUtils.getComputedStyle(tmp, "border"))) { - if (/1px/.test(val) && /solid/.test(val)) { - return val; - } - } - tmp = tmp.parentNode; - } - return ""; - } - - if (cmdName == "FontSize") { - var styleVal = domUtils.getComputedStyle(startNode, style), - tmp = /^([\d\.]+)(\w+)$/.exec(styleVal); - - if (tmp) { - return Math.floor(tmp[1]) + tmp[2]; - } - - return styleVal; - } - - return domUtils.getComputedStyle(startNode, style); - }, - queryCommandState: function(cmdName) { - if (!needCmd[cmdName]) return 0; - var val = this.queryCommandValue(cmdName); - if (cmdName == "fontborder") { - return /1px/.test(val) && /solid/.test(val); - } else { - return cmdName == "underline" - ? /underline/.test(val) - : /line\-through/.test(val); - } - } - }; - })(p, fonts[p]); - } - }; - - - // plugins/link.js - /** - * 超链接 - * @file - * @since 1.2.6.1 - */ - - /** - * 插入超链接 - * @command link - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Object } options 设置自定义属性,例如:url、title、target - * @example - * ```javascript - * editor.execCommand( 'link', '{ - * url:'ueditor.baidu.com', - * title:'ueditor', - * target:'_blank' - * }' ); - * ``` - */ - /** - * 返回当前选中的第一个超链接节点 - * @command link - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { Element } 超链接节点 - * @example - * ```javascript - * editor.queryCommandValue( 'link' ); - * ``` - */ - - /** - * 取消超链接 - * @command unlink - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'unlink'); - * ``` - */ - - UE.plugins["link"] = function() { - function optimize(range) { - var start = range.startContainer, - end = range.endContainer; - - if ((start = domUtils.findParentByTagName(start, "a", true))) { - range.setStartBefore(start); - } - if ((end = domUtils.findParentByTagName(end, "a", true))) { - range.setEndAfter(end); - } - } - - UE.commands["unlink"] = { - execCommand: function() { - var range = this.selection.getRange(), - bookmark; - if ( - range.collapsed && - !domUtils.findParentByTagName(range.startContainer, "a", true) - ) { - return; - } - bookmark = range.createBookmark(); - optimize(range); - range.removeInlineStyle("a").moveToBookmark(bookmark).select(); - }, - queryCommandState: function() { - return !this.highlight && this.queryCommandValue("link") ? 0 : -1; - } - }; - function doLink(range, opt, me) { - var rngClone = range.cloneRange(), - link = me.queryCommandValue("link"); - optimize((range = range.adjustmentBoundary())); - var start = range.startContainer; - if (start.nodeType == 1 && link) { - start = start.childNodes[range.startOffset]; - if ( - start && - start.nodeType == 1 && - start.tagName == "A" && - /^(?:https?|ftp|file)\s*:\s*\/\//.test( - start[browser.ie ? "innerText" : "textContent"] - ) - ) { - start[browser.ie ? "innerText" : "textContent"] = utils.html( - opt.textValue || opt.href - ); - } - } - if (!rngClone.collapsed || link) { - range.removeInlineStyle("a"); - rngClone = range.cloneRange(); - } - - if (rngClone.collapsed) { - var a = range.document.createElement("a"), - text = ""; - if (opt.textValue) { - text = utils.html(opt.textValue); - delete opt.textValue; - } else { - text = utils.html(opt.href); - } - domUtils.setAttributes(a, opt); - start = domUtils.findParentByTagName(rngClone.startContainer, "a", true); - if (start && domUtils.isInNodeEndBoundary(rngClone, start)) { - range.setStartAfter(start).collapse(true); - } - a[browser.ie ? "innerText" : "textContent"] = text; - range.insertNode(a).selectNode(a); - } else { - range.applyInlineStyle("a", opt); - } - } - UE.commands["link"] = { - execCommand: function(cmdName, opt) { - var range; - opt._href && (opt._href = utils.unhtml(opt._href, /[<">]/g)); - opt.href && (opt.href = utils.unhtml(opt.href, /[<">]/g)); - opt.textValue && (opt.textValue = utils.unhtml(opt.textValue, /[<">]/g)); - doLink((range = this.selection.getRange()), opt, this); - //闭合都不加占位符,如果加了会在a后边多个占位符节点,导致a是图片背景组成的列表,出现空白问题 - range.collapse().select(true); - }, - queryCommandValue: function() { - var range = this.selection.getRange(), - node; - if (range.collapsed) { - // node = this.selection.getStart(); - //在ie下getstart()取值偏上了 - node = range.startContainer; - node = node.nodeType == 1 ? node : node.parentNode; - - if ( - node && - (node = domUtils.findParentByTagName(node, "a", true)) && - !domUtils.isInNodeEndBoundary(range, node) - ) { - return node; - } - } else { - //trace:1111 如果是

    xx

    startContainer是p就会找不到a - range.shrinkBoundary(); - var start = range.startContainer.nodeType == 3 || - !range.startContainer.childNodes[range.startOffset] - ? range.startContainer - : range.startContainer.childNodes[range.startOffset], - end = range.endContainer.nodeType == 3 || range.endOffset == 0 - ? range.endContainer - : range.endContainer.childNodes[range.endOffset - 1], - common = range.getCommonAncestor(); - node = domUtils.findParentByTagName(common, "a", true); - if (!node && common.nodeType == 1) { - var as = common.getElementsByTagName("a"), - ps, - pe; - - for (var i = 0, ci; (ci = as[i++]); ) { - (ps = domUtils.getPosition(ci, start)), (pe = domUtils.getPosition( - ci, - end - )); - if ( - (ps & domUtils.POSITION_FOLLOWING || - ps & domUtils.POSITION_CONTAINS) && - (pe & domUtils.POSITION_PRECEDING || - pe & domUtils.POSITION_CONTAINS) - ) { - node = ci; - break; - } - } - } - return node; - } - }, - queryCommandState: function() { - //判断如果是视频的话连接不可用 - //fix 853 - var img = this.selection.getRange().getClosedNode(), - flag = - img && - (img.className == "edui-faked-video" || - img.className.indexOf("edui-upload-video") != -1); - return flag ? -1 : 0; - } - }; - }; - - - // plugins/iframe.js - ///import core - ///import plugins\inserthtml.js - ///commands 插入框架 - ///commandsName InsertFrame - ///commandsTitle 插入Iframe - ///commandsDialog dialogs\insertframe - - UE.plugins["insertframe"] = function() { - var me = this; - function deleteIframe() { - me._iframe && delete me._iframe; - } - - me.addListener("selectionchange", function() { - deleteIframe(); - }); - }; - - - // plugins/scrawl.js - ///import core - ///commands 涂鸦 - ///commandsName Scrawl - ///commandsTitle 涂鸦 - ///commandsDialog dialogs\scrawl - UE.commands["scrawl"] = { - queryCommandState: function() { - return browser.ie && browser.version <= 8 ? -1 : 0; - } - }; - - - // plugins/removeformat.js - /** - * 清除格式 - * @file - * @since 1.2.6.1 - */ - - /** - * 清除文字样式 - * @command removeformat - * @method execCommand - * @param { String } cmd 命令字符串 - * @param {String} tags 以逗号隔开的标签。如:strong - * @param {String} style 样式如:color - * @param {String} attrs 属性如:width - * @example - * ```javascript - * editor.execCommand( 'removeformat', 'strong','color','width' ); - * ``` - */ - - UE.plugins["removeformat"] = function() { - var me = this; - me.setOpt({ - removeFormatTags: - "b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var", - removeFormatAttributes: "class,style,lang,width,height,align,hspace,valign" - }); - me.commands["removeformat"] = { - execCommand: function(cmdName, tags, style, attrs, notIncludeA) { - var tagReg = new RegExp( - "^(?:" + - (tags || this.options.removeFormatTags).replace(/,/g, "|") + - ")$", - "i" - ), - removeFormatAttributes = style - ? [] - : (attrs || this.options.removeFormatAttributes).split(","), - range = new dom.Range(this.document), - bookmark, - node, - parent, - filter = function(node) { - return node.nodeType == 1; - }; - - function isRedundantSpan(node) { - if (node.nodeType == 3 || node.tagName.toLowerCase() != "span") { - return 0; - } - if (browser.ie) { - //ie 下判断实效,所以只能简单用style来判断 - //return node.style.cssText == '' ? 1 : 0; - var attrs = node.attributes; - if (attrs.length) { - for (var i = 0, l = attrs.length; i < l; i++) { - if (attrs[i].specified) { - return 0; - } - } - return 1; - } - } - return !node.attributes.length; - } - function doRemove(range) { - var bookmark1 = range.createBookmark(); - if (range.collapsed) { - range.enlarge(true); - } - - //不能把a标签切了 - if (!notIncludeA) { - var aNode = domUtils.findParentByTagName( - range.startContainer, - "a", - true - ); - if (aNode) { - range.setStartBefore(aNode); - } - - aNode = domUtils.findParentByTagName(range.endContainer, "a", true); - if (aNode) { - range.setEndAfter(aNode); - } - } - - bookmark = range.createBookmark(); - - node = bookmark.start; - - //切开始 - while ((parent = node.parentNode) && !domUtils.isBlockElm(parent)) { - domUtils.breakParent(node, parent); - - domUtils.clearEmptySibling(node); - } - if (bookmark.end) { - //切结束 - node = bookmark.end; - while ((parent = node.parentNode) && !domUtils.isBlockElm(parent)) { - domUtils.breakParent(node, parent); - domUtils.clearEmptySibling(node); - } - - //开始去除样式 - var current = domUtils.getNextDomNode(bookmark.start, false, filter), - next; - while (current) { - if (current == bookmark.end) { - break; - } - - next = domUtils.getNextDomNode(current, true, filter); - - if ( - !dtd.$empty[current.tagName.toLowerCase()] && - !domUtils.isBookmarkNode(current) - ) { - if (tagReg.test(current.tagName)) { - if (style) { - domUtils.removeStyle(current, style); - if (isRedundantSpan(current) && style != "text-decoration") { - domUtils.remove(current, true); - } - } else { - domUtils.remove(current, true); - } - } else { - //trace:939 不能把list上的样式去掉 - if ( - !dtd.$tableContent[current.tagName] && - !dtd.$list[current.tagName] - ) { - domUtils.removeAttributes(current, removeFormatAttributes); - if (isRedundantSpan(current)) { - domUtils.remove(current, true); - } - } - } - } - current = next; - } - } - //trace:1035 - //trace:1096 不能把td上的样式去掉,比如边框 - var pN = bookmark.start.parentNode; - if ( - domUtils.isBlockElm(pN) && - !dtd.$tableContent[pN.tagName] && - !dtd.$list[pN.tagName] - ) { - domUtils.removeAttributes(pN, removeFormatAttributes); - } - pN = bookmark.end.parentNode; - if ( - bookmark.end && - domUtils.isBlockElm(pN) && - !dtd.$tableContent[pN.tagName] && - !dtd.$list[pN.tagName] - ) { - domUtils.removeAttributes(pN, removeFormatAttributes); - } - range.moveToBookmark(bookmark).moveToBookmark(bookmark1); - //清除冗余的代码 - var node = range.startContainer, - tmp, - collapsed = range.collapsed; - while ( - node.nodeType == 1 && - domUtils.isEmptyNode(node) && - dtd.$removeEmpty[node.tagName] - ) { - tmp = node.parentNode; - range.setStartBefore(node); - //trace:937 - //更新结束边界 - if (range.startContainer === range.endContainer) { - range.endOffset--; - } - domUtils.remove(node); - node = tmp; - } - - if (!collapsed) { - node = range.endContainer; - while ( - node.nodeType == 1 && - domUtils.isEmptyNode(node) && - dtd.$removeEmpty[node.tagName] - ) { - tmp = node.parentNode; - range.setEndBefore(node); - domUtils.remove(node); - - node = tmp; - } - } - } - - range = this.selection.getRange(); - doRemove(range); - range.select(); - } - }; - }; - - - // plugins/blockquote.js - /** - * 添加引用 - * @file - * @since 1.2.6.1 - */ - - /** - * 添加引用 - * @command blockquote - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'blockquote' ); - * ``` - */ - - /** - * 添加引用 - * @command blockquote - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Object } attrs 节点属性 - * @example - * ```javascript - * editor.execCommand( 'blockquote',{ - * style: "color: red;" - * } ); - * ``` - */ - - UE.plugins["blockquote"] = function() { - var me = this; - function getObj(editor) { - return domUtils.filterNodeList( - editor.selection.getStartElementPath(), - "blockquote" - ); - } - me.commands["blockquote"] = { - execCommand: function(cmdName, attrs) { - var range = this.selection.getRange(), - obj = getObj(this), - blockquote = dtd.blockquote, - bookmark = range.createBookmark(); - - if (obj) { - var start = range.startContainer, - startBlock = domUtils.isBlockElm(start) - ? start - : domUtils.findParent(start, function(node) { - return domUtils.isBlockElm(node); - }), - end = range.endContainer, - endBlock = domUtils.isBlockElm(end) - ? end - : domUtils.findParent(end, function(node) { - return domUtils.isBlockElm(node); - }); - - //处理一下li - startBlock = - domUtils.findParentByTagName(startBlock, "li", true) || startBlock; - endBlock = - domUtils.findParentByTagName(endBlock, "li", true) || endBlock; - - if ( - startBlock.tagName == "LI" || - startBlock.tagName == "TD" || - startBlock === obj || - domUtils.isBody(startBlock) - ) { - domUtils.remove(obj, true); - } else { - domUtils.breakParent(startBlock, obj); - } - - if (startBlock !== endBlock) { - obj = domUtils.findParentByTagName(endBlock, "blockquote"); - if (obj) { - if ( - endBlock.tagName == "LI" || - endBlock.tagName == "TD" || - domUtils.isBody(endBlock) - ) { - obj.parentNode && domUtils.remove(obj, true); - } else { - domUtils.breakParent(endBlock, obj); - } - } - } - - var blockquotes = domUtils.getElementsByTagName( - this.document, - "blockquote" - ); - for (var i = 0, bi; (bi = blockquotes[i++]); ) { - if (!bi.childNodes.length) { - domUtils.remove(bi); - } else if ( - domUtils.getPosition(bi, startBlock) & - domUtils.POSITION_FOLLOWING && - domUtils.getPosition(bi, endBlock) & domUtils.POSITION_PRECEDING - ) { - domUtils.remove(bi, true); - } - } - } else { - var tmpRange = range.cloneRange(), - node = tmpRange.startContainer.nodeType == 1 - ? tmpRange.startContainer - : tmpRange.startContainer.parentNode, - preNode = node, - doEnd = 1; - - //调整开始 - while (1) { - if (domUtils.isBody(node)) { - if (preNode !== node) { - if (range.collapsed) { - tmpRange.selectNode(preNode); - doEnd = 0; - } else { - tmpRange.setStartBefore(preNode); - } - } else { - tmpRange.setStart(node, 0); - } - - break; - } - if (!blockquote[node.tagName]) { - if (range.collapsed) { - tmpRange.selectNode(preNode); - } else { - tmpRange.setStartBefore(preNode); - } - break; - } - - preNode = node; - node = node.parentNode; - } - - //调整结束 - if (doEnd) { - preNode = node = node = tmpRange.endContainer.nodeType == 1 - ? tmpRange.endContainer - : tmpRange.endContainer.parentNode; - while (1) { - if (domUtils.isBody(node)) { - if (preNode !== node) { - tmpRange.setEndAfter(preNode); - } else { - tmpRange.setEnd(node, node.childNodes.length); - } - - break; - } - if (!blockquote[node.tagName]) { - tmpRange.setEndAfter(preNode); - break; - } - - preNode = node; - node = node.parentNode; - } - } - - node = range.document.createElement("blockquote"); - domUtils.setAttributes(node, attrs); - node.appendChild(tmpRange.extractContents()); - tmpRange.insertNode(node); - //去除重复的 - var childs = domUtils.getElementsByTagName(node, "blockquote"); - for (var i = 0, ci; (ci = childs[i++]); ) { - if (ci.parentNode) { - domUtils.remove(ci, true); - } - } - } - range.moveToBookmark(bookmark).select(); - }, - queryCommandState: function() { - return getObj(this) ? 1 : 0; - } - }; - }; - - - // plugins/convertcase.js - /** - * 大小写转换 - * @file - * @since 1.2.6.1 - */ - - /** - * 把选区内文本变大写,与“tolowercase”命令互斥 - * @command touppercase - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'touppercase' ); - * ``` - */ - - /** - * 把选区内文本变小写,与“touppercase”命令互斥 - * @command tolowercase - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'tolowercase' ); - * ``` - */ - UE.commands["touppercase"] = UE.commands["tolowercase"] = { - execCommand: function(cmd) { - var me = this; - var rng = me.selection.getRange(); - if (rng.collapsed) { - return rng; - } - var bk = rng.createBookmark(), - bkEnd = bk.end, - filterFn = function(node) { - return !domUtils.isBr(node) && !domUtils.isWhitespace(node); - }, - curNode = domUtils.getNextDomNode(bk.start, false, filterFn); - while ( - curNode && - domUtils.getPosition(curNode, bkEnd) & domUtils.POSITION_PRECEDING - ) { - if (curNode.nodeType == 3) { - curNode.nodeValue = curNode.nodeValue[ - cmd == "touppercase" ? "toUpperCase" : "toLowerCase" - ](); - } - curNode = domUtils.getNextDomNode(curNode, true, filterFn); - if (curNode === bkEnd) { - break; - } - } - rng.moveToBookmark(bk).select(); - } - }; - - - // plugins/indent.js - /** - * 首行缩进 - * @file - * @since 1.2.6.1 - */ - - /** - * 缩进 - * @command indent - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'indent' ); - * ``` - */ - UE.commands["indent"] = { - execCommand: function() { - var me = this, - value = me.queryCommandState("indent") - ? "0em" - : me.options.indentValue || "2em"; - me.execCommand("Paragraph", "p", { style: "text-indent:" + value }); - }, - queryCommandState: function() { - var pN = domUtils.filterNodeList( - this.selection.getStartElementPath(), - "p h1 h2 h3 h4 h5 h6" - ); - return pN && pN.style.textIndent && parseInt(pN.style.textIndent) ? 1 : 0; - } - }; - - - // plugins/print.js - /** - * 打印 - * @file - * @since 1.2.6.1 - */ - - /** - * 打印 - * @command print - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'print' ); - * ``` - */ - UE.commands["print"] = { - execCommand: function() { - this.window.print(); - }, - notNeedUndo: 1 - }; - - - // plugins/preview.js - /** - * 预览 - * @file - * @since 1.2.6.1 - */ - - /** - * 预览 - * @command preview - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'preview' ); - * ``` - */ - UE.commands["preview"] = { - execCommand: function() { - var w = window.open("", "_blank", ""), - d = w.document; - d.open(); - d.write( - '
    " + - this.getContent(null, null, true) + - "
    " - ); - d.close(); - }, - notNeedUndo: 1 - }; - - - // plugins/selectall.js - /** - * 全选 - * @file - * @since 1.2.6.1 - */ - - /** - * 选中所有内容 - * @command selectall - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'selectall' ); - * ``` - */ - UE.plugins["selectall"] = function() { - var me = this; - me.commands["selectall"] = { - execCommand: function() { - //去掉了原生的selectAll,因为会出现报错和当内容为空时,不能出现闭合状态的光标 - var me = this, - body = me.body, - range = me.selection.getRange(); - range.selectNodeContents(body); - if (domUtils.isEmptyBlock(body)) { - //opera不能自动合并到元素的里边,要手动处理一下 - if (browser.opera && body.firstChild && body.firstChild.nodeType == 1) { - range.setStartAtFirst(body.firstChild); - } - range.collapse(true); - } - range.select(true); - }, - notNeedUndo: 1 - }; - - //快捷键 - me.addshortcutkey({ - selectAll: "ctrl+65" - }); - }; - - - // plugins/paragraph.js - /** - * 段落样式 - * @file - * @since 1.2.6.1 - */ - - /** - * 段落格式 - * @command paragraph - * @method execCommand - * @param { String } cmd 命令字符串 - * @param {String} style 标签值为:'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' - * @param {Object} attrs 标签的属性 - * @example - * ```javascript - * editor.execCommand( 'Paragraph','h1','{ - * class:'test' - * }' ); - * ``` - */ - - /** - * 返回选区内节点标签名 - * @command paragraph - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 节点标签名 - * @example - * ```javascript - * editor.queryCommandValue( 'Paragraph' ); - * ``` - */ - - UE.plugins["paragraph"] = function() { - var me = this, - block = domUtils.isBlockElm, - notExchange = ["TD", "LI", "PRE"], - doParagraph = function(range, style, attrs, sourceCmdName) { - var bookmark = range.createBookmark(), - filterFn = function(node) { - return node.nodeType == 1 - ? node.tagName.toLowerCase() != "br" && - !domUtils.isBookmarkNode(node) - : !domUtils.isWhitespace(node); - }, - para; - - range.enlarge(true); - var bookmark2 = range.createBookmark(), - current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), - tmpRange = range.cloneRange(), - tmpNode; - while ( - current && - !( - domUtils.getPosition(current, bookmark2.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - if (current.nodeType == 3 || !block(current)) { - tmpRange.setStartBefore(current); - while (current && current !== bookmark2.end && !block(current)) { - tmpNode = current; - current = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return !block(node); - }); - } - tmpRange.setEndAfter(tmpNode); - - para = range.document.createElement(style); - if (attrs) { - domUtils.setAttributes(para, attrs); - if ( - sourceCmdName && - sourceCmdName == "customstyle" && - attrs.style - ) { - para.style.cssText = attrs.style; - } - } - para.appendChild(tmpRange.extractContents()); - //需要内容占位 - if (domUtils.isEmptyNode(para)) { - domUtils.fillChar(range.document, para); - } - - tmpRange.insertNode(para); - - var parent = para.parentNode; - //如果para上一级是一个block元素且不是body,td就删除它 - if ( - block(parent) && - !domUtils.isBody(para.parentNode) && - utils.indexOf(notExchange, parent.tagName) == -1 - ) { - //存储dir,style - if (!(sourceCmdName && sourceCmdName == "customstyle")) { - parent.getAttribute("dir") && - para.setAttribute("dir", parent.getAttribute("dir")); - //trace:1070 - parent.style.cssText && - (para.style.cssText = - parent.style.cssText + ";" + para.style.cssText); - //trace:1030 - parent.style.textAlign && - !para.style.textAlign && - (para.style.textAlign = parent.style.textAlign); - parent.style.textIndent && - !para.style.textIndent && - (para.style.textIndent = parent.style.textIndent); - parent.style.padding && - !para.style.padding && - (para.style.padding = parent.style.padding); - } - - //trace:1706 选择的就是h1-6要删除 - if ( - attrs && - /h\d/i.test(parent.tagName) && - !/h\d/i.test(para.tagName) - ) { - domUtils.setAttributes(parent, attrs); - if ( - sourceCmdName && - sourceCmdName == "customstyle" && - attrs.style - ) { - parent.style.cssText = attrs.style; - } - domUtils.remove(para.parentNode, true); - para = parent; - } else { - domUtils.remove(para.parentNode, true); - } - } - if (utils.indexOf(notExchange, parent.tagName) != -1) { - current = parent; - } else { - current = para; - } - - current = domUtils.getNextDomNode(current, false, filterFn); - } else { - current = domUtils.getNextDomNode(current, true, filterFn); - } - } - return range.moveToBookmark(bookmark2).moveToBookmark(bookmark); - }; - me.setOpt("paragraph", { - p: "", - h1: "", - h2: "", - h3: "", - h4: "", - h5: "", - h6: "" - }); - me.commands["paragraph"] = { - execCommand: function(cmdName, style, attrs, sourceCmdName) { - var range = this.selection.getRange(); - //闭合时单独处理 - if (range.collapsed) { - var txt = this.document.createTextNode("p"); - range.insertNode(txt); - //去掉冗余的fillchar - if (browser.ie) { - var node = txt.previousSibling; - if (node && domUtils.isWhitespace(node)) { - domUtils.remove(node); - } - node = txt.nextSibling; - if (node && domUtils.isWhitespace(node)) { - domUtils.remove(node); - } - } - } - range = doParagraph(range, style, attrs, sourceCmdName); - if (txt) { - range.setStartBefore(txt).collapse(true); - pN = txt.parentNode; - - domUtils.remove(txt); - - if (domUtils.isBlockElm(pN) && domUtils.isEmptyNode(pN)) { - domUtils.fillNode(this.document, pN); - } - } - - if ( - browser.gecko && - range.collapsed && - range.startContainer.nodeType == 1 - ) { - var child = range.startContainer.childNodes[range.startOffset]; - if ( - child && - child.nodeType == 1 && - child.tagName.toLowerCase() == style - ) { - range.setStart(child, 0).collapse(true); - } - } - //trace:1097 原来有true,原因忘了,但去了就不能清除多余的占位符了 - range.select(); - - return true; - }, - queryCommandValue: function() { - var node = domUtils.filterNodeList( - this.selection.getStartElementPath(), - "p h1 h2 h3 h4 h5 h6" - ); - return node ? node.tagName.toLowerCase() : ""; - } - }; - }; - - - // plugins/directionality.js - /** - * 设置文字输入的方向的插件 - * @file - * @since 1.2.6.1 - */ - (function() { - var block = domUtils.isBlockElm, - getObj = function(editor) { - // var startNode = editor.selection.getStart(), - // parents; - // if ( startNode ) { - // //查找所有的是block的父亲节点 - // parents = domUtils.findParents( startNode, true, block, true ); - // for ( var i = 0,ci; ci = parents[i++]; ) { - // if ( ci.getAttribute( 'dir' ) ) { - // return ci; - // } - // } - // } - return domUtils.filterNodeList( - editor.selection.getStartElementPath(), - function(n) { - return n && n.nodeType == 1 && n.getAttribute("dir"); - } - ); - }, - doDirectionality = function(range, editor, forward) { - var bookmark, - filterFn = function(node) { - return node.nodeType == 1 - ? !domUtils.isBookmarkNode(node) - : !domUtils.isWhitespace(node); - }, - obj = getObj(editor); - - if (obj && range.collapsed) { - obj.setAttribute("dir", forward); - return range; - } - bookmark = range.createBookmark(); - range.enlarge(true); - var bookmark2 = range.createBookmark(), - current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), - tmpRange = range.cloneRange(), - tmpNode; - while ( - current && - !( - domUtils.getPosition(current, bookmark2.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - if (current.nodeType == 3 || !block(current)) { - tmpRange.setStartBefore(current); - while (current && current !== bookmark2.end && !block(current)) { - tmpNode = current; - current = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return !block(node); - }); - } - tmpRange.setEndAfter(tmpNode); - var common = tmpRange.getCommonAncestor(); - if (!domUtils.isBody(common) && block(common)) { - //遍历到了block节点 - common.setAttribute("dir", forward); - current = common; - } else { - //没有遍历到,添加一个block节点 - var p = range.document.createElement("p"); - p.setAttribute("dir", forward); - var frag = tmpRange.extractContents(); - p.appendChild(frag); - tmpRange.insertNode(p); - current = p; - } - - current = domUtils.getNextDomNode(current, false, filterFn); - } else { - current = domUtils.getNextDomNode(current, true, filterFn); - } - } - return range.moveToBookmark(bookmark2).moveToBookmark(bookmark); - }; - - /** - * 文字输入方向 - * @command directionality - * @method execCommand - * @param { String } cmdName 命令字符串 - * @param { String } forward 传入'ltr'表示从左向右输入,传入'rtl'表示从右向左输入 - * @example - * ```javascript - * editor.execCommand( 'directionality', 'ltr'); - * ``` - */ - - /** - * 查询当前选区的文字输入方向 - * @command directionality - * @method queryCommandValue - * @param { String } cmdName 命令字符串 - * @return { String } 返回'ltr'表示从左向右输入,返回'rtl'表示从右向左输入 - * @example - * ```javascript - * editor.queryCommandValue( 'directionality'); - * ``` - */ - UE.commands["directionality"] = { - execCommand: function(cmdName, forward) { - var range = this.selection.getRange(); - //闭合时单独处理 - if (range.collapsed) { - var txt = this.document.createTextNode("d"); - range.insertNode(txt); - } - doDirectionality(range, this, forward); - if (txt) { - range.setStartBefore(txt).collapse(true); - domUtils.remove(txt); - } - - range.select(); - return true; - }, - queryCommandValue: function() { - var node = getObj(this); - return node ? node.getAttribute("dir") : "ltr"; - } - }; - })(); - - - // plugins/horizontal.js - /** - * 插入分割线插件 - * @file - * @since 1.2.6.1 - */ - - /** - * 插入分割线 - * @command horizontal - * @method execCommand - * @param { String } cmdName 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'horizontal' ); - * ``` - */ - UE.plugins["horizontal"] = function() { - var me = this; - me.commands["horizontal"] = { - execCommand: function(cmdName) { - var me = this; - if (me.queryCommandState(cmdName) !== -1) { - me.execCommand("insertHtml", "
    "); - var range = me.selection.getRange(), - start = range.startContainer; - if (start.nodeType == 1 && !start.childNodes[range.startOffset]) { - var tmp; - if ((tmp = start.childNodes[range.startOffset - 1])) { - if (tmp.nodeType == 1 && tmp.tagName == "HR") { - if (me.options.enterTag == "p") { - tmp = me.document.createElement("p"); - range.insertNode(tmp); - range.setStart(tmp, 0).setCursor(); - } else { - tmp = me.document.createElement("br"); - range.insertNode(tmp); - range.setStartBefore(tmp).setCursor(); - } - } - } - } - return true; - } - }, - //边界在table里不能加分隔线 - queryCommandState: function() { - return domUtils.filterNodeList( - this.selection.getStartElementPath(), - "table" - ) - ? -1 - : 0; - } - }; - // me.addListener('delkeyup',function(){ - // var rng = this.selection.getRange(); - // if(browser.ie && browser.version > 8){ - // rng.txtToElmBoundary(true); - // if(domUtils.isStartInblock(rng)){ - // var tmpNode = rng.startContainer; - // var pre = tmpNode.previousSibling; - // if(pre && domUtils.isTagNode(pre,'hr')){ - // domUtils.remove(pre); - // rng.select(); - // return; - // } - // } - // } - // if(domUtils.isBody(rng.startContainer)){ - // var hr = rng.startContainer.childNodes[rng.startOffset -1]; - // if(hr && hr.nodeName == 'HR'){ - // var next = hr.nextSibling; - // if(next){ - // rng.setStart(next,0) - // }else if(hr.previousSibling){ - // rng.setStartAtLast(hr.previousSibling) - // }else{ - // var p = this.document.createElement('p'); - // hr.parentNode.insertBefore(p,hr); - // domUtils.fillNode(this.document,p); - // rng.setStart(p,0); - // } - // domUtils.remove(hr); - // rng.setCursor(false,true); - // } - // } - // }) - me.addListener("delkeydown", function(name, evt) { - var rng = this.selection.getRange(); - rng.txtToElmBoundary(true); - if (domUtils.isStartInblock(rng)) { - var tmpNode = rng.startContainer; - var pre = tmpNode.previousSibling; - if (pre && domUtils.isTagNode(pre, "hr")) { - domUtils.remove(pre); - rng.select(); - domUtils.preventDefault(evt); - return true; - } - } - }); - }; - - - // plugins/time.js - /** - * 插入时间和日期 - * @file - * @since 1.2.6.1 - */ - - /** - * 插入时间,默认格式:12:59:59 - * @command time - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'time'); - * ``` - */ - - /** - * 插入日期,默认格式:2013-08-30 - * @command date - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'date'); - * ``` - */ - UE.commands["time"] = UE.commands["date"] = { - execCommand: function(cmd, format) { - var date = new Date(); - - function formatTime(date, format) { - var hh = ("0" + date.getHours()).slice(-2), - ii = ("0" + date.getMinutes()).slice(-2), - ss = ("0" + date.getSeconds()).slice(-2); - format = format || "hh:ii:ss"; - return format.replace(/hh/gi, hh).replace(/ii/gi, ii).replace(/ss/gi, ss); - } - function formatDate(date, format) { - var yyyy = ("000" + date.getFullYear()).slice(-4), - yy = yyyy.slice(-2), - mm = ("0" + (date.getMonth() + 1)).slice(-2), - dd = ("0" + date.getDate()).slice(-2); - format = format || "yyyy-mm-dd"; - return format - .replace(/yyyy/gi, yyyy) - .replace(/yy/gi, yy) - .replace(/mm/gi, mm) - .replace(/dd/gi, dd); - } - - this.execCommand( - "insertHtml", - cmd == "time" ? formatTime(date, format) : formatDate(date, format) - ); - } - }; - - - // plugins/rowspacing.js - /** - * 段前段后间距插件 - * @file - * @since 1.2.6.1 - */ - - /** - * 设置段间距 - * @command rowspacing - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } value 段间距的值,以px为单位 - * @param { String } dir 间距位置,top或bottom,分别表示段前和段后 - * @example - * ```javascript - * editor.execCommand( 'rowspacing', '10', 'top' ); - * ``` - */ - - UE.plugins["rowspacing"] = function() { - var me = this; - me.setOpt({ - rowspacingtop: ["5", "10", "15", "20", "25"], - rowspacingbottom: ["5", "10", "15", "20", "25"] - }); - me.commands["rowspacing"] = { - execCommand: function(cmdName, value, dir) { - this.execCommand("paragraph", "p", { - style: "margin-" + dir + ":" + value + "px" - }); - return true; - }, - queryCommandValue: function(cmdName, dir) { - var pN = domUtils.filterNodeList( - this.selection.getStartElementPath(), - function(node) { - return domUtils.isBlockElm(node); - } - ), - value; - //trace:1026 - if (pN) { - value = domUtils - .getComputedStyle(pN, "margin-" + dir) - .replace(/[^\d]/g, ""); - return !value ? 0 : value; - } - return 0; - } - }; - }; - - - // plugins/lineheight.js - /** - * 设置行内间距 - * @file - * @since 1.2.6.1 - */ - UE.plugins["lineheight"] = function() { - var me = this; - me.setOpt({ lineheight: ["1", "1.5", "1.75", "2", "3", "4", "5"] }); - - /** - * 行距 - * @command lineheight - * @method execCommand - * @param { String } cmdName 命令字符串 - * @param { String } value 传入的行高值, 该值是当前字体的倍数, 例如: 1.5, 1.75 - * @example - * ```javascript - * editor.execCommand( 'lineheight', 1.5); - * ``` - */ - /** - * 查询当前选区内容的行高大小 - * @command lineheight - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回当前行高大小 - * @example - * ```javascript - * editor.queryCommandValue( 'lineheight' ); - * ``` - */ - - me.commands["lineheight"] = { - execCommand: function(cmdName, value) { - this.execCommand("paragraph", "p", { - style: "line-height:" + (value == "1" ? "normal" : value + "em") - }); - return true; - }, - queryCommandValue: function() { - var pN = domUtils.filterNodeList( - this.selection.getStartElementPath(), - function(node) { - return domUtils.isBlockElm(node); - } - ); - if (pN) { - var value = domUtils.getComputedStyle(pN, "line-height"); - return value == "normal" ? 1 : value.replace(/[^\d.]*/gi, ""); - } - } - }; - }; - - - // plugins/insertcode.js - /** - * 插入代码插件 - * @file - * @since 1.2.6.1 - */ - - UE.plugins["insertcode"] = function() { - var me = this; - me.ready(function() { - utils.cssRule( - "pre", - "pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}", - me.document - ); - }); - me.setOpt("insertcode", { - as3: "ActionScript3", - bash: "Bash/Shell", - cpp: "C/C++", - css: "Css", - cf: "CodeFunction", - "c#": "C#", - delphi: "Delphi", - diff: "Diff", - erlang: "Erlang", - groovy: "Groovy", - html: "Html", - java: "Java", - jfx: "JavaFx", - js: "Javascript", - pl: "Perl", - php: "Php", - plain: "Plain Text", - ps: "PowerShell", - python: "Python", - ruby: "Ruby", - scala: "Scala", - sql: "Sql", - vb: "Vb", - xml: "Xml" - }); - - /** - * 插入代码 - * @command insertcode - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } lang 插入代码的语言 - * @example - * ```javascript - * editor.execCommand( 'insertcode', 'javascript' ); - * ``` - */ - - /** - * 如果选区所在位置是插入插入代码区域,返回代码的语言 - * @command insertcode - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回代码的语言 - * @example - * ```javascript - * editor.queryCommandValue( 'insertcode' ); - * ``` - */ - - me.commands["insertcode"] = { - execCommand: function(cmd, lang) { - var me = this, - rng = me.selection.getRange(), - pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); - if (pre) { - pre.className = "brush:" + lang + ";toolbar:false;"; - } else { - var code = ""; - if (rng.collapsed) { - code = browser.ie && browser.ie11below - ? browser.version <= 8 ? " " : "" - : "
    "; - } else { - var frag = rng.extractContents(); - var div = me.document.createElement("div"); - div.appendChild(frag); - - utils.each( - UE.filterNode( - UE.htmlparser(div.innerHTML.replace(/[\r\t]/g, "")), - me.options.filterTxtRules - ).children, - function(node) { - if (browser.ie && browser.ie11below && browser.version > 8) { - if (node.type == "element") { - if (node.tagName == "br") { - code += "\n"; - } else if (!dtd.$empty[node.tagName]) { - utils.each(node.children, function(cn) { - if (cn.type == "element") { - if (cn.tagName == "br") { - code += "\n"; - } else if (!dtd.$empty[node.tagName]) { - code += cn.innerText(); - } - } else { - code += cn.data; - } - }); - if (!/\n$/.test(code)) { - code += "\n"; - } - } - } else { - code += node.data + "\n"; - } - if (!node.nextSibling() && /\n$/.test(code)) { - code = code.replace(/\n$/, ""); - } - } else { - if (browser.ie && browser.ie11below) { - if (node.type == "element") { - if (node.tagName == "br") { - code += "
    "; - } else if (!dtd.$empty[node.tagName]) { - utils.each(node.children, function(cn) { - if (cn.type == "element") { - if (cn.tagName == "br") { - code += "
    "; - } else if (!dtd.$empty[node.tagName]) { - code += cn.innerText(); - } - } else { - code += cn.data; - } - }); - if (!/br>$/.test(code)) { - code += "
    "; - } - } - } else { - code += node.data + "
    "; - } - if (!node.nextSibling() && /
    $/.test(code)) { - code = code.replace(/
    $/, ""); - } - } else { - code += node.type == "element" - ? dtd.$empty[node.tagName] ? "" : node.innerText() - : node.data; - if (!/br\/?\s*>$/.test(code)) { - if (!node.nextSibling()) return; - code += "
    "; - } - } - } - } - ); - } - me.execCommand( - "inserthtml", - '
    ' +
    -							code +
    -							"
    ", - true - ); - - pre = me.document.getElementById("coder"); - domUtils.removeAttributes(pre, "id"); - var tmpNode = pre.previousSibling; - - if ( - tmpNode && - ((tmpNode.nodeType == 3 && - tmpNode.nodeValue.length == 1 && - browser.ie && - browser.version == 6) || - domUtils.isEmptyBlock(tmpNode)) - ) { - domUtils.remove(tmpNode); - } - var rng = me.selection.getRange(); - if (domUtils.isEmptyBlock(pre)) { - rng.setStart(pre, 0).setCursor(false, true); - } else { - rng.selectNodeContents(pre).select(); - } - } - }, - queryCommandValue: function() { - var path = this.selection.getStartElementPath(); - var lang = ""; - utils.each(path, function(node) { - if (node.nodeName == "PRE") { - var match = node.className.match(/brush:([^;]+)/); - lang = match && match[1] ? match[1] : ""; - return false; - } - }); - return lang; - } - }; - - me.addInputRule(function(root) { - utils.each(root.getNodesByTagName("pre"), function(pre) { - var brs = pre.getNodesByTagName("br"); - if (brs.length) { - browser.ie && - browser.ie11below && - browser.version > 8 && - utils.each(brs, function(br) { - var txt = UE.uNode.createText("\n"); - br.parentNode.insertBefore(txt, br); - br.parentNode.removeChild(br); - }); - return; - } - if (browser.ie && browser.ie11below && browser.version > 8) return; - var code = pre.innerText().split(/\n/); - pre.innerHTML(""); - utils.each(code, function(c) { - if (c.length) { - pre.appendChild(UE.uNode.createText(c)); - } - pre.appendChild(UE.uNode.createElement("br")); - }); - }); - }); - me.addOutputRule(function(root) { - utils.each(root.getNodesByTagName("pre"), function(pre) { - var code = ""; - utils.each(pre.children, function(n) { - if (n.type == "text") { - //在ie下文本内容有可能末尾带有\n要去掉 - //trace:3396 - code += n.data.replace(/[ ]/g, " ").replace(/\n$/, ""); - } else { - if (n.tagName == "br") { - code += "\n"; - } else { - code += !dtd.$empty[n.tagName] ? "" : n.innerText(); - } - } - }); - - pre.innerText(code.replace(/( |\n)+$/, "")); - }); - }); - //不需要判断highlight的command列表 - me.notNeedCodeQuery = { - help: 1, - undo: 1, - redo: 1, - source: 1, - print: 1, - searchreplace: 1, - fullscreen: 1, - preview: 1, - insertparagraph: 1, - elementpath: 1, - insertcode: 1, - inserthtml: 1, - selectall: 1 - }; - //将queyCommamndState重置 - var orgQuery = me.queryCommandState; - me.queryCommandState = function(cmd) { - var me = this; - - if ( - !me.notNeedCodeQuery[cmd.toLowerCase()] && - me.selection && - me.queryCommandValue("insertcode") - ) { - return -1; - } - return UE.Editor.prototype.queryCommandState.apply(this, arguments); - }; - me.addListener("beforeenterkeydown", function() { - var rng = me.selection.getRange(); - var pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); - if (pre) { - me.fireEvent("saveScene"); - if (!rng.collapsed) { - rng.deleteContents(); - } - if (!browser.ie || browser.ie9above) { - var tmpNode = me.document.createElement("br"), - pre; - rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true); - var next = tmpNode.nextSibling; - if (!next && (!browser.ie || browser.version > 10)) { - rng.insertNode(tmpNode.cloneNode(false)); - } else { - rng.setStartAfter(tmpNode); - } - pre = tmpNode.previousSibling; - var tmp; - while (pre) { - tmp = pre; - pre = pre.previousSibling; - if (!pre || pre.nodeName == "BR") { - pre = tmp; - break; - } - } - if (pre) { - var str = ""; - while ( - pre && - pre.nodeName != "BR" && - new RegExp("^[\\s" + domUtils.fillChar + "]*$").test(pre.nodeValue) - ) { - str += pre.nodeValue; - pre = pre.nextSibling; - } - if (pre.nodeName != "BR") { - var match = pre.nodeValue.match( - new RegExp("^([\\s" + domUtils.fillChar + "]+)") - ); - if (match && match[1]) { - str += match[1]; - } - } - if (str) { - str = me.document.createTextNode(str); - rng.insertNode(str).setStartAfter(str); - } - } - rng.collapse(true).select(true); - } else { - if (browser.version > 8) { - var txt = me.document.createTextNode("\n"); - var start = rng.startContainer; - if (rng.startOffset == 0) { - var preNode = start.previousSibling; - if (preNode) { - rng.insertNode(txt); - var fillchar = me.document.createTextNode(" "); - rng - .setStartAfter(txt) - .insertNode(fillchar) - .setStart(fillchar, 0) - .collapse(true) - .select(true); - } - } else { - rng.insertNode(txt).setStartAfter(txt); - var fillchar = me.document.createTextNode(" "); - start = rng.startContainer.childNodes[rng.startOffset]; - if (start && !/^\n/.test(start.nodeValue)) { - rng.setStartBefore(txt); - } - rng - .insertNode(fillchar) - .setStart(fillchar, 0) - .collapse(true) - .select(true); - } - } else { - var tmpNode = me.document.createElement("br"); - rng.insertNode(tmpNode); - rng.insertNode(me.document.createTextNode(domUtils.fillChar)); - rng.setStartAfter(tmpNode); - pre = tmpNode.previousSibling; - var tmp; - while (pre) { - tmp = pre; - pre = pre.previousSibling; - if (!pre || pre.nodeName == "BR") { - pre = tmp; - break; - } - } - if (pre) { - var str = ""; - while ( - pre && - pre.nodeName != "BR" && - new RegExp("^[ " + domUtils.fillChar + "]*$").test(pre.nodeValue) - ) { - str += pre.nodeValue; - pre = pre.nextSibling; - } - if (pre.nodeName != "BR") { - var match = pre.nodeValue.match( - new RegExp("^([ " + domUtils.fillChar + "]+)") - ); - if (match && match[1]) { - str += match[1]; - } - } - - str = me.document.createTextNode(str); - rng.insertNode(str).setStartAfter(str); - } - rng.collapse(true).select(); - } - } - me.fireEvent("saveScene"); - return true; - } - }); - - me.addListener("tabkeydown", function(cmd, evt) { - var rng = me.selection.getRange(); - var pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); - if (pre) { - me.fireEvent("saveScene"); - if (evt.shiftKey) { - } else { - if (!rng.collapsed) { - var bk = rng.createBookmark(); - var start = bk.start.previousSibling; - - while (start) { - if (pre.firstChild === start && !domUtils.isBr(start)) { - pre.insertBefore(me.document.createTextNode(" "), start); - - break; - } - if (domUtils.isBr(start)) { - pre.insertBefore( - me.document.createTextNode(" "), - start.nextSibling - ); - - break; - } - start = start.previousSibling; - } - var end = bk.end; - start = bk.start.nextSibling; - if (pre.firstChild === bk.start) { - pre.insertBefore( - me.document.createTextNode(" "), - start.nextSibling - ); - } - while (start && start !== end) { - if (domUtils.isBr(start) && start.nextSibling) { - if (start.nextSibling === end) { - break; - } - pre.insertBefore( - me.document.createTextNode(" "), - start.nextSibling - ); - } - - start = start.nextSibling; - } - rng.moveToBookmark(bk).select(); - } else { - var tmpNode = me.document.createTextNode(" "); - rng - .insertNode(tmpNode) - .setStartAfter(tmpNode) - .collapse(true) - .select(true); - } - } - - me.fireEvent("saveScene"); - return true; - } - }); - - me.addListener("beforeinserthtml", function(evtName, html) { - var me = this, - rng = me.selection.getRange(), - pre = domUtils.findParentByTagName(rng.startContainer, "pre", true); - if (pre) { - if (!rng.collapsed) { - rng.deleteContents(); - } - var htmlstr = ""; - if (browser.ie && browser.version > 8) { - utils.each( - UE.filterNode(UE.htmlparser(html), me.options.filterTxtRules) - .children, - function(node) { - if (node.type == "element") { - if (node.tagName == "br") { - htmlstr += "\n"; - } else if (!dtd.$empty[node.tagName]) { - utils.each(node.children, function(cn) { - if (cn.type == "element") { - if (cn.tagName == "br") { - htmlstr += "\n"; - } else if (!dtd.$empty[node.tagName]) { - htmlstr += cn.innerText(); - } - } else { - htmlstr += cn.data; - } - }); - if (!/\n$/.test(htmlstr)) { - htmlstr += "\n"; - } - } - } else { - htmlstr += node.data + "\n"; - } - if (!node.nextSibling() && /\n$/.test(htmlstr)) { - htmlstr = htmlstr.replace(/\n$/, ""); - } - } - ); - var tmpNode = me.document.createTextNode( - utils.html(htmlstr.replace(/ /g, " ")) - ); - rng.insertNode(tmpNode).selectNode(tmpNode).select(); - } else { - var frag = me.document.createDocumentFragment(); - - utils.each( - UE.filterNode(UE.htmlparser(html), me.options.filterTxtRules) - .children, - function(node) { - if (node.type == "element") { - if (node.tagName == "br") { - frag.appendChild(me.document.createElement("br")); - } else if (!dtd.$empty[node.tagName]) { - utils.each(node.children, function(cn) { - if (cn.type == "element") { - if (cn.tagName == "br") { - frag.appendChild(me.document.createElement("br")); - } else if (!dtd.$empty[node.tagName]) { - frag.appendChild( - me.document.createTextNode( - utils.html(cn.innerText().replace(/ /g, " ")) - ) - ); - } - } else { - frag.appendChild( - me.document.createTextNode( - utils.html(cn.data.replace(/ /g, " ")) - ) - ); - } - }); - if (frag.lastChild.nodeName != "BR") { - frag.appendChild(me.document.createElement("br")); - } - } - } else { - frag.appendChild( - me.document.createTextNode( - utils.html(node.data.replace(/ /g, " ")) - ) - ); - } - if (!node.nextSibling() && frag.lastChild.nodeName == "BR") { - frag.removeChild(frag.lastChild); - } - } - ); - rng.insertNode(frag).select(); - } - - return true; - } - }); - //方向键的处理 - me.addListener("keydown", function(cmd, evt) { - var me = this, - keyCode = evt.keyCode || evt.which; - if (keyCode == 40) { - var rng = me.selection.getRange(), - pre, - start = rng.startContainer; - if ( - rng.collapsed && - (pre = domUtils.findParentByTagName(rng.startContainer, "pre", true)) && - !pre.nextSibling - ) { - var last = pre.lastChild; - while (last && last.nodeName == "BR") { - last = last.previousSibling; - } - if ( - last === start || - (rng.startContainer === pre && - rng.startOffset == pre.childNodes.length) - ) { - me.execCommand("insertparagraph"); - domUtils.preventDefault(evt); - } - } - } - }); - //trace:3395 - me.addListener("delkeydown", function(type, evt) { - var rng = this.selection.getRange(); - rng.txtToElmBoundary(true); - var start = rng.startContainer; - if ( - domUtils.isTagNode(start, "pre") && - rng.collapsed && - domUtils.isStartInblock(rng) - ) { - var p = me.document.createElement("p"); - domUtils.fillNode(me.document, p); - start.parentNode.insertBefore(p, start); - domUtils.remove(start); - rng.setStart(p, 0).setCursor(false, true); - domUtils.preventDefault(evt); - return true; - } - }); - }; - - - // plugins/cleardoc.js - /** - * 清空文档插件 - * @file - * @since 1.2.6.1 - */ - - /** - * 清空文档 - * @command cleardoc - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * //editor 是编辑器实例 - * editor.execCommand('cleardoc'); - * ``` - */ - - UE.commands["cleardoc"] = { - execCommand: function(cmdName) { - var me = this, - enterTag = me.options.enterTag, - range = me.selection.getRange(); - if (enterTag == "br") { - me.body.innerHTML = "
    "; - range.setStart(me.body, 0).setCursor(); - } else { - me.body.innerHTML = "

    " + (ie ? "" : "
    ") + "

    "; - range.setStart(me.body.firstChild, 0).setCursor(false, true); - } - setTimeout(function() { - me.fireEvent("clearDoc"); - }, 0); - } - }; - - - // plugins/anchor.js - /** - * 锚点插件,为UEditor提供插入锚点支持 - * @file - * @since 1.2.6.1 - */ - UE.plugin.register("anchor", function() { - return { - bindEvents: { - ready: function() { - utils.cssRule( - "anchor", - ".anchorclass{background: url('" + - this.options.themePath + - this.options.theme + - "/images/anchor.gif') no-repeat scroll left center transparent;cursor: auto;display: inline-block;height: 16px;width: 15px;}", - this.document - ); - } - }, - outputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(a) { - var val; - if ((val = a.getAttr("anchorname"))) { - a.tagName = "a"; - a.setAttr({ - anchorname: "", - name: val, - class: "" - }); - } - }); - }, - inputRule: function(root) { - utils.each(root.getNodesByTagName("a"), function(a) { - var val; - if ((val = a.getAttr("name")) && !a.getAttr("href")) { - //过滤掉word冗余标签 - //_Toc\d+有可能勿命中 - if (/^\_Toc\d+$/.test(val)) { - a.parentNode.removeChild(a); - return; - } - a.tagName = "img"; - a.setAttr({ - anchorname: a.getAttr("name"), - class: "anchorclass" - }); - a.setAttr("name"); - } - }); - }, - commands: { - /** - * 插入锚点 - * @command anchor - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } name 锚点名称字符串 - * @example - * ```javascript - * //editor 是编辑器实例 - * editor.execCommand('anchor', 'anchor1'); - * ``` - */ - anchor: { - execCommand: function(cmd, name) { - var range = this.selection.getRange(), - img = range.getClosedNode(); - if (img && img.getAttribute("anchorname")) { - if (name) { - img.setAttribute("anchorname", name); - } else { - range.setStartBefore(img).setCursor(); - domUtils.remove(img); - } - } else { - if (name) { - //只在选区的开始插入 - var anchor = this.document.createElement("img"); - range.collapse(true); - domUtils.setAttributes(anchor, { - anchorname: name, - class: "anchorclass" - }); - range - .insertNode(anchor) - .setStartAfter(anchor) - .setCursor(false, true); - } - } - } - } - } - }; - }); - - - // plugins/wordcount.js - ///import core - ///commands 字数统计 - ///commandsName WordCount,wordCount - ///commandsTitle 字数统计 - /* - * Created by JetBrains WebStorm. - * User: taoqili - * Date: 11-9-7 - * Time: 下午8:18 - * To change this template use File | Settings | File Templates. - */ - - UE.plugins["wordcount"] = function() { - var me = this; - me.setOpt("wordCount", true); - me.addListener("contentchange", function() { - me.fireEvent("wordcount"); - }); - var timer; - me.addListener("ready", function() { - var me = this; - domUtils.on(me.body, "keyup", function(evt) { - var code = evt.keyCode || evt.which, - //忽略的按键,ctr,alt,shift,方向键 - ignores = { - "16": 1, - "18": 1, - "20": 1, - "37": 1, - "38": 1, - "39": 1, - "40": 1 - }; - if (code in ignores) return; - clearTimeout(timer); - timer = setTimeout(function() { - me.fireEvent("wordcount"); - }, 200); - }); - }); - }; - - - // plugins/pagebreak.js - /** - * 分页功能插件 - * @file - * @since 1.2.6.1 - */ - UE.plugins["pagebreak"] = function() { - var me = this, - notBreakTags = ["td"]; - me.setOpt("pageBreakTag", "_ueditor_page_break_tag_"); - - function fillNode(node) { - if (domUtils.isEmptyBlock(node)) { - var firstChild = node.firstChild, - tmpNode; - - while ( - firstChild && - firstChild.nodeType == 1 && - domUtils.isEmptyBlock(firstChild) - ) { - tmpNode = firstChild; - firstChild = firstChild.firstChild; - } - !tmpNode && (tmpNode = node); - domUtils.fillNode(me.document, tmpNode); - } - } - //分页符样式添加 - - me.ready(function() { - utils.cssRule( - "pagebreak", - ".pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}", - me.document - ); - }); - function isHr(node) { - return ( - node && - node.nodeType == 1 && - node.tagName == "HR" && - node.className == "pagebreak" - ); - } - me.addInputRule(function(root) { - root.traversal(function(node) { - if (node.type == "text" && node.data == me.options.pageBreakTag) { - var hr = UE.uNode.createElement( - '
    ' - ); - node.parentNode.insertBefore(hr, node); - node.parentNode.removeChild(node); - } - }); - }); - me.addOutputRule(function(node) { - utils.each(node.getNodesByTagName("hr"), function(n) { - if (n.getAttr("class") == "pagebreak") { - var txt = UE.uNode.createText(me.options.pageBreakTag); - n.parentNode.insertBefore(txt, n); - n.parentNode.removeChild(n); - } - }); - }); - - /** - * 插入分页符 - * @command pagebreak - * @method execCommand - * @param { String } cmd 命令字符串 - * @remind 在表格中插入分页符会把表格切分成两部分 - * @remind 获取编辑器内的数据时, 编辑器会把分页符转换成“_ueditor_page_break_tag_”字符串, - * 以便于提交数据到服务器端后处理分页。 - * @example - * ```javascript - * editor.execCommand( 'pagebreak'); //插入一个hr标签,带有样式类名pagebreak - * ``` - */ - - me.commands["pagebreak"] = { - execCommand: function() { - var range = me.selection.getRange(), - hr = me.document.createElement("hr"); - domUtils.setAttributes(hr, { - class: "pagebreak", - noshade: "noshade", - size: "5" - }); - domUtils.unSelectable(hr); - //table单独处理 - var node = domUtils.findParentByTagName( - range.startContainer, - notBreakTags, - true - ), - parents = [], - pN; - if (node) { - switch (node.tagName) { - case "TD": - pN = node.parentNode; - if (!pN.previousSibling) { - var table = domUtils.findParentByTagName(pN, "table"); - // var tableWrapDiv = table.parentNode; - // if(tableWrapDiv && tableWrapDiv.nodeType == 1 - // && tableWrapDiv.tagName == 'DIV' - // && tableWrapDiv.getAttribute('dropdrag') - // ){ - // domUtils.remove(tableWrapDiv,true); - // } - table.parentNode.insertBefore(hr, table); - parents = domUtils.findParents(hr, true); - } else { - pN.parentNode.insertBefore(hr, pN); - parents = domUtils.findParents(hr); - } - pN = parents[1]; - if (hr !== pN) { - domUtils.breakParent(hr, pN); - } - //table要重写绑定一下拖拽 - me.fireEvent("afteradjusttable", me.document); - } - } else { - if (!range.collapsed) { - range.deleteContents(); - var start = range.startContainer; - while ( - !domUtils.isBody(start) && - domUtils.isBlockElm(start) && - domUtils.isEmptyNode(start) - ) { - range.setStartBefore(start).collapse(true); - domUtils.remove(start); - start = range.startContainer; - } - } - range.insertNode(hr); - - var pN = hr.parentNode, - nextNode; - while (!domUtils.isBody(pN)) { - domUtils.breakParent(hr, pN); - nextNode = hr.nextSibling; - if (nextNode && domUtils.isEmptyBlock(nextNode)) { - domUtils.remove(nextNode); - } - pN = hr.parentNode; - } - nextNode = hr.nextSibling; - var pre = hr.previousSibling; - if (isHr(pre)) { - domUtils.remove(pre); - } else { - pre && fillNode(pre); - } - - if (!nextNode) { - var p = me.document.createElement("p"); - - hr.parentNode.appendChild(p); - domUtils.fillNode(me.document, p); - range.setStart(p, 0).collapse(true); - } else { - if (isHr(nextNode)) { - domUtils.remove(nextNode); - } else { - fillNode(nextNode); - } - range.setEndAfter(hr).collapse(false); - } - - range.select(true); - } - } - }; - }; - - - // plugins/wordimage.js - ///import core - ///commands 本地图片引导上传 - ///commandsName WordImage - ///commandsTitle 本地图片引导上传 - ///commandsDialog dialogs\wordimage - - UE.plugin.register("wordimage", function() { - var me = this, - images = []; - return { - commands: { - wordimage: { - execCommand: function() { - var images = domUtils.getElementsByTagName(me.body, "img"); - var urlList = []; - for (var i = 0, ci; (ci = images[i++]); ) { - var url = ci.getAttribute("word_img"); - url && urlList.push(url); - } - return urlList; - }, - queryCommandState: function() { - images = domUtils.getElementsByTagName(me.body, "img"); - for (var i = 0, ci; (ci = images[i++]); ) { - if (ci.getAttribute("word_img")) { - return 1; - } - } - return -1; - }, - notNeedUndo: true - } - }, - inputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(img) { - var attrs = img.attrs, - flag = parseInt(attrs.width) < 128 || parseInt(attrs.height) < 43, - opt = me.options, - src = opt.UEDITOR_HOME_URL + "themes/default/images/spacer.gif"; - if (attrs["src"] && /^(?:(file:\/+))/.test(attrs["src"])) { - img.setAttr({ - width: attrs.width, - height: attrs.height, - alt: attrs.alt, - word_img: attrs.src, - src: src, - style: - "background:url(" + - (flag - ? opt.themePath + opt.theme + "/images/word.gif" - : opt.langPath + opt.lang + "/images/localimage.png") + - ") no-repeat center center;border:1px solid #ddd" - }); - } - }); - } - }; - }); - - - // plugins/dragdrop.js - UE.plugins["dragdrop"] = function() { - var me = this; - me.ready(function() { - domUtils.on(this.body, "dragend", function() { - var rng = me.selection.getRange(); - var node = rng.getClosedNode() || me.selection.getStart(); - - if (node && node.tagName == "IMG") { - var pre = node.previousSibling, - next; - while ((next = node.nextSibling)) { - if ( - next.nodeType == 1 && - next.tagName == "SPAN" && - !next.firstChild - ) { - domUtils.remove(next); - } else { - break; - } - } - - if ( - ((pre && pre.nodeType == 1 && !domUtils.isEmptyBlock(pre)) || !pre) && - (!next || (next && !domUtils.isEmptyBlock(next))) - ) { - if (pre && pre.tagName == "P" && !domUtils.isEmptyBlock(pre)) { - pre.appendChild(node); - domUtils.moveChild(next, pre); - domUtils.remove(next); - } else if ( - next && - next.tagName == "P" && - !domUtils.isEmptyBlock(next) - ) { - next.insertBefore(node, next.firstChild); - } - - if (pre && pre.tagName == "P" && domUtils.isEmptyBlock(pre)) { - domUtils.remove(pre); - } - if (next && next.tagName == "P" && domUtils.isEmptyBlock(next)) { - domUtils.remove(next); - } - rng.selectNode(node).select(); - me.fireEvent("saveScene"); - } - } - }); - }); - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - if (keyCode == 13) { - var rng = me.selection.getRange(), - node; - if ( - (node = domUtils.findParentByTagName(rng.startContainer, "p", true)) - ) { - if (domUtils.getComputedStyle(node, "text-align") == "center") { - domUtils.removeStyle(node, "text-align"); - } - } - } - }); - }; - - - // plugins/undo.js - /** - * undo redo - * @file - * @since 1.2.6.1 - */ - - /** - * 撤销上一次执行的命令 - * @command undo - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'undo' ); - * ``` - */ - - /** - * 重做上一次执行的命令 - * @command redo - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'redo' ); - * ``` - */ - - UE.plugins["undo"] = function() { - var saveSceneTimer; - var me = this, - maxUndoCount = me.options.maxUndoCount || 20, - maxInputCount = me.options.maxInputCount || 20, - fillchar = new RegExp(domUtils.fillChar + "|", "gi"); // ie会产生多余的 - var noNeedFillCharTags = { - ol: 1, - ul: 1, - table: 1, - tbody: 1, - tr: 1, - body: 1 - }; - var orgState = me.options.autoClearEmptyNode; - function compareAddr(indexA, indexB) { - if (indexA.length != indexB.length) return 0; - for (var i = 0, l = indexA.length; i < l; i++) { - if (indexA[i] != indexB[i]) return 0; - } - return 1; - } - - function compareRangeAddress(rngAddrA, rngAddrB) { - if (rngAddrA.collapsed != rngAddrB.collapsed) { - return 0; - } - if ( - !compareAddr(rngAddrA.startAddress, rngAddrB.startAddress) || - !compareAddr(rngAddrA.endAddress, rngAddrB.endAddress) - ) { - return 0; - } - return 1; - } - - function UndoManager() { - this.list = []; - this.index = 0; - this.hasUndo = false; - this.hasRedo = false; - this.undo = function() { - if (this.hasUndo) { - if (!this.list[this.index - 1] && this.list.length == 1) { - this.reset(); - return; - } - while ( - this.list[this.index].content == this.list[this.index - 1].content - ) { - this.index--; - if (this.index == 0) { - return this.restore(0); - } - } - this.restore(--this.index); - } - }; - this.redo = function() { - if (this.hasRedo) { - while ( - this.list[this.index].content == this.list[this.index + 1].content - ) { - this.index++; - if (this.index == this.list.length - 1) { - return this.restore(this.index); - } - } - this.restore(++this.index); - } - }; - - this.restore = function() { - var me = this.editor; - var scene = this.list[this.index]; - var root = UE.htmlparser(scene.content.replace(fillchar, "")); - me.options.autoClearEmptyNode = false; - me.filterInputRule(root); - me.options.autoClearEmptyNode = orgState; - //trace:873 - //去掉展位符 - me.document.body.innerHTML = root.toHtml(); - me.fireEvent("afterscencerestore"); - //处理undo后空格不展位的问题 - if (browser.ie) { - utils.each( - domUtils.getElementsByTagName(me.document, "td th caption p"), - function(node) { - if (domUtils.isEmptyNode(node)) { - domUtils.fillNode(me.document, node); - } - } - ); - } - - try { - var rng = new dom.Range(me.document).moveToAddress(scene.address); - rng.select( - noNeedFillCharTags[rng.startContainer.nodeName.toLowerCase()] - ); - } catch (e) {} - - this.update(); - this.clearKey(); - //不能把自己reset了 - me.fireEvent("reset", true); - }; - - this.getScene = function() { - var me = this.editor; - var rng = me.selection.getRange(), - rngAddress = rng.createAddress(false, true); - me.fireEvent("beforegetscene"); - var root = UE.htmlparser(me.body.innerHTML); - me.options.autoClearEmptyNode = false; - me.filterOutputRule(root); - me.options.autoClearEmptyNode = orgState; - var cont = root.toHtml(); - //trace:3461 - //这个会引起回退时导致空格丢失的情况 - // browser.ie && (cont = cont.replace(/> <').replace(/\s*\s*/g, '>')); - me.fireEvent("aftergetscene"); - - return { - address: rngAddress, - content: cont - }; - }; - this.save = function(notCompareRange, notSetCursor) { - clearTimeout(saveSceneTimer); - var currentScene = this.getScene(notSetCursor), - lastScene = this.list[this.index]; - - if (lastScene && lastScene.content != currentScene.content) { - me.trigger("contentchange"); - } - //内容相同位置相同不存 - if ( - lastScene && - lastScene.content == currentScene.content && - (notCompareRange - ? 1 - : compareRangeAddress(lastScene.address, currentScene.address)) - ) { - return; - } - this.list = this.list.slice(0, this.index + 1); - this.list.push(currentScene); - //如果大于最大数量了,就把最前的剔除 - if (this.list.length > maxUndoCount) { - this.list.shift(); - } - this.index = this.list.length - 1; - this.clearKey(); - //跟新undo/redo状态 - this.update(); - }; - this.update = function() { - this.hasRedo = !!this.list[this.index + 1]; - this.hasUndo = !!this.list[this.index - 1]; - }; - this.reset = function() { - this.list = []; - this.index = 0; - this.hasUndo = false; - this.hasRedo = false; - this.clearKey(); - }; - this.clearKey = function() { - keycont = 0; - lastKeyCode = null; - }; - } - - me.undoManger = new UndoManager(); - me.undoManger.editor = me; - function saveScene() { - this.undoManger.save(); - } - - me.addListener("saveScene", function() { - var args = Array.prototype.splice.call(arguments, 1); - this.undoManger.save.apply(this.undoManger, args); - }); - - // me.addListener('beforeexeccommand', saveScene); - // me.addListener('afterexeccommand', saveScene); - - me.addListener("reset", function(type, exclude) { - if (!exclude) { - this.undoManger.reset(); - } - }); - me.commands["redo"] = me.commands["undo"] = { - execCommand: function(cmdName) { - this.undoManger[cmdName](); - }, - queryCommandState: function(cmdName) { - return this.undoManger[ - "has" + (cmdName.toLowerCase() == "undo" ? "Undo" : "Redo") - ] - ? 0 - : -1; - }, - notNeedUndo: 1 - }; - - var keys = { - // /*Backspace*/ 8:1, /*Delete*/ 46:1, - /*Shift*/ 16: 1, - /*Ctrl*/ 17: 1, - /*Alt*/ 18: 1, - 37: 1, - 38: 1, - 39: 1, - 40: 1 - }, - keycont = 0, - lastKeyCode; - //输入法状态下不计算字符数 - var inputType = false; - me.addListener("ready", function() { - domUtils.on(this.body, "compositionstart", function() { - inputType = true; - }); - domUtils.on(this.body, "compositionend", function() { - inputType = false; - }); - }); - //快捷键 - me.addshortcutkey({ - Undo: "ctrl+90", //undo - Redo: "ctrl+89" //redo - }); - var isCollapsed = true; - me.addListener("keydown", function(type, evt) { - var me = this; - var keyCode = evt.keyCode || evt.which; - if ( - !keys[keyCode] && - !evt.ctrlKey && - !evt.metaKey && - !evt.shiftKey && - !evt.altKey - ) { - if (inputType) return; - - if (!me.selection.getRange().collapsed) { - me.undoManger.save(false, true); - isCollapsed = false; - return; - } - if (me.undoManger.list.length == 0) { - me.undoManger.save(true); - } - clearTimeout(saveSceneTimer); - function save(cont) { - cont.undoManger.save(false, true); - cont.fireEvent("selectionchange"); - } - saveSceneTimer = setTimeout(function() { - if (inputType) { - var interalTimer = setInterval(function() { - if (!inputType) { - save(me); - clearInterval(interalTimer); - } - }, 300); - return; - } - save(me); - }, 200); - - lastKeyCode = keyCode; - keycont++; - if (keycont >= maxInputCount) { - save(me); - } - } - }); - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - if ( - !keys[keyCode] && - !evt.ctrlKey && - !evt.metaKey && - !evt.shiftKey && - !evt.altKey - ) { - if (inputType) return; - if (!isCollapsed) { - this.undoManger.save(false, true); - isCollapsed = true; - } - } - }); - //扩展实例,添加关闭和开启命令undo - me.stopCmdUndo = function() { - me.__hasEnterExecCommand = true; - }; - me.startCmdUndo = function() { - me.__hasEnterExecCommand = false; - }; - }; - - - // plugins/copy.js - UE.plugin.register("copy", function() { - var me = this; - - function initZeroClipboard() { - ZeroClipboard.config({ - debug: false, - swfPath: - me.options.UEDITOR_HOME_URL + - "third-party/zeroclipboard/ZeroClipboard.swf" - }); - - var client = (me.zeroclipboard = new ZeroClipboard()); - - // 复制内容 - client.on("copy", function(e) { - var client = e.client, - rng = me.selection.getRange(), - div = document.createElement("div"); - - div.appendChild(rng.cloneContents()); - client.setText(div.innerText || div.textContent); - client.setHtml(div.innerHTML); - rng.select(); - }); - // hover事件传递到target - client.on("mouseover mouseout", function(e) { - var target = e.target; - if (target) { - if (e.type == "mouseover") { - domUtils.addClass(target, "edui-state-hover"); - } else if (e.type == "mouseout") { - domUtils.removeClasses(target, "edui-state-hover"); - } - } - }); - // flash加载不成功 - client.on("wrongflash noflash", function() { - ZeroClipboard.destroy(); - }); - - // 触发事件 - me.fireEvent("zeroclipboardready", client); - } - - return { - bindEvents: { - ready: function() { - if (!browser.ie) { - if (window.ZeroClipboard) { - initZeroClipboard(); - } else { - utils.loadFile( - document, - { - src: - me.options.UEDITOR_HOME_URL + - "third-party/zeroclipboard/ZeroClipboard.js", - tag: "script", - type: "text/javascript", - defer: "defer" - }, - function() { - initZeroClipboard(); - } - ); - } - } - } - }, - commands: { - copy: { - execCommand: function(cmd) { - if (!me.document.execCommand("copy")) { - alert(me.getLang("copymsg")); - } - } - } - } - }; - }); - - - // plugins/paste.js - ///import core - ///import plugins/inserthtml.js - ///import plugins/undo.js - ///import plugins/serialize.js - ///commands 粘贴 - ///commandsName PastePlain - ///commandsTitle 纯文本粘贴模式 - /** - * @description 粘贴 - * @author zhanyi - */ - UE.plugins["paste"] = function() { - function getClipboardData(callback) { - var doc = this.document; - if (doc.getElementById("baidu_pastebin")) { - return; - } - var range = this.selection.getRange(), - bk = range.createBookmark(), - //创建剪贴的容器div - pastebin = doc.createElement("div"); - pastebin.id = "baidu_pastebin"; - // Safari 要求div必须有内容,才能粘贴内容进来 - browser.webkit && - pastebin.appendChild( - doc.createTextNode(domUtils.fillChar + domUtils.fillChar) - ); - doc.body.appendChild(pastebin); - //trace:717 隐藏的span不能得到top - //bk.start.innerHTML = ' '; - bk.start.style.display = ""; - pastebin.style.cssText = - "position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:" + - //要在现在光标平行的位置加入,否则会出现跳动的问题 - domUtils.getXY(bk.start).y + - "px"; - - range.selectNodeContents(pastebin).select(true); - - setTimeout(function() { - if (browser.webkit) { - for ( - var i = 0, pastebins = doc.querySelectorAll("#baidu_pastebin"), pi; - (pi = pastebins[i++]); - - ) { - if (domUtils.isEmptyNode(pi)) { - domUtils.remove(pi); - } else { - pastebin = pi; - break; - } - } - } - try { - pastebin.parentNode.removeChild(pastebin); - } catch (e) {} - range.moveToBookmark(bk).select(true); - callback(pastebin); - }, 0); - } - - var me = this; - - me.setOpt({ - retainOnlyLabelPasted: false - }); - - var txtContent, htmlContent, address; - - function getPureHtml(html) { - return html.replace(/<(\/?)([\w\-]+)([^>]*)>/gi, function( - a, - b, - tagName, - attrs - ) { - tagName = tagName.toLowerCase(); - if ({ img: 1 }[tagName]) { - return a; - } - attrs = attrs.replace( - /([\w\-]*?)\s*=\s*(("([^"]*)")|('([^']*)')|([^\s>]+))/gi, - function(str, atr, val) { - if ( - { - src: 1, - href: 1, - name: 1 - }[atr.toLowerCase()] - ) { - return atr + "=" + val + " "; - } - return ""; - } - ); - if ( - { - span: 1, - div: 1 - }[tagName] - ) { - return ""; - } else { - return "<" + b + tagName + " " + utils.trim(attrs) + ">"; - } - }); - } - function filter(div) { - var html; - if (div.firstChild) { - //去掉cut中添加的边界值 - var nodes = domUtils.getElementsByTagName(div, "span"); - for (var i = 0, ni; (ni = nodes[i++]); ) { - if (ni.id == "_baidu_cut_start" || ni.id == "_baidu_cut_end") { - domUtils.remove(ni); - } - } - - if (browser.webkit) { - var brs = div.querySelectorAll("div br"); - for (var i = 0, bi; (bi = brs[i++]); ) { - var pN = bi.parentNode; - if (pN.tagName == "DIV" && pN.childNodes.length == 1) { - pN.innerHTML = "


    "; - domUtils.remove(pN); - } - } - var divs = div.querySelectorAll("#baidu_pastebin"); - for (var i = 0, di; (di = divs[i++]); ) { - var tmpP = me.document.createElement("p"); - di.parentNode.insertBefore(tmpP, di); - while (di.firstChild) { - tmpP.appendChild(di.firstChild); - } - domUtils.remove(di); - } - - var metas = div.querySelectorAll("meta"); - for (var i = 0, ci; (ci = metas[i++]); ) { - domUtils.remove(ci); - } - - var brs = div.querySelectorAll("br"); - for (i = 0; (ci = brs[i++]); ) { - if (/^apple-/i.test(ci.className)) { - domUtils.remove(ci); - } - } - } - if (browser.gecko) { - var dirtyNodes = div.querySelectorAll("[_moz_dirty]"); - for (i = 0; (ci = dirtyNodes[i++]); ) { - ci.removeAttribute("_moz_dirty"); - } - } - if (!browser.ie) { - var spans = div.querySelectorAll("span.Apple-style-span"); - for (var i = 0, ci; (ci = spans[i++]); ) { - domUtils.remove(ci, true); - } - } - - //ie下使用innerHTML会产生多余的\r\n字符,也会产生 这里过滤掉 - html = div.innerHTML; //.replace(/>(?:(\s| )*?)<'); - - //过滤word粘贴过来的冗余属性 - html = UE.filterWord(html); - //取消了忽略空白的第二个参数,粘贴过来的有些是有空白的,会被套上相关的标签 - var root = UE.htmlparser(html); - //如果给了过滤规则就先进行过滤 - if (me.options.filterRules) { - UE.filterNode(root, me.options.filterRules); - } - //执行默认的处理 - me.filterInputRule(root); - //针对chrome的处理 - if (browser.webkit) { - var br = root.lastChild(); - if (br && br.type == "element" && br.tagName == "br") { - root.removeChild(br); - } - utils.each(me.body.querySelectorAll("div"), function(node) { - if (domUtils.isEmptyBlock(node)) { - domUtils.remove(node, true); - } - }); - } - html = { html: root.toHtml() }; - me.fireEvent("beforepaste", html, root); - //抢了默认的粘贴,那后边的内容就不执行了,比如表格粘贴 - if (!html.html) { - return; - } - root = UE.htmlparser(html.html, true); - //如果开启了纯文本模式 - if (me.queryCommandState("pasteplain") === 1) { - me.execCommand( - "insertHtml", - UE.filterNode(root, me.options.filterTxtRules).toHtml(), - true - ); - } else { - //文本模式 - UE.filterNode(root, me.options.filterTxtRules); - txtContent = root.toHtml(); - //完全模式 - htmlContent = html.html; - - address = me.selection.getRange().createAddress(true); - me.execCommand( - "insertHtml", - me.getOpt("retainOnlyLabelPasted") === true - ? getPureHtml(htmlContent) - : htmlContent, - true - ); - } - me.fireEvent("afterpaste", html); - } - } - - me.addListener("pasteTransfer", function(cmd, plainType) { - if (address && txtContent && htmlContent && txtContent != htmlContent) { - var range = me.selection.getRange(); - range.moveToAddress(address, true); - - if (!range.collapsed) { - while (!domUtils.isBody(range.startContainer)) { - var start = range.startContainer; - if (start.nodeType == 1) { - start = start.childNodes[range.startOffset]; - if (!start) { - range.setStartBefore(range.startContainer); - continue; - } - var pre = start.previousSibling; - - if ( - pre && - pre.nodeType == 3 && - new RegExp("^[\n\r\t " + domUtils.fillChar + "]*$").test( - pre.nodeValue - ) - ) { - range.setStartBefore(pre); - } - } - if (range.startOffset == 0) { - range.setStartBefore(range.startContainer); - } else { - break; - } - } - while (!domUtils.isBody(range.endContainer)) { - var end = range.endContainer; - if (end.nodeType == 1) { - end = end.childNodes[range.endOffset]; - if (!end) { - range.setEndAfter(range.endContainer); - continue; - } - var next = end.nextSibling; - if ( - next && - next.nodeType == 3 && - new RegExp("^[\n\r\t" + domUtils.fillChar + "]*$").test( - next.nodeValue - ) - ) { - range.setEndAfter(next); - } - } - if ( - range.endOffset == - range.endContainer[ - range.endContainer.nodeType == 3 ? "nodeValue" : "childNodes" - ].length - ) { - range.setEndAfter(range.endContainer); - } else { - break; - } - } - } - - range.deleteContents(); - range.select(true); - me.__hasEnterExecCommand = true; - var html = htmlContent; - if (plainType === 2) { - html = getPureHtml(html); - } else if (plainType) { - html = txtContent; - } - me.execCommand("inserthtml", html, true); - me.__hasEnterExecCommand = false; - var rng = me.selection.getRange(); - while ( - !domUtils.isBody(rng.startContainer) && - !rng.startOffset && - rng.startContainer[ - rng.startContainer.nodeType == 3 ? "nodeValue" : "childNodes" - ].length - ) { - rng.setStartBefore(rng.startContainer); - } - var tmpAddress = rng.createAddress(true); - address.endAddress = tmpAddress.startAddress; - } - }); - - me.addListener("ready", function() { - domUtils.on(me.body, "cut", function() { - var range = me.selection.getRange(); - if (!range.collapsed && me.undoManger) { - me.undoManger.save(); - } - }); - - //ie下beforepaste在点击右键时也会触发,所以用监控键盘才处理 - domUtils.on( - me.body, - browser.ie || browser.opera ? "keydown" : "paste", - function(e) { - if ( - (browser.ie || browser.opera) && - ((!e.ctrlKey && !e.metaKey) || e.keyCode != "86") - ) { - return; - } - getClipboardData.call(me, function(div) { - filter(div); - }); - } - ); - }); - - me.commands["paste"] = { - execCommand: function(cmd) { - if (browser.ie) { - getClipboardData.call(me, function(div) { - filter(div); - }); - me.document.execCommand("paste"); - } else { - alert(me.getLang("pastemsg")); - } - } - }; - }; - - - // plugins/puretxtpaste.js - /** - * 纯文本粘贴插件 - * @file - * @since 1.2.6.1 - */ - - UE.plugins["pasteplain"] = function() { - var me = this; - me.setOpt({ - pasteplain: false, - filterTxtRules: (function() { - function transP(node) { - node.tagName = "p"; - node.setStyle(); - } - function removeNode(node) { - node.parentNode.removeChild(node, true); - } - return { - //直接删除及其字节点内容 - "-": "script style object iframe embed input select", - p: { $: {} }, - br: { $: {} }, - div: function(node) { - var tmpNode, - p = UE.uNode.createElement("p"); - while ((tmpNode = node.firstChild())) { - if (tmpNode.type == "text" || !UE.dom.dtd.$block[tmpNode.tagName]) { - p.appendChild(tmpNode); - } else { - if (p.firstChild()) { - node.parentNode.insertBefore(p, node); - p = UE.uNode.createElement("p"); - } else { - node.parentNode.insertBefore(tmpNode, node); - } - } - } - if (p.firstChild()) { - node.parentNode.insertBefore(p, node); - } - node.parentNode.removeChild(node); - }, - ol: removeNode, - ul: removeNode, - dl: removeNode, - dt: removeNode, - dd: removeNode, - li: removeNode, - caption: transP, - th: transP, - tr: transP, - h1: transP, - h2: transP, - h3: transP, - h4: transP, - h5: transP, - h6: transP, - td: function(node) { - //没有内容的td直接删掉 - var txt = !!node.innerText(); - if (txt) { - node.parentNode.insertAfter( - UE.uNode.createText("    "), - node - ); - } - node.parentNode.removeChild(node, node.innerText()); - } - }; - })() - }); - //暂时这里支持一下老版本的属性 - var pasteplain = me.options.pasteplain; - - /** - * 启用或取消纯文本粘贴模式 - * @command pasteplain - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.queryCommandState( 'pasteplain' ); - * ``` - */ - - /** - * 查询当前是否处于纯文本粘贴模式 - * @command pasteplain - * @method queryCommandState - * @param { String } cmd 命令字符串 - * @return { int } 如果处于纯文本模式,返回1,否则,返回0 - * @example - * ```javascript - * editor.queryCommandState( 'pasteplain' ); - * ``` - */ - me.commands["pasteplain"] = { - queryCommandState: function() { - return pasteplain ? 1 : 0; - }, - execCommand: function() { - pasteplain = !pasteplain | 0; - }, - notNeedUndo: 1 - }; - }; - - - // plugins/list.js - /** - * 有序列表,无序列表插件 - * @file - * @since 1.2.6.1 - */ - - UE.plugins["list"] = function() { - var me = this, - notExchange = { - TD: 1, - PRE: 1, - BLOCKQUOTE: 1 - }; - var customStyle = { - cn: "cn-1-", - cn1: "cn-2-", - cn2: "cn-3-", - num: "num-1-", - num1: "num-2-", - num2: "num-3-", - dash: "dash", - dot: "dot" - }; - - me.setOpt({ - autoTransWordToList: false, - insertorderedlist: { - num: "", - num1: "", - num2: "", - cn: "", - cn1: "", - cn2: "", - decimal: "", - "lower-alpha": "", - "lower-roman": "", - "upper-alpha": "", - "upper-roman": "" - }, - insertunorderedlist: { - circle: "", - disc: "", - square: "", - dash: "", - dot: "" - }, - listDefaultPaddingLeft: "30", - listiconpath: "http://bs.baidu.com/listicon/", - maxListLevel: -1, //-1不限制 - disablePInList: false - }); - function listToArray(list) { - var arr = []; - for (var p in list) { - arr.push(p); - } - return arr; - } - var listStyle = { - OL: listToArray(me.options.insertorderedlist), - UL: listToArray(me.options.insertunorderedlist) - }; - var liiconpath = me.options.listiconpath; - - //根据用户配置,调整customStyle - for (var s in customStyle) { - if ( - !me.options.insertorderedlist.hasOwnProperty(s) && - !me.options.insertunorderedlist.hasOwnProperty(s) - ) { - delete customStyle[s]; - } - } - - me.ready(function() { - var customCss = []; - for (var p in customStyle) { - if (p == "dash" || p == "dot") { - customCss.push( - "li.list-" + - customStyle[p] + - "{background-image:url(" + - liiconpath + - customStyle[p] + - ".gif)}" - ); - customCss.push( - "ul.custom_" + - p + - "{list-style:none;}ul.custom_" + - p + - " li{background-position:0 3px;background-repeat:no-repeat}" - ); - } else { - for (var i = 0; i < 99; i++) { - customCss.push( - "li.list-" + - customStyle[p] + - i + - "{background-image:url(" + - liiconpath + - "list-" + - customStyle[p] + - i + - ".gif)}" - ); - } - customCss.push( - "ol.custom_" + - p + - "{list-style:none;}ol.custom_" + - p + - " li{background-position:0 3px;background-repeat:no-repeat}" - ); - } - switch (p) { - case "cn": - customCss.push("li.list-" + p + "-paddingleft-1{padding-left:25px}"); - customCss.push("li.list-" + p + "-paddingleft-2{padding-left:40px}"); - customCss.push("li.list-" + p + "-paddingleft-3{padding-left:55px}"); - break; - case "cn1": - customCss.push("li.list-" + p + "-paddingleft-1{padding-left:30px}"); - customCss.push("li.list-" + p + "-paddingleft-2{padding-left:40px}"); - customCss.push("li.list-" + p + "-paddingleft-3{padding-left:55px}"); - break; - case "cn2": - customCss.push("li.list-" + p + "-paddingleft-1{padding-left:40px}"); - customCss.push("li.list-" + p + "-paddingleft-2{padding-left:55px}"); - customCss.push("li.list-" + p + "-paddingleft-3{padding-left:68px}"); - break; - case "num": - case "num1": - customCss.push("li.list-" + p + "-paddingleft-1{padding-left:25px}"); - break; - case "num2": - customCss.push("li.list-" + p + "-paddingleft-1{padding-left:35px}"); - customCss.push("li.list-" + p + "-paddingleft-2{padding-left:40px}"); - break; - case "dash": - customCss.push("li.list-" + p + "-paddingleft{padding-left:35px}"); - break; - case "dot": - customCss.push("li.list-" + p + "-paddingleft{padding-left:20px}"); - } - } - customCss.push(".list-paddingleft-1{padding-left:0}"); - customCss.push( - ".list-paddingleft-2{padding-left:" + - me.options.listDefaultPaddingLeft + - "px}" - ); - customCss.push( - ".list-paddingleft-3{padding-left:" + - me.options.listDefaultPaddingLeft * 2 + - "px}" - ); - //如果不给宽度会在自定应样式里出现滚动条 - utils.cssRule( - "list", - "ol,ul{margin:0;pading:0;" + - (browser.ie ? "" : "width:95%") + - "}li{clear:both;}" + - customCss.join("\n"), - me.document - ); - }); - //单独处理剪切的问题 - me.ready(function() { - domUtils.on(me.body, "cut", function() { - setTimeout(function() { - var rng = me.selection.getRange(), - li; - //trace:3416 - if (!rng.collapsed) { - if ( - (li = domUtils.findParentByTagName(rng.startContainer, "li", true)) - ) { - if (!li.nextSibling && domUtils.isEmptyBlock(li)) { - var pn = li.parentNode, - node; - if ((node = pn.previousSibling)) { - domUtils.remove(pn); - rng.setStartAtLast(node).collapse(true); - rng.select(true); - } else if ((node = pn.nextSibling)) { - domUtils.remove(pn); - rng.setStartAtFirst(node).collapse(true); - rng.select(true); - } else { - var tmpNode = me.document.createElement("p"); - domUtils.fillNode(me.document, tmpNode); - pn.parentNode.insertBefore(tmpNode, pn); - domUtils.remove(pn); - rng.setStart(tmpNode, 0).collapse(true); - rng.select(true); - } - } - } - } - }); - }); - }); - - function getStyle(node) { - var cls = node.className; - if (domUtils.hasClass(node, /custom_/)) { - return cls.match(/custom_(\w+)/)[1]; - } - return domUtils.getStyle(node, "list-style-type"); - } - - me.addListener("beforepaste", function(type, html) { - var me = this, - rng = me.selection.getRange(), - li; - var root = UE.htmlparser(html.html, true); - if ((li = domUtils.findParentByTagName(rng.startContainer, "li", true))) { - var list = li.parentNode, - tagName = list.tagName == "OL" ? "ul" : "ol"; - utils.each(root.getNodesByTagName(tagName), function(n) { - n.tagName = list.tagName; - n.setAttr(); - if (n.parentNode === root) { - type = getStyle(list) || (list.tagName == "OL" ? "decimal" : "disc"); - } else { - var className = n.parentNode.getAttr("class"); - if (className && /custom_/.test(className)) { - type = className.match(/custom_(\w+)/)[1]; - } else { - type = n.parentNode.getStyle("list-style-type"); - } - if (!type) { - type = list.tagName == "OL" ? "decimal" : "disc"; - } - } - var index = utils.indexOf(listStyle[list.tagName], type); - if (n.parentNode !== root) - index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1; - var currentStyle = listStyle[list.tagName][index]; - if (customStyle[currentStyle]) { - n.setAttr("class", "custom_" + currentStyle); - } else { - n.setStyle("list-style-type", currentStyle); - } - }); - } - - html.html = root.toHtml(); - }); - //导出时,去掉p标签 - me.getOpt("disablePInList") === true && - me.addOutputRule(function(root) { - utils.each(root.getNodesByTagName("li"), function(li) { - var newChildrens = [], - index = 0; - utils.each(li.children, function(n) { - if (n.tagName == "p") { - var tmpNode; - while ((tmpNode = n.children.pop())) { - newChildrens.splice(index, 0, tmpNode); - tmpNode.parentNode = li; - lastNode = tmpNode; - } - tmpNode = newChildrens[newChildrens.length - 1]; - if ( - !tmpNode || - tmpNode.type != "element" || - tmpNode.tagName != "br" - ) { - var br = UE.uNode.createElement("br"); - br.parentNode = li; - newChildrens.push(br); - } - - index = newChildrens.length; - } - }); - if (newChildrens.length) { - li.children = newChildrens; - } - }); - }); - //进入编辑器的li要套p标签 - me.addInputRule(function(root) { - utils.each(root.getNodesByTagName("li"), function(li) { - var tmpP = UE.uNode.createElement("p"); - for (var i = 0, ci; (ci = li.children[i]); ) { - if (ci.type == "text" || dtd.p[ci.tagName]) { - tmpP.appendChild(ci); - } else { - if (tmpP.firstChild()) { - li.insertBefore(tmpP, ci); - tmpP = UE.uNode.createElement("p"); - i = i + 2; - } else { - i++; - } - } - } - if ((tmpP.firstChild() && !tmpP.parentNode) || !li.firstChild()) { - li.appendChild(tmpP); - } - //trace:3357 - //p不能为空 - if (!tmpP.firstChild()) { - tmpP.innerHTML(browser.ie ? " " : "
    "); - } - //去掉末尾的空白 - var p = li.firstChild(); - var lastChild = p.lastChild(); - if ( - lastChild && - lastChild.type == "text" && - /^\s*$/.test(lastChild.data) - ) { - p.removeChild(lastChild); - } - }); - if (me.options.autoTransWordToList) { - var orderlisttype = { - num1: /^\d+\)/, - decimal: /^\d+\./, - "lower-alpha": /^[a-z]+\)/, - "upper-alpha": /^[A-Z]+\./, - cn: /^[\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+[\u3001]/, - cn2: /^\([\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+\)/ - }, - unorderlisttype = { - square: "n" - }; - function checkListType(content, container) { - var span = container.firstChild(); - if ( - span && - span.type == "element" && - span.tagName == "span" && - /Wingdings|Symbol/.test(span.getStyle("font-family")) - ) { - for (var p in unorderlisttype) { - if (unorderlisttype[p] == span.data) { - return p; - } - } - return "disc"; - } - for (var p in orderlisttype) { - if (orderlisttype[p].test(content)) { - return p; - } - } - } - utils.each(root.getNodesByTagName("p"), function(node) { - if (node.getAttr("class") != "MsoListParagraph") { - return; - } - - //word粘贴过来的会带有margin要去掉,但这样也可能会误命中一些央视 - node.setStyle("margin", ""); - node.setStyle("margin-left", ""); - node.setAttr("class", ""); - - function appendLi(list, p, type) { - if (list.tagName == "ol") { - if (browser.ie) { - var first = p.firstChild(); - if ( - first.type == "element" && - first.tagName == "span" && - orderlisttype[type].test(first.innerText()) - ) { - p.removeChild(first); - } - } else { - p.innerHTML(p.innerHTML().replace(orderlisttype[type], "")); - } - } else { - p.removeChild(p.firstChild()); - } - - var li = UE.uNode.createElement("li"); - li.appendChild(p); - list.appendChild(li); - } - var tmp = node, - type, - cacheNode = node; - - if ( - node.parentNode.tagName != "li" && - (type = checkListType(node.innerText(), node)) - ) { - var list = UE.uNode.createElement( - me.options.insertorderedlist.hasOwnProperty(type) ? "ol" : "ul" - ); - if (customStyle[type]) { - list.setAttr("class", "custom_" + type); - } else { - list.setStyle("list-style-type", type); - } - while ( - node && - node.parentNode.tagName != "li" && - checkListType(node.innerText(), node) - ) { - tmp = node.nextSibling(); - if (!tmp) { - node.parentNode.insertBefore(list, node); - } - appendLi(list, node, type); - node = tmp; - } - if (!list.parentNode && node && node.parentNode) { - node.parentNode.insertBefore(list, node); - } - } - var span = cacheNode.firstChild(); - if ( - span && - span.type == "element" && - span.tagName == "span" && - /^\s*( )+\s*$/.test(span.innerText()) - ) { - span.parentNode.removeChild(span); - } - }); - } - }); - - //调整索引标签 - me.addListener("contentchange", function() { - adjustListStyle(me.document); - }); - - function adjustListStyle(doc, ignore) { - utils.each(domUtils.getElementsByTagName(doc, "ol ul"), function(node) { - if (!domUtils.inDoc(node, doc)) return; - - var parent = node.parentNode; - if (parent.tagName == node.tagName) { - var nodeStyleType = - getStyle(node) || (node.tagName == "OL" ? "decimal" : "disc"), - parentStyleType = - getStyle(parent) || (parent.tagName == "OL" ? "decimal" : "disc"); - if (nodeStyleType == parentStyleType) { - var styleIndex = utils.indexOf( - listStyle[node.tagName], - nodeStyleType - ); - styleIndex = styleIndex + 1 == listStyle[node.tagName].length - ? 0 - : styleIndex + 1; - setListStyle(node, listStyle[node.tagName][styleIndex]); - } - } - var index = 0, - type = 2; - if (domUtils.hasClass(node, /custom_/)) { - if ( - !( - /[ou]l/i.test(parent.tagName) && - domUtils.hasClass(parent, /custom_/) - ) - ) { - type = 1; - } - } else { - if ( - /[ou]l/i.test(parent.tagName) && - domUtils.hasClass(parent, /custom_/) - ) { - type = 3; - } - } - - var style = domUtils.getStyle(node, "list-style-type"); - style && (node.style.cssText = "list-style-type:" + style); - node.className = - utils.trim(node.className.replace(/list-paddingleft-\w+/, "")) + - " list-paddingleft-" + - type; - utils.each(domUtils.getElementsByTagName(node, "li"), function(li) { - li.style.cssText && (li.style.cssText = ""); - if (!li.firstChild) { - domUtils.remove(li); - return; - } - if (li.parentNode !== node) { - return; - } - index++; - if (domUtils.hasClass(node, /custom_/)) { - var paddingLeft = 1, - currentStyle = getStyle(node); - if (node.tagName == "OL") { - if (currentStyle) { - switch (currentStyle) { - case "cn": - case "cn1": - case "cn2": - if ( - index > 10 && - (index % 10 == 0 || (index > 10 && index < 20)) - ) { - paddingLeft = 2; - } else if (index > 20) { - paddingLeft = 3; - } - break; - case "num2": - if (index > 9) { - paddingLeft = 2; - } - } - } - li.className = - "list-" + - customStyle[currentStyle] + - index + - " " + - "list-" + - currentStyle + - "-paddingleft-" + - paddingLeft; - } else { - li.className = - "list-" + - customStyle[currentStyle] + - " " + - "list-" + - currentStyle + - "-paddingleft"; - } - } else { - li.className = li.className.replace(/list-[\w\-]+/gi, ""); - } - var className = li.getAttribute("class"); - if (className !== null && !className.replace(/\s/g, "")) { - domUtils.removeAttributes(li, "class"); - } - }); - !ignore && - adjustList( - node, - node.tagName.toLowerCase(), - getStyle(node) || domUtils.getStyle(node, "list-style-type"), - true - ); - }); - } - function adjustList(list, tag, style, ignoreEmpty) { - var nextList = list.nextSibling; - if ( - nextList && - nextList.nodeType == 1 && - nextList.tagName.toLowerCase() == tag && - (getStyle(nextList) || - domUtils.getStyle(nextList, "list-style-type") || - (tag == "ol" ? "decimal" : "disc")) == style - ) { - domUtils.moveChild(nextList, list); - if (nextList.childNodes.length == 0) { - domUtils.remove(nextList); - } - } - if (nextList && domUtils.isFillChar(nextList)) { - domUtils.remove(nextList); - } - var preList = list.previousSibling; - if ( - preList && - preList.nodeType == 1 && - preList.tagName.toLowerCase() == tag && - (getStyle(preList) || - domUtils.getStyle(preList, "list-style-type") || - (tag == "ol" ? "decimal" : "disc")) == style - ) { - domUtils.moveChild(list, preList); - } - if (preList && domUtils.isFillChar(preList)) { - domUtils.remove(preList); - } - !ignoreEmpty && domUtils.isEmptyBlock(list) && domUtils.remove(list); - if (getStyle(list)) { - adjustListStyle(list.ownerDocument, true); - } - } - - function setListStyle(list, style) { - if (customStyle[style]) { - list.className = "custom_" + style; - } - try { - domUtils.setStyle(list, "list-style-type", style); - } catch (e) {} - } - function clearEmptySibling(node) { - var tmpNode = node.previousSibling; - if (tmpNode && domUtils.isEmptyBlock(tmpNode)) { - domUtils.remove(tmpNode); - } - tmpNode = node.nextSibling; - if (tmpNode && domUtils.isEmptyBlock(tmpNode)) { - domUtils.remove(tmpNode); - } - } - - me.addListener("keydown", function(type, evt) { - function preventAndSave() { - evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); - me.fireEvent("contentchange"); - me.undoManger && me.undoManger.save(); - } - function findList(node, filterFn) { - while (node && !domUtils.isBody(node)) { - if (filterFn(node)) { - return null; - } - if (node.nodeType == 1 && /[ou]l/i.test(node.tagName)) { - return node; - } - node = node.parentNode; - } - return null; - } - var keyCode = evt.keyCode || evt.which; - if (keyCode == 13 && !evt.shiftKey) { - //回车 - var rng = me.selection.getRange(), - parent = domUtils.findParent( - rng.startContainer, - function(node) { - return domUtils.isBlockElm(node); - }, - true - ), - li = domUtils.findParentByTagName(rng.startContainer, "li", true); - if (parent && parent.tagName != "PRE" && !li) { - var html = parent.innerHTML.replace( - new RegExp(domUtils.fillChar, "g"), - "" - ); - if (/^\s*1\s*\.[^\d]/.test(html)) { - parent.innerHTML = html.replace(/^\s*1\s*\./, ""); - rng.setStartAtLast(parent).collapse(true).select(); - me.__hasEnterExecCommand = true; - me.execCommand("insertorderedlist"); - me.__hasEnterExecCommand = false; - } - } - var range = me.selection.getRange(), - start = findList(range.startContainer, function(node) { - return node.tagName == "TABLE"; - }), - end = range.collapsed - ? start - : findList(range.endContainer, function(node) { - return node.tagName == "TABLE"; - }); - - if (start && end && start === end) { - if (!range.collapsed) { - start = domUtils.findParentByTagName( - range.startContainer, - "li", - true - ); - end = domUtils.findParentByTagName(range.endContainer, "li", true); - if (start && end && start === end) { - range.deleteContents(); - li = domUtils.findParentByTagName(range.startContainer, "li", true); - if (li && domUtils.isEmptyBlock(li)) { - pre = li.previousSibling; - next = li.nextSibling; - p = me.document.createElement("p"); - - domUtils.fillNode(me.document, p); - parentList = li.parentNode; - if (pre && next) { - range.setStart(next, 0).collapse(true).select(true); - domUtils.remove(li); - } else { - if ((!pre && !next) || !pre) { - parentList.parentNode.insertBefore(p, parentList); - } else { - li.parentNode.parentNode.insertBefore( - p, - parentList.nextSibling - ); - } - domUtils.remove(li); - if (!parentList.firstChild) { - domUtils.remove(parentList); - } - range.setStart(p, 0).setCursor(); - } - preventAndSave(); - return; - } - } else { - var tmpRange = range.cloneRange(), - bk = tmpRange.collapse(false).createBookmark(); - - range.deleteContents(); - tmpRange.moveToBookmark(bk); - var li = domUtils.findParentByTagName( - tmpRange.startContainer, - "li", - true - ); - - clearEmptySibling(li); - tmpRange.select(); - preventAndSave(); - return; - } - } - - li = domUtils.findParentByTagName(range.startContainer, "li", true); - - if (li) { - if (domUtils.isEmptyBlock(li)) { - bk = range.createBookmark(); - var parentList = li.parentNode; - if (li !== parentList.lastChild) { - domUtils.breakParent(li, parentList); - clearEmptySibling(li); - } else { - parentList.parentNode.insertBefore(li, parentList.nextSibling); - if (domUtils.isEmptyNode(parentList)) { - domUtils.remove(parentList); - } - } - //嵌套不处理 - if (!dtd.$list[li.parentNode.tagName]) { - if (!domUtils.isBlockElm(li.firstChild)) { - p = me.document.createElement("p"); - li.parentNode.insertBefore(p, li); - while (li.firstChild) { - p.appendChild(li.firstChild); - } - domUtils.remove(li); - } else { - domUtils.remove(li, true); - } - } - range.moveToBookmark(bk).select(); - } else { - var first = li.firstChild; - if (!first || !domUtils.isBlockElm(first)) { - var p = me.document.createElement("p"); - - !li.firstChild && domUtils.fillNode(me.document, p); - while (li.firstChild) { - p.appendChild(li.firstChild); - } - li.appendChild(p); - first = p; - } - - var span = me.document.createElement("span"); - - range.insertNode(span); - domUtils.breakParent(span, li); - - var nextLi = span.nextSibling; - first = nextLi.firstChild; - - if (!first) { - p = me.document.createElement("p"); - - domUtils.fillNode(me.document, p); - nextLi.appendChild(p); - first = p; - } - if (domUtils.isEmptyNode(first)) { - first.innerHTML = ""; - domUtils.fillNode(me.document, first); - } - - range.setStart(first, 0).collapse(true).shrinkBoundary().select(); - domUtils.remove(span); - var pre = nextLi.previousSibling; - if (pre && domUtils.isEmptyBlock(pre)) { - pre.innerHTML = "

    "; - domUtils.fillNode(me.document, pre.firstChild); - } - } - // } - preventAndSave(); - } - } - } - if (keyCode == 8) { - //修中ie中li下的问题 - range = me.selection.getRange(); - if (range.collapsed && domUtils.isStartInblock(range)) { - tmpRange = range.cloneRange().trimBoundary(); - li = domUtils.findParentByTagName(range.startContainer, "li", true); - //要在li的最左边,才能处理 - if (li && domUtils.isStartInblock(tmpRange)) { - start = domUtils.findParentByTagName(range.startContainer, "p", true); - if (start && start !== li.firstChild) { - var parentList = domUtils.findParentByTagName(start, ["ol", "ul"]); - domUtils.breakParent(start, parentList); - clearEmptySibling(start); - me.fireEvent("contentchange"); - range.setStart(start, 0).setCursor(false, true); - me.fireEvent("saveScene"); - domUtils.preventDefault(evt); - return; - } - - if (li && (pre = li.previousSibling)) { - if (keyCode == 46 && li.childNodes.length) { - return; - } - //有可能上边的兄弟节点是个2级菜单,要追加到2级菜单的最后的li - if (dtd.$list[pre.tagName]) { - pre = pre.lastChild; - } - me.undoManger && me.undoManger.save(); - first = li.firstChild; - if (domUtils.isBlockElm(first)) { - if (domUtils.isEmptyNode(first)) { - // range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true); - pre.appendChild(first); - range.setStart(first, 0).setCursor(false, true); - //first不是唯一的节点 - while (li.firstChild) { - pre.appendChild(li.firstChild); - } - } else { - span = me.document.createElement("span"); - range.insertNode(span); - //判断pre是否是空的节点,如果是


    类型的空节点,干掉p标签防止它占位 - if (domUtils.isEmptyBlock(pre)) { - pre.innerHTML = ""; - } - domUtils.moveChild(li, pre); - range.setStartBefore(span).collapse(true).select(true); - - domUtils.remove(span); - } - } else { - if (domUtils.isEmptyNode(li)) { - var p = me.document.createElement("p"); - pre.appendChild(p); - range.setStart(p, 0).setCursor(); - // range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true); - } else { - range - .setEnd(pre, pre.childNodes.length) - .collapse() - .select(true); - while (li.firstChild) { - pre.appendChild(li.firstChild); - } - } - } - domUtils.remove(li); - me.fireEvent("contentchange"); - me.fireEvent("saveScene"); - domUtils.preventDefault(evt); - return; - } - //trace:980 - - if (li && !li.previousSibling) { - var parentList = li.parentNode; - var bk = range.createBookmark(); - if (domUtils.isTagNode(parentList.parentNode, "ol ul")) { - parentList.parentNode.insertBefore(li, parentList); - if (domUtils.isEmptyNode(parentList)) { - domUtils.remove(parentList); - } - } else { - while (li.firstChild) { - parentList.parentNode.insertBefore(li.firstChild, parentList); - } - - domUtils.remove(li); - if (domUtils.isEmptyNode(parentList)) { - domUtils.remove(parentList); - } - } - range.moveToBookmark(bk).setCursor(false, true); - me.fireEvent("contentchange"); - me.fireEvent("saveScene"); - domUtils.preventDefault(evt); - return; - } - } - } - } - }); - - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - if (keyCode == 8) { - var rng = me.selection.getRange(), - list; - if ( - (list = domUtils.findParentByTagName( - rng.startContainer, - ["ol", "ul"], - true - )) - ) { - adjustList( - list, - list.tagName.toLowerCase(), - getStyle(list) || domUtils.getComputedStyle(list, "list-style-type"), - true - ); - } - } - }); - //处理tab键 - me.addListener("tabkeydown", function() { - var range = me.selection.getRange(); - - //控制级数 - function checkLevel(li) { - if (me.options.maxListLevel != -1) { - var level = li.parentNode, - levelNum = 0; - while (/[ou]l/i.test(level.tagName)) { - levelNum++; - level = level.parentNode; - } - if (levelNum >= me.options.maxListLevel) { - return true; - } - } - } - //只以开始为准 - //todo 后续改进 - var li = domUtils.findParentByTagName(range.startContainer, "li", true); - if (li) { - var bk; - if (range.collapsed) { - if (checkLevel(li)) return true; - var parentLi = li.parentNode, - list = me.document.createElement(parentLi.tagName), - index = utils.indexOf( - listStyle[list.tagName], - getStyle(parentLi) || - domUtils.getComputedStyle(parentLi, "list-style-type") - ); - index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1; - var currentStyle = listStyle[list.tagName][index]; - setListStyle(list, currentStyle); - if (domUtils.isStartInblock(range)) { - me.fireEvent("saveScene"); - bk = range.createBookmark(); - parentLi.insertBefore(list, li); - list.appendChild(li); - adjustList(list, list.tagName.toLowerCase(), currentStyle); - me.fireEvent("contentchange"); - range.moveToBookmark(bk).select(true); - return true; - } - } else { - me.fireEvent("saveScene"); - bk = range.createBookmark(); - for ( - var i = 0, closeList, parents = domUtils.findParents(li), ci; - (ci = parents[i++]); - - ) { - if (domUtils.isTagNode(ci, "ol ul")) { - closeList = ci; - break; - } - } - var current = li; - if (bk.end) { - while ( - current && - !( - domUtils.getPosition(current, bk.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - if (checkLevel(current)) { - current = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return node !== closeList; - }); - continue; - } - var parentLi = current.parentNode, - list = me.document.createElement(parentLi.tagName), - index = utils.indexOf( - listStyle[list.tagName], - getStyle(parentLi) || - domUtils.getComputedStyle(parentLi, "list-style-type") - ); - var currentIndex = index + 1 == listStyle[list.tagName].length - ? 0 - : index + 1; - var currentStyle = listStyle[list.tagName][currentIndex]; - setListStyle(list, currentStyle); - parentLi.insertBefore(list, current); - while ( - current && - !( - domUtils.getPosition(current, bk.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - li = current.nextSibling; - list.appendChild(current); - if (!li || domUtils.isTagNode(li, "ol ul")) { - if (li) { - while ((li = li.firstChild)) { - if (li.tagName == "LI") { - break; - } - } - } else { - li = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return node !== closeList; - }); - } - break; - } - current = li; - } - adjustList(list, list.tagName.toLowerCase(), currentStyle); - current = li; - } - } - me.fireEvent("contentchange"); - range.moveToBookmark(bk).select(); - return true; - } - } - }); - function getLi(start) { - while (start && !domUtils.isBody(start)) { - if (start.nodeName == "TABLE") { - return null; - } - if (start.nodeName == "LI") { - return start; - } - start = start.parentNode; - } - } - - /** - * 有序列表,与“insertunorderedlist”命令互斥 - * @command insertorderedlist - * @method execCommand - * @param { String } command 命令字符串 - * @param { String } style 插入的有序列表类型,值为:decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2 - * @example - * ```javascript - * editor.execCommand( 'insertorderedlist','decimal'); - * ``` - */ - /** - * 查询当前选区内容是否有序列表 - * @command insertorderedlist - * @method queryCommandState - * @param { String } cmd 命令字符串 - * @return { int } 如果当前选区是有序列表返回1,否则返回0 - * @example - * ```javascript - * editor.queryCommandState( 'insertorderedlist' ); - * ``` - */ - /** - * 查询当前选区内容是否有序列表 - * @command insertorderedlist - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @return { String } 返回当前有序列表的类型,值为null或decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2 - * @example - * ```javascript - * editor.queryCommandValue( 'insertorderedlist' ); - * ``` - */ - - /** - * 无序列表,与“insertorderedlist”命令互斥 - * @command insertunorderedlist - * @method execCommand - * @param { String } command 命令字符串 - * @param { String } style 插入的无序列表类型,值为:circle,disc,square,dash,dot - * @example - * ```javascript - * editor.execCommand( 'insertunorderedlist','circle'); - * ``` - */ - /** - * 查询当前是否有word文档粘贴进来的图片 - * @command insertunorderedlist - * @method insertunorderedlist - * @param { String } command 命令字符串 - * @return { int } 如果当前选区是无序列表返回1,否则返回0 - * @example - * ```javascript - * editor.queryCommandState( 'insertunorderedlist' ); - * ``` - */ - /** - * 查询当前选区内容是否有序列表 - * @command insertunorderedlist - * @method queryCommandValue - * @param { String } command 命令字符串 - * @return { String } 返回当前无序列表的类型,值为null或circle,disc,square,dash,dot - * @example - * ```javascript - * editor.queryCommandValue( 'insertunorderedlist' ); - * ``` - */ - - me.commands["insertorderedlist"] = me.commands["insertunorderedlist"] = { - execCommand: function(command, style) { - if (!style) { - style = command.toLowerCase() == "insertorderedlist" - ? "decimal" - : "disc"; - } - var me = this, - range = this.selection.getRange(), - filterFn = function(node) { - return node.nodeType == 1 - ? node.tagName.toLowerCase() != "br" - : !domUtils.isWhitespace(node); - }, - tag = command.toLowerCase() == "insertorderedlist" ? "ol" : "ul", - frag = me.document.createDocumentFragment(); - //去掉是因为会出现选到末尾,导致adjustmentBoundary缩到ol/ul的位置 - //range.shrinkBoundary();//.adjustmentBoundary(); - range.adjustmentBoundary().shrinkBoundary(); - var bko = range.createBookmark(true), - start = getLi(me.document.getElementById(bko.start)), - modifyStart = 0, - end = getLi(me.document.getElementById(bko.end)), - modifyEnd = 0, - startParent, - endParent, - list, - tmp; - - if (start || end) { - start && (startParent = start.parentNode); - if (!bko.end) { - end = start; - } - end && (endParent = end.parentNode); - - if (startParent === endParent) { - while (start !== end) { - tmp = start; - start = start.nextSibling; - if (!domUtils.isBlockElm(tmp.firstChild)) { - var p = me.document.createElement("p"); - while (tmp.firstChild) { - p.appendChild(tmp.firstChild); - } - tmp.appendChild(p); - } - frag.appendChild(tmp); - } - tmp = me.document.createElement("span"); - startParent.insertBefore(tmp, end); - if (!domUtils.isBlockElm(end.firstChild)) { - p = me.document.createElement("p"); - while (end.firstChild) { - p.appendChild(end.firstChild); - } - end.appendChild(p); - } - frag.appendChild(end); - domUtils.breakParent(tmp, startParent); - if (domUtils.isEmptyNode(tmp.previousSibling)) { - domUtils.remove(tmp.previousSibling); - } - if (domUtils.isEmptyNode(tmp.nextSibling)) { - domUtils.remove(tmp.nextSibling); - } - var nodeStyle = - getStyle(startParent) || - domUtils.getComputedStyle(startParent, "list-style-type") || - (command.toLowerCase() == "insertorderedlist" ? "decimal" : "disc"); - if (startParent.tagName.toLowerCase() == tag && nodeStyle == style) { - for ( - var i = 0, ci, tmpFrag = me.document.createDocumentFragment(); - (ci = frag.firstChild); - - ) { - if (domUtils.isTagNode(ci, "ol ul")) { - // 删除时,子列表不处理 - // utils.each(domUtils.getElementsByTagName(ci,'li'),function(li){ - // while(li.firstChild){ - // tmpFrag.appendChild(li.firstChild); - // } - // - // }); - tmpFrag.appendChild(ci); - } else { - while (ci.firstChild) { - tmpFrag.appendChild(ci.firstChild); - domUtils.remove(ci); - } - } - } - tmp.parentNode.insertBefore(tmpFrag, tmp); - } else { - list = me.document.createElement(tag); - setListStyle(list, style); - list.appendChild(frag); - tmp.parentNode.insertBefore(list, tmp); - } - - domUtils.remove(tmp); - list && adjustList(list, tag, style); - range.moveToBookmark(bko).select(); - return; - } - //开始 - if (start) { - while (start) { - tmp = start.nextSibling; - if (domUtils.isTagNode(start, "ol ul")) { - frag.appendChild(start); - } else { - var tmpfrag = me.document.createDocumentFragment(), - hasBlock = 0; - while (start.firstChild) { - if (domUtils.isBlockElm(start.firstChild)) { - hasBlock = 1; - } - tmpfrag.appendChild(start.firstChild); - } - if (!hasBlock) { - var tmpP = me.document.createElement("p"); - tmpP.appendChild(tmpfrag); - frag.appendChild(tmpP); - } else { - frag.appendChild(tmpfrag); - } - domUtils.remove(start); - } - - start = tmp; - } - startParent.parentNode.insertBefore(frag, startParent.nextSibling); - if (domUtils.isEmptyNode(startParent)) { - range.setStartBefore(startParent); - domUtils.remove(startParent); - } else { - range.setStartAfter(startParent); - } - modifyStart = 1; - } - - if (end && domUtils.inDoc(endParent, me.document)) { - //结束 - start = endParent.firstChild; - while (start && start !== end) { - tmp = start.nextSibling; - if (domUtils.isTagNode(start, "ol ul")) { - frag.appendChild(start); - } else { - tmpfrag = me.document.createDocumentFragment(); - hasBlock = 0; - while (start.firstChild) { - if (domUtils.isBlockElm(start.firstChild)) { - hasBlock = 1; - } - tmpfrag.appendChild(start.firstChild); - } - if (!hasBlock) { - tmpP = me.document.createElement("p"); - tmpP.appendChild(tmpfrag); - frag.appendChild(tmpP); - } else { - frag.appendChild(tmpfrag); - } - domUtils.remove(start); - } - start = tmp; - } - var tmpDiv = domUtils.createElement(me.document, "div", { - tmpDiv: 1 - }); - domUtils.moveChild(end, tmpDiv); - - frag.appendChild(tmpDiv); - domUtils.remove(end); - endParent.parentNode.insertBefore(frag, endParent); - range.setEndBefore(endParent); - if (domUtils.isEmptyNode(endParent)) { - domUtils.remove(endParent); - } - - modifyEnd = 1; - } - } - - if (!modifyStart) { - range.setStartBefore(me.document.getElementById(bko.start)); - } - if (bko.end && !modifyEnd) { - range.setEndAfter(me.document.getElementById(bko.end)); - } - range.enlarge(true, function(node) { - return notExchange[node.tagName]; - }); - - frag = me.document.createDocumentFragment(); - - var bk = range.createBookmark(), - current = domUtils.getNextDomNode(bk.start, false, filterFn), - tmpRange = range.cloneRange(), - tmpNode, - block = domUtils.isBlockElm; - - while ( - current && - current !== bk.end && - domUtils.getPosition(current, bk.end) & domUtils.POSITION_PRECEDING - ) { - if (current.nodeType == 3 || dtd.li[current.tagName]) { - if (current.nodeType == 1 && dtd.$list[current.tagName]) { - while (current.firstChild) { - frag.appendChild(current.firstChild); - } - tmpNode = domUtils.getNextDomNode(current, false, filterFn); - domUtils.remove(current); - current = tmpNode; - continue; - } - tmpNode = current; - tmpRange.setStartBefore(current); - - while ( - current && - current !== bk.end && - (!block(current) || domUtils.isBookmarkNode(current)) - ) { - tmpNode = current; - current = domUtils.getNextDomNode(current, false, null, function( - node - ) { - return !notExchange[node.tagName]; - }); - } - - if (current && block(current)) { - tmp = domUtils.getNextDomNode(tmpNode, false, filterFn); - if (tmp && domUtils.isBookmarkNode(tmp)) { - current = domUtils.getNextDomNode(tmp, false, filterFn); - tmpNode = tmp; - } - } - tmpRange.setEndAfter(tmpNode); - - current = domUtils.getNextDomNode(tmpNode, false, filterFn); - - var li = range.document.createElement("li"); - - li.appendChild(tmpRange.extractContents()); - if (domUtils.isEmptyNode(li)) { - var tmpNode = range.document.createElement("p"); - while (li.firstChild) { - tmpNode.appendChild(li.firstChild); - } - li.appendChild(tmpNode); - } - frag.appendChild(li); - } else { - current = domUtils.getNextDomNode(current, true, filterFn); - } - } - range.moveToBookmark(bk).collapse(true); - list = me.document.createElement(tag); - setListStyle(list, style); - list.appendChild(frag); - range.insertNode(list); - //当前list上下看能否合并 - adjustList(list, tag, style); - //去掉冗余的tmpDiv - for ( - var i = 0, ci, tmpDivs = domUtils.getElementsByTagName(list, "div"); - (ci = tmpDivs[i++]); - - ) { - if (ci.getAttribute("tmpDiv")) { - domUtils.remove(ci, true); - } - } - range.moveToBookmark(bko).select(); - }, - queryCommandState: function(command) { - var tag = command.toLowerCase() == "insertorderedlist" ? "ol" : "ul"; - var path = this.selection.getStartElementPath(); - for (var i = 0, ci; (ci = path[i++]); ) { - if (ci.nodeName == "TABLE") { - return 0; - } - if (tag == ci.nodeName.toLowerCase()) { - return 1; - } - } - return 0; - }, - queryCommandValue: function(command) { - var tag = command.toLowerCase() == "insertorderedlist" ? "ol" : "ul"; - var path = this.selection.getStartElementPath(), - node; - for (var i = 0, ci; (ci = path[i++]); ) { - if (ci.nodeName == "TABLE") { - node = null; - break; - } - if (tag == ci.nodeName.toLowerCase()) { - node = ci; - break; - } - } - return node - ? getStyle(node) || domUtils.getComputedStyle(node, "list-style-type") - : null; - } - }; - }; - - - // plugins/source.js - /** - * 源码编辑插件 - * @file - * @since 1.2.6.1 - */ - - (function() { - var sourceEditors = { - textarea: function(editor, holder) { - var textarea = holder.ownerDocument.createElement("textarea"); - textarea.style.cssText = - "position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;"; - // todo: IE下只有onresize属性可用... 很纠结 - if (browser.ie && browser.version < 8) { - textarea.style.width = holder.offsetWidth + "px"; - textarea.style.height = holder.offsetHeight + "px"; - holder.onresize = function() { - textarea.style.width = holder.offsetWidth + "px"; - textarea.style.height = holder.offsetHeight + "px"; - }; - } - holder.appendChild(textarea); - return { - setContent: function(content) { - textarea.value = content; - }, - getContent: function() { - return textarea.value; - }, - select: function() { - var range; - if (browser.ie) { - range = textarea.createTextRange(); - range.collapse(true); - range.select(); - } else { - //todo: chrome下无法设置焦点 - textarea.setSelectionRange(0, 0); - textarea.focus(); - } - }, - dispose: function() { - holder.removeChild(textarea); - // todo - holder.onresize = null; - textarea = null; - holder = null; - }, - focus: function (){ - textarea.focus(); - }, - blur: function (){ - textarea.blur(); - } - }; - }, - codemirror: function(editor, holder) { - var codeEditor = window.CodeMirror(holder, { - mode: "text/html", - tabMode: "indent", - lineNumbers: true, - lineWrapping: true - }); - var dom = codeEditor.getWrapperElement(); - dom.style.cssText = - 'position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,"Courier new",monospace;font-size:13px;'; - codeEditor.getScrollerElement().style.cssText = - "position:absolute;left:0;top:0;width:100%;height:100%;"; - codeEditor.refresh(); - return { - getCodeMirror: function() { - return codeEditor; - }, - setContent: function(content) { - codeEditor.setValue(content); - }, - getContent: function() { - return codeEditor.getValue(); - }, - select: function() { - codeEditor.focus(); - }, - dispose: function() { - holder.removeChild(dom); - dom = null; - codeEditor = null; - }, - focus: function (){ - codeEditor.focus(); - }, - blur: function (){ - // codeEditor.blur(); - // since codemirror not support blur() - codeEditor.setOption('readOnly', true); - codeEditor.setOption('readOnly', false); - } - }; - } - }; - - UE.plugins["source"] = function() { - var me = this; - var opt = this.options; - var sourceMode = false; - var sourceEditor; - var orgSetContent; - var orgFocus; - var orgBlur; - opt.sourceEditor = browser.ie - ? "textarea" - : opt.sourceEditor || "codemirror"; - - me.setOpt({ - sourceEditorFirst: false - }); - function createSourceEditor(holder) { - return sourceEditors[ - opt.sourceEditor == "codemirror" && window.CodeMirror - ? "codemirror" - : "textarea" - ](me, holder); - } - - var bakCssText; - //解决在源码模式下getContent不能得到最新的内容问题 - var oldGetContent, bakAddress; - - /** - * 切换源码模式和编辑模式 - * @command source - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'source'); - * ``` - */ - - /** - * 查询当前编辑区域的状态是源码模式还是可视化模式 - * @command source - * @method queryCommandState - * @param { String } cmd 命令字符串 - * @return { int } 如果当前是源码编辑模式,返回1,否则返回0 - * @example - * ```javascript - * editor.queryCommandState( 'source' ); - * ``` - */ - - me.commands["source"] = { - execCommand: function() { - sourceMode = !sourceMode; - if (sourceMode) { - bakAddress = me.selection.getRange().createAddress(false, true); - me.undoManger && me.undoManger.save(true); - if (browser.gecko) { - me.body.contentEditable = false; - } - - bakCssText = me.iframe.style.cssText; - me.iframe.style.cssText += - "position:absolute;left:-32768px;top:-32768px;"; - - me.fireEvent("beforegetcontent"); - var root = UE.htmlparser(me.body.innerHTML); - me.filterOutputRule(root); - root.traversal(function(node) { - if (node.type == "element") { - switch (node.tagName) { - case "td": - case "th": - case "caption": - if (node.children && node.children.length == 1) { - if (node.firstChild().tagName == "br") { - node.removeChild(node.firstChild()); - } - } - break; - case "pre": - node.innerText(node.innerText().replace(/ /g, " ")); - } - } - }); - - me.fireEvent("aftergetcontent"); - - var content = root.toHtml(true); - - sourceEditor = createSourceEditor(me.iframe.parentNode); - - sourceEditor.setContent(content); - - orgSetContent = me.setContent; - - me.setContent = function(html) { - //这里暂时不触发事件,防止报错 - var root = UE.htmlparser(html); - me.filterInputRule(root); - html = root.toHtml(); - sourceEditor.setContent(html); - }; - - setTimeout(function() { - sourceEditor.select(); - me.addListener("fullscreenchanged", function() { - try { - sourceEditor.getCodeMirror().refresh(); - } catch (e) {} - }); - }); - - //重置getContent,源码模式下取值也能是最新的数据 - oldGetContent = me.getContent; - me.getContent = function() { - return ( - sourceEditor.getContent() || - "

    " + (browser.ie ? "" : "
    ") + "

    " - ); - }; - - orgFocus = me.focus; - orgBlur = me.blur; - - me.focus = function(){ - sourceEditor.focus(); - }; - - me.blur = function(){ - orgBlur.call(me); - sourceEditor.blur(); - }; - } else { - me.iframe.style.cssText = bakCssText; - var cont = - sourceEditor.getContent() || - "

    " + (browser.ie ? "" : "
    ") + "

    "; - //处理掉block节点前后的空格,有可能会误命中,暂时不考虑 - cont = cont.replace( - new RegExp("[\\r\\t\\n ]*]*)>", "g"), - function(a, b) { - if (b && !dtd.$inlineWithA[b.toLowerCase()]) { - return a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g, ""); - } - return a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g, ""); - } - ); - - me.setContent = orgSetContent; - - me.setContent(cont); - sourceEditor.dispose(); - sourceEditor = null; - //还原getContent方法 - me.getContent = oldGetContent; - - me.focus = orgFocus; - me.blur = orgBlur; - - var first = me.body.firstChild; - //trace:1106 都删除空了,下边会报错,所以补充一个p占位 - if (!first) { - me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; - first = me.body.firstChild; - } - - //要在ifm为显示时ff才能取到selection,否则报错 - //这里不能比较位置了 - me.undoManger && me.undoManger.save(true); - - if (browser.gecko) { - var input = document.createElement("input"); - input.style.cssText = "position:absolute;left:0;top:-32768px"; - - document.body.appendChild(input); - - me.body.contentEditable = false; - setTimeout(function() { - domUtils.setViewportOffset(input, { left: -32768, top: 0 }); - input.focus(); - setTimeout(function() { - me.body.contentEditable = true; - me.selection.getRange().moveToAddress(bakAddress).select(true); - domUtils.remove(input); - }); - }); - } else { - //ie下有可能报错,比如在代码顶头的情况 - try { - me.selection.getRange().moveToAddress(bakAddress).select(true); - } catch (e) {} - } - } - this.fireEvent("sourcemodechanged", sourceMode); - }, - queryCommandState: function() { - return sourceMode | 0; - }, - notNeedUndo: 1 - }; - var oldQueryCommandState = me.queryCommandState; - - me.queryCommandState = function(cmdName) { - cmdName = cmdName.toLowerCase(); - if (sourceMode) { - //源码模式下可以开启的命令 - return cmdName in - { - source: 1, - fullscreen: 1 - } - ? 1 - : -1; - } - return oldQueryCommandState.apply(this, arguments); - }; - - if (opt.sourceEditor == "codemirror") { - me.addListener("ready", function() { - utils.loadFile( - document, - { - src: - opt.codeMirrorJsUrl || - opt.UEDITOR_HOME_URL + "third-party/codemirror/codemirror.js", - tag: "script", - type: "text/javascript", - defer: "defer" - }, - function() { - if (opt.sourceEditorFirst) { - setTimeout(function() { - me.execCommand("source"); - }, 0); - } - } - ); - utils.loadFile(document, { - tag: "link", - rel: "stylesheet", - type: "text/css", - href: - opt.codeMirrorCssUrl || - opt.UEDITOR_HOME_URL + "third-party/codemirror/codemirror.css" - }); - }); - } - }; - })(); - - - // plugins/enterkey.js - ///import core - ///import plugins/undo.js - ///commands 设置回车标签p或br - ///commandsName EnterKey - ///commandsTitle 设置回车标签p或br - /** - * @description 处理回车 - * @author zhanyi - */ - UE.plugins["enterkey"] = function() { - var hTag, - me = this, - tag = me.options.enterTag; - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - if (keyCode == 13) { - var range = me.selection.getRange(), - start = range.startContainer, - doSave; - - //修正在h1-h6里边回车后不能嵌套p的问题 - if (!browser.ie) { - if (/h\d/i.test(hTag)) { - if (browser.gecko) { - var h = domUtils.findParentByTagName( - start, - [ - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "blockquote", - "caption", - "table" - ], - true - ); - if (!h) { - me.document.execCommand("formatBlock", false, "

    "); - doSave = 1; - } - } else { - //chrome remove div - if (start.nodeType == 1) { - var tmp = me.document.createTextNode(""), - div; - range.insertNode(tmp); - div = domUtils.findParentByTagName(tmp, "div", true); - if (div) { - var p = me.document.createElement("p"); - while (div.firstChild) { - p.appendChild(div.firstChild); - } - div.parentNode.insertBefore(p, div); - domUtils.remove(div); - range.setStartBefore(tmp).setCursor(); - doSave = 1; - } - domUtils.remove(tmp); - } - } - - if (me.undoManger && doSave) { - me.undoManger.save(); - } - } - //没有站位符,会出现多行的问题 - browser.opera && range.select(); - } else { - me.fireEvent("saveScene", true, true); - } - } - }); - - me.addListener("keydown", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - if (keyCode == 13) { - //回车 - if (me.fireEvent("beforeenterkeydown")) { - domUtils.preventDefault(evt); - return; - } - me.fireEvent("saveScene", true, true); - hTag = ""; - - var range = me.selection.getRange(); - - if (!range.collapsed) { - //跨td不能删 - var start = range.startContainer, - end = range.endContainer, - startTd = domUtils.findParentByTagName(start, "td", true), - endTd = domUtils.findParentByTagName(end, "td", true); - if ( - (startTd && endTd && startTd !== endTd) || - (!startTd && endTd) || - (startTd && !endTd) - ) { - evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); - return; - } - } - if (tag == "p") { - if (!browser.ie) { - start = domUtils.findParentByTagName( - range.startContainer, - [ - "ol", - "ul", - "p", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "blockquote", - "caption" - ], - true - ); - - //opera下执行formatblock会在table的场景下有问题,回车在opera原生支持很好,所以暂时在opera去掉调用这个原生的command - //trace:2431 - if (!start && !browser.opera) { - me.document.execCommand("formatBlock", false, "

    "); - - if (browser.gecko) { - range = me.selection.getRange(); - start = domUtils.findParentByTagName( - range.startContainer, - "p", - true - ); - start && domUtils.removeDirtyAttr(start); - } - } else { - hTag = start.tagName; - start.tagName.toLowerCase() == "p" && - browser.gecko && - domUtils.removeDirtyAttr(start); - } - } - } else { - evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); - - if (!range.collapsed) { - range.deleteContents(); - start = range.startContainer; - if ( - start.nodeType == 1 && - (start = start.childNodes[range.startOffset]) - ) { - while (start.nodeType == 1) { - if (dtd.$empty[start.tagName]) { - range.setStartBefore(start).setCursor(); - if (me.undoManger) { - me.undoManger.save(); - } - return false; - } - if (!start.firstChild) { - var br = range.document.createElement("br"); - start.appendChild(br); - range.setStart(start, 0).setCursor(); - if (me.undoManger) { - me.undoManger.save(); - } - return false; - } - start = start.firstChild; - } - if (start === range.startContainer.childNodes[range.startOffset]) { - br = range.document.createElement("br"); - range.insertNode(br).setCursor(); - } else { - range.setStart(start, 0).setCursor(); - } - } else { - br = range.document.createElement("br"); - range.insertNode(br).setStartAfter(br).setCursor(); - } - } else { - br = range.document.createElement("br"); - range.insertNode(br); - var parent = br.parentNode; - if (parent.lastChild === br) { - br.parentNode.insertBefore(br.cloneNode(true), br); - range.setStartBefore(br); - } else { - range.setStartAfter(br); - } - range.setCursor(); - } - } - } - }); - }; - - - // plugins/keystrokes.js - /* 处理特殊键的兼容性问题 */ - UE.plugins["keystrokes"] = function() { - var me = this; - var collapsed = true; - me.addListener("keydown", function(type, evt) { - var keyCode = evt.keyCode || evt.which, - rng = me.selection.getRange(); - - //处理全选的情况 - if ( - !rng.collapsed && - !(evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey) && - ((keyCode >= 65 && keyCode <= 90) || - (keyCode >= 48 && keyCode <= 57) || - (keyCode >= 96 && keyCode <= 111) || - { - 13: 1, - 8: 1, - 46: 1 - }[keyCode]) - ) { - var tmpNode = rng.startContainer; - if (domUtils.isFillChar(tmpNode)) { - rng.setStartBefore(tmpNode); - } - tmpNode = rng.endContainer; - if (domUtils.isFillChar(tmpNode)) { - rng.setEndAfter(tmpNode); - } - rng.txtToElmBoundary(); - //结束边界可能放到了br的前边,要把br包含进来 - // x[xxx]
    - if (rng.endContainer && rng.endContainer.nodeType == 1) { - tmpNode = rng.endContainer.childNodes[rng.endOffset]; - if (tmpNode && domUtils.isBr(tmpNode)) { - rng.setEndAfter(tmpNode); - } - } - if (rng.startOffset == 0) { - tmpNode = rng.startContainer; - if (domUtils.isBoundaryNode(tmpNode, "firstChild")) { - tmpNode = rng.endContainer; - if ( - rng.endOffset == - (tmpNode.nodeType == 3 - ? tmpNode.nodeValue.length - : tmpNode.childNodes.length) && - domUtils.isBoundaryNode(tmpNode, "lastChild") - ) { - me.fireEvent("saveScene"); - me.body.innerHTML = "

    " + (browser.ie ? "" : "
    ") + "

    "; - rng.setStart(me.body.firstChild, 0).setCursor(false, true); - me._selectionChange(); - return; - } - } - } - } - - //处理backspace - if (keyCode == keymap.Backspace) { - rng = me.selection.getRange(); - collapsed = rng.collapsed; - if (me.fireEvent("delkeydown", evt)) { - return; - } - var start, end; - //避免按两次删除才能生效的问题 - if (rng.collapsed && rng.inFillChar()) { - start = rng.startContainer; - - if (domUtils.isFillChar(start)) { - rng.setStartBefore(start).shrinkBoundary(true).collapse(true); - domUtils.remove(start); - } else { - start.nodeValue = start.nodeValue.replace( - new RegExp("^" + domUtils.fillChar), - "" - ); - rng.startOffset--; - rng.collapse(true).select(true); - } - } - - //解决选中control元素不能删除的问题 - if ((start = rng.getClosedNode())) { - me.fireEvent("saveScene"); - rng.setStartBefore(start); - domUtils.remove(start); - rng.setCursor(); - me.fireEvent("saveScene"); - domUtils.preventDefault(evt); - return; - } - //阻止在table上的删除 - if (!browser.ie) { - start = domUtils.findParentByTagName(rng.startContainer, "table", true); - end = domUtils.findParentByTagName(rng.endContainer, "table", true); - if ((start && !end) || (!start && end) || start !== end) { - evt.preventDefault(); - return; - } - } - } - //处理tab键的逻辑 - if (keyCode == keymap.Tab) { - //不处理以下标签 - var excludeTagNameForTabKey = { - ol: 1, - ul: 1, - table: 1 - }; - //处理组件里的tab按下事件 - if (me.fireEvent("tabkeydown", evt)) { - domUtils.preventDefault(evt); - return; - } - var range = me.selection.getRange(); - me.fireEvent("saveScene"); - for ( - var i = 0, - txt = "", - tabSize = me.options.tabSize || 4, - tabNode = me.options.tabNode || " "; - i < tabSize; - i++ - ) { - txt += tabNode; - } - var span = me.document.createElement("span"); - span.innerHTML = txt + domUtils.fillChar; - if (range.collapsed) { - range.insertNode(span.cloneNode(true).firstChild).setCursor(true); - } else { - var filterFn = function(node) { - return ( - domUtils.isBlockElm(node) && - !excludeTagNameForTabKey[node.tagName.toLowerCase()] - ); - }; - //普通的情况 - start = domUtils.findParent(range.startContainer, filterFn, true); - end = domUtils.findParent(range.endContainer, filterFn, true); - if (start && end && start === end) { - range.deleteContents(); - range.insertNode(span.cloneNode(true).firstChild).setCursor(true); - } else { - var bookmark = range.createBookmark(); - range.enlarge(true); - var bookmark2 = range.createBookmark(), - current = domUtils.getNextDomNode(bookmark2.start, false, filterFn); - while ( - current && - !( - domUtils.getPosition(current, bookmark2.end) & - domUtils.POSITION_FOLLOWING - ) - ) { - current.insertBefore( - span.cloneNode(true).firstChild, - current.firstChild - ); - current = domUtils.getNextDomNode(current, false, filterFn); - } - range.moveToBookmark(bookmark2).moveToBookmark(bookmark).select(); - } - } - domUtils.preventDefault(evt); - } - //trace:1634 - //ff的del键在容器空的时候,也会删除 - if (browser.gecko && keyCode == 46) { - range = me.selection.getRange(); - if (range.collapsed) { - start = range.startContainer; - if (domUtils.isEmptyBlock(start)) { - var parent = start.parentNode; - while ( - domUtils.getChildCount(parent) == 1 && - !domUtils.isBody(parent) - ) { - start = parent; - parent = parent.parentNode; - } - if (start === parent.lastChild) evt.preventDefault(); - return; - } - } - } - - /* 修复在编辑区域快捷键 (Mac:meta+alt+I; Win:ctrl+shift+I) 打不开 chrome 控制台的问题 */ - browser.chrome && - me.on("keydown", function(type, e) { - var keyCode = e.keyCode || e.which; - if ( - ((e.metaKey && e.altKey) || (e.ctrlKey && e.shiftKey)) && - keyCode == 73 - ) { - return true; - } - }); - }); - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which, - rng, - me = this; - if (keyCode == keymap.Backspace) { - if (me.fireEvent("delkeyup")) { - return; - } - rng = me.selection.getRange(); - if (rng.collapsed) { - var tmpNode, - autoClearTagName = ["h1", "h2", "h3", "h4", "h5", "h6"]; - if ( - (tmpNode = domUtils.findParentByTagName( - rng.startContainer, - autoClearTagName, - true - )) - ) { - if (domUtils.isEmptyBlock(tmpNode)) { - var pre = tmpNode.previousSibling; - if (pre && pre.nodeName != "TABLE") { - domUtils.remove(tmpNode); - rng.setStartAtLast(pre).setCursor(false, true); - return; - } else { - var next = tmpNode.nextSibling; - if (next && next.nodeName != "TABLE") { - domUtils.remove(tmpNode); - rng.setStartAtFirst(next).setCursor(false, true); - return; - } - } - } - } - //处理当删除到body时,要重新给p标签展位 - if (domUtils.isBody(rng.startContainer)) { - var tmpNode = domUtils.createElement(me.document, "p", { - innerHTML: browser.ie ? domUtils.fillChar : "
    " - }); - rng.insertNode(tmpNode).setStart(tmpNode, 0).setCursor(false, true); - } - } - - //chrome下如果删除了inline标签,浏览器会有记忆,在输入文字还是会套上刚才删除的标签,所以这里再选一次就不会了 - if ( - !collapsed && - (rng.startContainer.nodeType == 3 || - (rng.startContainer.nodeType == 1 && - domUtils.isEmptyBlock(rng.startContainer))) - ) { - if (browser.ie) { - var span = rng.document.createElement("span"); - rng.insertNode(span).setStartBefore(span).collapse(true); - rng.select(); - domUtils.remove(span); - } else { - rng.select(); - } - } - } - }); - }; - - - // plugins/fiximgclick.js - ///import core - ///commands 修复chrome下图片不能点击的问题,出现八个角可改变大小 - ///commandsName FixImgClick - ///commandsTitle 修复chrome下图片不能点击的问题,出现八个角可改变大小 - //修复chrome下图片不能点击的问题,出现八个角可改变大小 - - UE.plugins["fiximgclick"] = (function() { - var elementUpdated = false; - function Scale() { - this.editor = null; - this.resizer = null; - this.cover = null; - this.doc = document; - this.prePos = { x: 0, y: 0 }; - this.startPos = { x: 0, y: 0 }; - } - - (function() { - var rect = [ - //[left, top, width, height] - [0, 0, -1, -1], - [0, 0, 0, -1], - [0, 0, 1, -1], - [0, 0, -1, 0], - [0, 0, 1, 0], - [0, 0, -1, 1], - [0, 0, 0, 1], - [0, 0, 1, 1] - ]; - - Scale.prototype = { - init: function(editor) { - var me = this; - me.editor = editor; - me.startPos = this.prePos = { x: 0, y: 0 }; - me.dragId = -1; - - var hands = [], - cover = (me.cover = document.createElement("div")), - resizer = (me.resizer = document.createElement("div")); - - cover.id = me.editor.ui.id + "_imagescale_cover"; - cover.style.cssText = - "position:absolute;display:none;z-index:" + - me.editor.options.zIndex + - ";filter:alpha(opacity=0); opacity:0;background:#CCC;"; - domUtils.on(cover, "mousedown click", function() { - me.hide(); - }); - - for (i = 0; i < 8; i++) { - hands.push( - '' - ); - } - resizer.id = me.editor.ui.id + "_imagescale"; - resizer.className = "edui-editor-imagescale"; - resizer.innerHTML = hands.join(""); - resizer.style.cssText += - ";display:none;border:1px solid #3b77ff;z-index:" + - me.editor.options.zIndex + - ";"; - - me.editor.ui.getDom().appendChild(cover); - me.editor.ui.getDom().appendChild(resizer); - - me.initStyle(); - me.initEvents(); - }, - initStyle: function() { - utils.cssRule( - "imagescale", - ".edui-editor-imagescale{display:none;position:absolute;border:1px solid #38B2CE;cursor:hand;-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}" + - ".edui-editor-imagescale span{position:absolute;width:6px;height:6px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}" + - ".edui-editor-imagescale .edui-editor-imagescale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}" - ); - }, - initEvents: function() { - var me = this; - - me.startPos.x = me.startPos.y = 0; - me.isDraging = false; - }, - _eventHandler: function(e) { - var me = this; - switch (e.type) { - case "mousedown": - var hand = e.target || e.srcElement, - hand; - if ( - hand.className.indexOf("edui-editor-imagescale-hand") != -1 && - me.dragId == -1 - ) { - me.dragId = hand.className.slice(-1); - me.startPos.x = me.prePos.x = e.clientX; - me.startPos.y = me.prePos.y = e.clientY; - domUtils.on(me.doc, "mousemove", me.proxy(me._eventHandler, me)); - } - break; - case "mousemove": - if (me.dragId != -1) { - me.updateContainerStyle(me.dragId, { - x: e.clientX - me.prePos.x, - y: e.clientY - me.prePos.y - }); - me.prePos.x = e.clientX; - me.prePos.y = e.clientY; - elementUpdated = true; - me.updateTargetElement(); - } - break; - case "mouseup": - if (me.dragId != -1) { - me.updateContainerStyle(me.dragId, { - x: e.clientX - me.prePos.x, - y: e.clientY - me.prePos.y - }); - me.updateTargetElement(); - if (me.target.parentNode) me.attachTo(me.target); - me.dragId = -1; - } - domUtils.un(me.doc, "mousemove", me.proxy(me._eventHandler, me)); - //修复只是点击挪动点,但没有改变大小,不应该触发contentchange - if (elementUpdated) { - elementUpdated = false; - me.editor.fireEvent("contentchange"); - } - - break; - default: - break; - } - }, - updateTargetElement: function() { - var me = this; - domUtils.setStyles(me.target, { - width: me.resizer.style.width, - height: me.resizer.style.height - }); - me.target.width = parseInt(me.resizer.style.width); - me.target.height = parseInt(me.resizer.style.height); - me.attachTo(me.target); - }, - updateContainerStyle: function(dir, offset) { - var me = this, - dom = me.resizer, - tmp; - - if (rect[dir][0] != 0) { - tmp = parseInt(dom.style.left) + offset.x; - dom.style.left = me._validScaledProp("left", tmp) + "px"; - } - if (rect[dir][1] != 0) { - tmp = parseInt(dom.style.top) + offset.y; - dom.style.top = me._validScaledProp("top", tmp) + "px"; - } - if (rect[dir][2] != 0) { - tmp = dom.clientWidth + rect[dir][2] * offset.x; - dom.style.width = me._validScaledProp("width", tmp) + "px"; - } - if (rect[dir][3] != 0) { - tmp = dom.clientHeight + rect[dir][3] * offset.y; - dom.style.height = me._validScaledProp("height", tmp) + "px"; - } - }, - _validScaledProp: function(prop, value) { - var ele = this.resizer, - wrap = document; - - value = isNaN(value) ? 0 : value; - switch (prop) { - case "left": - return value < 0 - ? 0 - : value + ele.clientWidth > wrap.clientWidth - ? wrap.clientWidth - ele.clientWidth - : value; - case "top": - return value < 0 - ? 0 - : value + ele.clientHeight > wrap.clientHeight - ? wrap.clientHeight - ele.clientHeight - : value; - case "width": - return value <= 0 - ? 1 - : value + ele.offsetLeft > wrap.clientWidth - ? wrap.clientWidth - ele.offsetLeft - : value; - case "height": - return value <= 0 - ? 1 - : value + ele.offsetTop > wrap.clientHeight - ? wrap.clientHeight - ele.offsetTop - : value; - } - }, - hideCover: function() { - this.cover.style.display = "none"; - }, - showCover: function() { - var me = this, - editorPos = domUtils.getXY(me.editor.ui.getDom()), - iframePos = domUtils.getXY(me.editor.iframe); - - domUtils.setStyles(me.cover, { - width: me.editor.iframe.offsetWidth + "px", - height: me.editor.iframe.offsetHeight + "px", - top: iframePos.y - editorPos.y + "px", - left: iframePos.x - editorPos.x + "px", - position: "absolute", - display: "" - }); - }, - show: function(targetObj) { - var me = this; - me.resizer.style.display = "block"; - if (targetObj) me.attachTo(targetObj); - - domUtils.on(this.resizer, "mousedown", me.proxy(me._eventHandler, me)); - domUtils.on(me.doc, "mouseup", me.proxy(me._eventHandler, me)); - - me.showCover(); - me.editor.fireEvent("afterscaleshow", me); - me.editor.fireEvent("saveScene"); - }, - hide: function() { - var me = this; - me.hideCover(); - me.resizer.style.display = "none"; - - domUtils.un(me.resizer, "mousedown", me.proxy(me._eventHandler, me)); - domUtils.un(me.doc, "mouseup", me.proxy(me._eventHandler, me)); - me.editor.fireEvent("afterscalehide", me); - }, - proxy: function(fn, context) { - return function(e) { - return fn.apply(context || this, arguments); - }; - }, - attachTo: function(targetObj) { - var me = this, - target = (me.target = targetObj), - resizer = this.resizer, - imgPos = domUtils.getXY(target), - iframePos = domUtils.getXY(me.editor.iframe), - editorPos = domUtils.getXY(resizer.parentNode); - - domUtils.setStyles(resizer, { - width: target.width + "px", - height: target.height + "px", - left: - iframePos.x + - imgPos.x - - me.editor.document.body.scrollLeft - - editorPos.x - - parseInt(resizer.style.borderLeftWidth) + - "px", - top: - iframePos.y + - imgPos.y - - me.editor.document.body.scrollTop - - editorPos.y - - parseInt(resizer.style.borderTopWidth) + - "px" - }); - } - }; - })(); - - return function() { - var me = this, - imageScale; - - me.setOpt("imageScaleEnabled", true); - - if (!browser.ie && me.options.imageScaleEnabled) { - me.addListener("click", function(type, e) { - var range = me.selection.getRange(), - img = range.getClosedNode(); - - if (img && img.tagName == "IMG" && me.body.contentEditable != "false") { - if ( - img.className.indexOf("edui-faked-music") != -1 || - img.getAttribute("anchorname") || - domUtils.hasClass(img, "loadingclass") || - domUtils.hasClass(img, "loaderrorclass") - ) { - return; - } - - if (!imageScale) { - imageScale = new Scale(); - imageScale.init(me); - me.ui.getDom().appendChild(imageScale.resizer); - - var _keyDownHandler = function(e) { - imageScale.hide(); - if (imageScale.target) - me.selection.getRange().selectNode(imageScale.target).select(); - }, - _mouseDownHandler = function(e) { - var ele = e.target || e.srcElement; - if ( - ele && - (ele.className === undefined || - ele.className.indexOf("edui-editor-imagescale") == -1) - ) { - _keyDownHandler(e); - } - }, - timer; - - me.addListener("afterscaleshow", function(e) { - me.addListener("beforekeydown", _keyDownHandler); - me.addListener("beforemousedown", _mouseDownHandler); - domUtils.on(document, "keydown", _keyDownHandler); - domUtils.on(document, "mousedown", _mouseDownHandler); - me.selection.getNative().removeAllRanges(); - }); - me.addListener("afterscalehide", function(e) { - me.removeListener("beforekeydown", _keyDownHandler); - me.removeListener("beforemousedown", _mouseDownHandler); - domUtils.un(document, "keydown", _keyDownHandler); - domUtils.un(document, "mousedown", _mouseDownHandler); - var target = imageScale.target; - if (target.parentNode) { - me.selection.getRange().selectNode(target).select(); - } - }); - //TODO 有iframe的情况,mousedown不能往下传。。 - domUtils.on(imageScale.resizer, "mousedown", function(e) { - me.selection.getNative().removeAllRanges(); - var ele = e.target || e.srcElement; - if ( - ele && - ele.className.indexOf("edui-editor-imagescale-hand") == -1 - ) { - timer = setTimeout(function() { - imageScale.hide(); - if (imageScale.target) - me.selection.getRange().selectNode(ele).select(); - }, 200); - } - }); - domUtils.on(imageScale.resizer, "mouseup", function(e) { - var ele = e.target || e.srcElement; - if ( - ele && - ele.className.indexOf("edui-editor-imagescale-hand") == -1 - ) { - clearTimeout(timer); - } - }); - } - imageScale.show(img); - } else { - if (imageScale && imageScale.resizer.style.display != "none") - imageScale.hide(); - } - }); - } - - if (browser.webkit) { - me.addListener("click", function(type, e) { - if (e.target.tagName == "IMG" && me.body.contentEditable != "false") { - var range = new dom.Range(me.document); - range.selectNode(e.target).select(); - } - }); - } - }; - })(); - - - // plugins/autolink.js - ///import core - ///commands 为非ie浏览器自动添加a标签 - ///commandsName AutoLink - ///commandsTitle 自动增加链接 - /** - * @description 为非ie浏览器自动添加a标签 - * @author zhanyi - */ - - UE.plugin.register( - "autolink", - function() { - var cont = 0; - - return !browser.ie - ? { - bindEvents: { - reset: function() { - cont = 0; - }, - keydown: function(type, evt) { - var me = this; - var keyCode = evt.keyCode || evt.which; - - if (keyCode == 32 || keyCode == 13) { - var sel = me.selection.getNative(), - range = sel.getRangeAt(0).cloneRange(), - offset, - charCode; - - var start = range.startContainer; - while (start.nodeType == 1 && range.startOffset > 0) { - start = - range.startContainer.childNodes[range.startOffset - 1]; - if (!start) { - break; - } - range.setStart( - start, - start.nodeType == 1 - ? start.childNodes.length - : start.nodeValue.length - ); - range.collapse(true); - start = range.startContainer; - } - - do { - if (range.startOffset == 0) { - start = range.startContainer.previousSibling; - - while (start && start.nodeType == 1) { - start = start.lastChild; - } - if (!start || domUtils.isFillChar(start)) { - break; - } - offset = start.nodeValue.length; - } else { - start = range.startContainer; - offset = range.startOffset; - } - range.setStart(start, offset - 1); - charCode = range.toString().charCodeAt(0); - } while (charCode != 160 && charCode != 32); - - if ( - range - .toString() - .replace(new RegExp(domUtils.fillChar, "g"), "") - .match(/(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i) - ) { - while (range.toString().length) { - if ( - /^(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i.test( - range.toString() - ) - ) { - break; - } - try { - range.setStart( - range.startContainer, - range.startOffset + 1 - ); - } catch (e) { - //trace:2121 - var start = range.startContainer; - while (!(next = start.nextSibling)) { - if (domUtils.isBody(start)) { - return; - } - start = start.parentNode; - } - range.setStart(next, 0); - } - } - //range的开始边界已经在a标签里的不再处理 - if ( - domUtils.findParentByTagName( - range.startContainer, - "a", - true - ) - ) { - return; - } - var a = me.document.createElement("a"), - text = me.document.createTextNode(" "), - href; - - me.undoManger && me.undoManger.save(); - a.appendChild(range.extractContents()); - a.href = a.innerHTML = a.innerHTML.replace(/<[^>]+>/g, ""); - href = a - .getAttribute("href") - .replace(new RegExp(domUtils.fillChar, "g"), ""); - href = /^(?:https?:\/\/)/gi.test(href) - ? href - : "http://" + href; - a.setAttribute("_src", utils.html(href)); - a.href = utils.html(href); - - range.insertNode(a); - a.parentNode.insertBefore(text, a.nextSibling); - range.setStart(text, 0); - range.collapse(true); - sel.removeAllRanges(); - sel.addRange(range); - me.undoManger && me.undoManger.save(); - } - } - } - } - } - : {}; - }, - function() { - var keyCodes = { - 37: 1, - 38: 1, - 39: 1, - 40: 1, - 13: 1, - 32: 1 - }; - function checkIsCludeLink(node) { - if (node.nodeType == 3) { - return null; - } - if (node.nodeName == "A") { - return node; - } - var lastChild = node.lastChild; - - while (lastChild) { - if (lastChild.nodeName == "A") { - return lastChild; - } - if (lastChild.nodeType == 3) { - if (domUtils.isWhitespace(lastChild)) { - lastChild = lastChild.previousSibling; - continue; - } - return null; - } - lastChild = lastChild.lastChild; - } - } - browser.ie && - this.addListener("keyup", function(cmd, evt) { - var me = this, - keyCode = evt.keyCode; - if (keyCodes[keyCode]) { - var rng = me.selection.getRange(); - var start = rng.startContainer; - - if (keyCode == 13) { - while ( - start && - !domUtils.isBody(start) && - !domUtils.isBlockElm(start) - ) { - start = start.parentNode; - } - if (start && !domUtils.isBody(start) && start.nodeName == "P") { - var pre = start.previousSibling; - if (pre && pre.nodeType == 1) { - var pre = checkIsCludeLink(pre); - if (pre && !pre.getAttribute("_href")) { - domUtils.remove(pre, true); - } - } - } - } else if (keyCode == 32) { - if (start.nodeType == 3 && /^\s$/.test(start.nodeValue)) { - start = start.previousSibling; - if ( - start && - start.nodeName == "A" && - !start.getAttribute("_href") - ) { - domUtils.remove(start, true); - } - } - } else { - start = domUtils.findParentByTagName(start, "a", true); - if (start && !start.getAttribute("_href")) { - var bk = rng.createBookmark(); - - domUtils.remove(start, true); - rng.moveToBookmark(bk).select(true); - } - } - } - }); - } - ); - - - // plugins/autoheight.js - ///import core - ///commands 当输入内容超过编辑器高度时,编辑器自动增高 - ///commandsName AutoHeight,autoHeightEnabled - ///commandsTitle 自动增高 - /** - * @description 自动伸展 - * @author zhanyi - */ - UE.plugins["autoheight"] = function() { - var me = this; - //提供开关,就算加载也可以关闭 - me.autoHeightEnabled = me.options.autoHeightEnabled !== false; - if (!me.autoHeightEnabled) { - return; - } - - var bakOverflow, - lastHeight = 0, - options = me.options, - currentHeight, - timer; - - function adjustHeight() { - var me = this; - clearTimeout(timer); - if (isFullscreen) return; - if ( - !me.queryCommandState || - (me.queryCommandState && me.queryCommandState("source") != 1) - ) { - timer = setTimeout(function() { - var node = me.body.lastChild; - while (node && node.nodeType != 1) { - node = node.previousSibling; - } - if (node && node.nodeType == 1) { - node.style.clear = "both"; - currentHeight = Math.max( - domUtils.getXY(node).y + node.offsetHeight + 25, - Math.max(options.minFrameHeight, options.initialFrameHeight) - ); - if (currentHeight != lastHeight) { - if (currentHeight !== parseInt(me.iframe.parentNode.style.height)) { - me.iframe.parentNode.style.height = currentHeight + "px"; - } - me.body.style.height = currentHeight + "px"; - lastHeight = currentHeight; - } - domUtils.removeStyle(node, "clear"); - } - }, 50); - } - } - var isFullscreen; - me.addListener("fullscreenchanged", function(cmd, f) { - isFullscreen = f; - }); - me.addListener("destroy", function() { - domUtils.un(me.window, "scroll", fixedScrollTop); - me.removeListener( - "contentchange afterinserthtml keyup mouseup", - adjustHeight - ); - }); - me.enableAutoHeight = function() { - var me = this; - if (!me.autoHeightEnabled) { - return; - } - var doc = me.document; - me.autoHeightEnabled = true; - bakOverflow = doc.body.style.overflowY; - doc.body.style.overflowY = "hidden"; - me.addListener("contentchange afterinserthtml keyup mouseup", adjustHeight); - //ff不给事件算得不对 - - setTimeout(function() { - adjustHeight.call(me); - }, browser.gecko ? 100 : 0); - me.fireEvent("autoheightchanged", me.autoHeightEnabled); - }; - me.disableAutoHeight = function() { - me.body.style.overflowY = bakOverflow || ""; - - me.removeListener("contentchange", adjustHeight); - me.removeListener("keyup", adjustHeight); - me.removeListener("mouseup", adjustHeight); - me.autoHeightEnabled = false; - me.fireEvent("autoheightchanged", me.autoHeightEnabled); - }; - - me.on("setHeight", function() { - me.disableAutoHeight(); - }); - me.addListener("ready", function() { - me.enableAutoHeight(); - //trace:1764 - var timer; - domUtils.on( - browser.ie ? me.body : me.document, - browser.webkit ? "dragover" : "drop", - function() { - clearTimeout(timer); - timer = setTimeout(function() { - //trace:3681 - adjustHeight.call(me); - }, 100); - } - ); - //修复内容过多时,回到顶部,顶部内容被工具栏遮挡问题 - domUtils.on(me.window, "scroll", fixedScrollTop); - }); - - var lastScrollY; - - function fixedScrollTop() { - if (!me.window) return; - if (lastScrollY === null) { - lastScrollY = me.window.scrollY; - } else if (me.window.scrollY == 0 && lastScrollY != 0) { - me.window.scrollTo(0, 0); - lastScrollY = null; - } - } - }; - - - // plugins/autofloat.js - ///import core - ///commands 悬浮工具栏 - ///commandsName AutoFloat,autoFloatEnabled - ///commandsTitle 悬浮工具栏 - /** - * modified by chengchao01 - * 注意: 引入此功能后,在IE6下会将body的背景图片覆盖掉! - */ - UE.plugins["autofloat"] = function() { - var me = this, - lang = me.getLang(); - me.setOpt({ - topOffset: 0 - }); - var optsAutoFloatEnabled = me.options.autoFloatEnabled !== false, - topOffset = me.options.topOffset; - - //如果不固定toolbar的位置,则直接退出 - if (!optsAutoFloatEnabled) { - return; - } - var uiUtils = UE.ui.uiUtils, - LteIE6 = browser.ie && browser.version <= 6, - quirks = browser.quirks; - - function checkHasUI() { - if (!UE.ui) { - alert(lang.autofloatMsg); - return 0; - } - return 1; - } - function fixIE6FixedPos() { - var docStyle = document.body.style; - docStyle.backgroundImage = 'url("about:blank")'; - docStyle.backgroundAttachment = "fixed"; - } - var bakCssText, - placeHolder = document.createElement("div"), - toolbarBox, - orgTop, - getPosition, - flag = true; //ie7模式下需要偏移 - function setFloating() { - var toobarBoxPos = domUtils.getXY(toolbarBox), - origalFloat = domUtils.getComputedStyle(toolbarBox, "position"), - origalLeft = domUtils.getComputedStyle(toolbarBox, "left"); - toolbarBox.style.width = toolbarBox.offsetWidth + "px"; - toolbarBox.style.zIndex = me.options.zIndex * 1 + 1; - toolbarBox.parentNode.insertBefore(placeHolder, toolbarBox); - if (LteIE6 || (quirks && browser.ie)) { - if (toolbarBox.style.position != "absolute") { - toolbarBox.style.position = "absolute"; - } - toolbarBox.style.top = - (document.body.scrollTop || document.documentElement.scrollTop) - - orgTop + - topOffset + - "px"; - } else { - if (browser.ie7Compat && flag) { - flag = false; - toolbarBox.style.left = - domUtils.getXY(toolbarBox).x - - document.documentElement.getBoundingClientRect().left + - 2 + - "px"; - } - if (toolbarBox.style.position != "fixed") { - toolbarBox.style.position = "fixed"; - toolbarBox.style.top = topOffset + "px"; - (origalFloat == "absolute" || origalFloat == "relative") && - parseFloat(origalLeft) && - (toolbarBox.style.left = toobarBoxPos.x + "px"); - } - } - } - function unsetFloating() { - flag = true; - if (placeHolder.parentNode) { - placeHolder.parentNode.removeChild(placeHolder); - } - - toolbarBox.style.cssText = bakCssText; - } - - function updateFloating() { - var rect3 = getPosition(me.container); - var offset = me.options.toolbarTopOffset || 0; - if (rect3.top < 0 && rect3.bottom - toolbarBox.offsetHeight > offset) { - setFloating(); - } else { - unsetFloating(); - } - } - var defer_updateFloating = utils.defer( - function() { - updateFloating(); - }, - browser.ie ? 200 : 100, - true - ); - - me.addListener("destroy", function() { - domUtils.un(window, ["scroll", "resize"], updateFloating); - me.removeListener("keydown", defer_updateFloating); - }); - - me.addListener("ready", function() { - if (checkHasUI(me)) { - //加载了ui组件,但在new时,没有加载ui,导致编辑器实例上没有ui类,所以这里做判断 - if (!me.ui) { - return; - } - getPosition = uiUtils.getClientRect; - toolbarBox = me.ui.getDom("toolbarbox"); - orgTop = getPosition(toolbarBox).top; - bakCssText = toolbarBox.style.cssText; - placeHolder.style.height = toolbarBox.offsetHeight + "px"; - if (LteIE6) { - fixIE6FixedPos(); - } - domUtils.on(window, ["scroll", "resize"], updateFloating); - me.addListener("keydown", defer_updateFloating); - - me.addListener("beforefullscreenchange", function(t, enabled) { - if (enabled) { - unsetFloating(); - } - }); - me.addListener("fullscreenchanged", function(t, enabled) { - if (!enabled) { - updateFloating(); - } - }); - me.addListener("sourcemodechanged", function(t, enabled) { - setTimeout(function() { - updateFloating(); - }, 0); - }); - me.addListener("clearDoc", function() { - setTimeout(function() { - updateFloating(); - }, 0); - }); - } - }); - }; - - - // plugins/video.js - /** - * video插件, 为UEditor提供视频插入支持 - * @file - * @since 1.2.6.1 - */ - - UE.plugins["video"] = function() { - var me = this; - - /** - * 创建插入视频字符窜 - * @param url 视频地址 - * @param width 视频宽度 - * @param height 视频高度 - * @param align 视频对齐 - * @param toEmbed 是否以flash代替显示 - * @param addParagraph 是否需要添加P 标签 - */ - function creatInsertStr(url, width, height, id, align, classname, type) { - var str; - switch (type) { - case "image": - str = - "'; - break; - case "embed": - str = - ''; - break; - case "video": - var ext = url.substr(url.lastIndexOf(".") + 1); - if (ext == "ogv") ext = "ogg"; - str = - "' + - ''; - break; - } - return str; - } - - function switchImgAndVideo(root, img2video) { - utils.each( - root.getNodesByTagName(img2video ? "img" : "embed video"), - function(node) { - var className = node.getAttr("class"); - if (className && className.indexOf("edui-faked-video") != -1) { - var html = creatInsertStr( - img2video ? node.getAttr("_url") : node.getAttr("src"), - node.getAttr("width"), - node.getAttr("height"), - null, - node.getStyle("float") || "", - className, - img2video ? "embed" : "image" - ); - node.parentNode.replaceChild(UE.uNode.createElement(html), node); - } - if (className && className.indexOf("edui-upload-video") != -1) { - var html = creatInsertStr( - img2video ? node.getAttr("_url") : node.getAttr("src"), - node.getAttr("width"), - node.getAttr("height"), - null, - node.getStyle("float") || "", - className, - img2video ? "video" : "image" - ); - node.parentNode.replaceChild(UE.uNode.createElement(html), node); - } - } - ); - } - - me.addOutputRule(function(root) { - switchImgAndVideo(root, true); - }); - me.addInputRule(function(root) { - switchImgAndVideo(root); - }); - - /** - * 插入视频 - * @command insertvideo - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Object } videoAttr 键值对对象, 描述一个视频的所有属性 - * @example - * ```javascript - * - * var videoAttr = { - * //视频地址 - * url: 'http://www.youku.com/xxx', - * //视频宽高值, 单位px - * width: 200, - * height: 100 - * }; - * - * //editor 是编辑器实例 - * //向编辑器插入单个视频 - * editor.execCommand( 'insertvideo', videoAttr ); - * ``` - */ - - /** - * 插入视频 - * @command insertvideo - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Array } videoArr 需要插入的视频的数组, 其中的每一个元素都是一个键值对对象, 描述了一个视频的所有属性 - * @example - * ```javascript - * - * var videoAttr1 = { - * //视频地址 - * url: 'http://www.youku.com/xxx', - * //视频宽高值, 单位px - * width: 200, - * height: 100 - * }, - * videoAttr2 = { - * //视频地址 - * url: 'http://www.youku.com/xxx', - * //视频宽高值, 单位px - * width: 200, - * height: 100 - * } - * - * //editor 是编辑器实例 - * //该方法将会向编辑器内插入两个视频 - * editor.execCommand( 'insertvideo', [ videoAttr1, videoAttr2 ] ); - * ``` - */ - - /** - * 查询当前光标所在处是否是一个视频 - * @command insertvideo - * @method queryCommandState - * @param { String } cmd 需要查询的命令字符串 - * @return { int } 如果当前光标所在处的元素是一个视频对象, 则返回1,否则返回0 - * @example - * ```javascript - * - * //editor 是编辑器实例 - * editor.queryCommandState( 'insertvideo' ); - * ``` - */ - me.commands["insertvideo"] = { - execCommand: function(cmd, videoObjs, type) { - videoObjs = utils.isArray(videoObjs) ? videoObjs : [videoObjs]; - - if (me.fireEvent("beforeinsertvideo", videoObjs) === true) { - return; - } - - var html = [], - id = "tmpVedio", - cl; - for (var i = 0, vi, len = videoObjs.length; i < len; i++) { - vi = videoObjs[i]; - cl = type == "upload" - ? "edui-upload-video video-js vjs-default-skin" - : "edui-faked-video"; - html.push( - creatInsertStr( - vi.url, - vi.width || 420, - vi.height || 280, - id + i, - null, - cl, - "image" - ) - ); - } - me.execCommand("inserthtml", html.join(""), true); - var rng = this.selection.getRange(); - for (var i = 0, len = videoObjs.length; i < len; i++) { - var img = this.document.getElementById("tmpVedio" + i); - domUtils.removeAttributes(img, "id"); - rng.selectNode(img).select(); - me.execCommand("imagefloat", videoObjs[i].align); - } - - me.fireEvent("afterinsertvideo", videoObjs); - }, - queryCommandState: function() { - var img = me.selection.getRange().getClosedNode(), - flag = - img && - (img.className == "edui-faked-video" || - img.className.indexOf("edui-upload-video") != -1); - return flag ? 1 : 0; - } - }; - }; - - - // plugins/table.core.js - /** - * Created with JetBrains WebStorm. - * User: taoqili - * Date: 13-1-18 - * Time: 上午11:09 - * To change this template use File | Settings | File Templates. - */ - /** - * UE表格操作类 - * @param table - * @constructor - */ - (function() { - var UETable = (UE.UETable = function(table) { - this.table = table; - this.indexTable = []; - this.selectedTds = []; - this.cellsRange = {}; - this.update(table); - }); - - //===以下为静态工具方法=== - UETable.removeSelectedClass = function(cells) { - utils.each(cells, function(cell) { - domUtils.removeClasses(cell, "selectTdClass"); - }); - }; - UETable.addSelectedClass = function(cells) { - utils.each(cells, function(cell) { - domUtils.addClass(cell, "selectTdClass"); - }); - }; - UETable.isEmptyBlock = function(node) { - var reg = new RegExp(domUtils.fillChar, "g"); - if ( - node[browser.ie ? "innerText" : "textContent"] - .replace(/^\s*$/, "") - .replace(reg, "").length > 0 - ) { - return 0; - } - for (var i in dtd.$isNotEmpty) - if (dtd.$isNotEmpty.hasOwnProperty(i)) { - if (node.getElementsByTagName(i).length) { - return 0; - } - } - return 1; - }; - UETable.getWidth = function(cell) { - if (!cell) return 0; - return parseInt(domUtils.getComputedStyle(cell, "width"), 10); - }; - - /** - * 获取单元格或者单元格组的“对齐”状态。 如果当前的检测对象是一个单元格组, 只有在满足所有单元格的 水平和竖直 对齐属性都相同的 - * 条件时才会返回其状态值,否则将返回null; 如果当前只检测了一个单元格, 则直接返回当前单元格的对齐状态; - * @param table cell or table cells , 支持单个单元格dom对象 或者 单元格dom对象数组 - * @return { align: 'left' || 'right' || 'center', valign: 'top' || 'middle' || 'bottom' } 或者 null - */ - UETable.getTableCellAlignState = function(cells) { - !utils.isArray(cells) && (cells = [cells]); - - var result = {}, - status = ["align", "valign"], - tempStatus = null, - isSame = true; //状态是否相同 - - utils.each(cells, function(cellNode) { - utils.each(status, function(currentState) { - tempStatus = cellNode.getAttribute(currentState); - - if (!result[currentState] && tempStatus) { - result[currentState] = tempStatus; - } else if ( - !result[currentState] || - tempStatus !== result[currentState] - ) { - isSame = false; - return false; - } - }); - - return isSame; - }); - - return isSame ? result : null; - }; - - /** - * 根据当前选区获取相关的table信息 - * @return {Object} - */ - UETable.getTableItemsByRange = function(editor) { - var start = editor.selection.getStart(); - - //ff下会选中bookmark - if ( - start && - start.id && - start.id.indexOf("_baidu_bookmark_start_") === 0 && - start.nextSibling - ) { - start = start.nextSibling; - } - - //在table或者td边缘有可能存在选中tr的情况 - var cell = start && domUtils.findParentByTagName(start, ["td", "th"], true), - tr = cell && cell.parentNode, - table = tr && domUtils.findParentByTagName(tr, ["table"]), - caption = table && table.getElementsByTagName("caption")[0]; - - return { - cell: cell, - tr: tr, - table: table, - caption: caption - }; - }; - UETable.getUETableBySelected = function(editor) { - var table = UETable.getTableItemsByRange(editor).table; - if (table && table.ueTable && table.ueTable.selectedTds.length) { - return table.ueTable; - } - return null; - }; - - UETable.getDefaultValue = function(editor, table) { - var borderMap = { - thin: "0px", - medium: "1px", - thick: "2px" - }, - tableBorder, - tdPadding, - tdBorder, - tmpValue; - if (!table) { - table = editor.document.createElement("table"); - table.insertRow(0).insertCell(0).innerHTML = "xxx"; - editor.body.appendChild(table); - var td = table.getElementsByTagName("td")[0]; - tmpValue = domUtils.getComputedStyle(table, "border-left-width"); - tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); - tmpValue = domUtils.getComputedStyle(td, "padding-left"); - tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10); - tmpValue = domUtils.getComputedStyle(td, "border-left-width"); - tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); - domUtils.remove(table); - return { - tableBorder: tableBorder, - tdPadding: tdPadding, - tdBorder: tdBorder - }; - } else { - td = table.getElementsByTagName("td")[0]; - tmpValue = domUtils.getComputedStyle(table, "border-left-width"); - tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); - tmpValue = domUtils.getComputedStyle(td, "padding-left"); - tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10); - tmpValue = domUtils.getComputedStyle(td, "border-left-width"); - tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); - return { - tableBorder: tableBorder, - tdPadding: tdPadding, - tdBorder: tdBorder - }; - } - }; - /** - * 根据当前点击的td或者table获取索引对象 - * @param tdOrTable - */ - UETable.getUETable = function(tdOrTable) { - var tag = tdOrTable.tagName.toLowerCase(); - tdOrTable = tag == "td" || tag == "th" || tag == "caption" - ? domUtils.findParentByTagName(tdOrTable, "table", true) - : tdOrTable; - if (!tdOrTable.ueTable) { - tdOrTable.ueTable = new UETable(tdOrTable); - } - return tdOrTable.ueTable; - }; - - UETable.cloneCell = function(cell, ignoreMerge, keepPro) { - if (!cell || utils.isString(cell)) { - return this.table.ownerDocument.createElement(cell || "td"); - } - var flag = domUtils.hasClass(cell, "selectTdClass"); - flag && domUtils.removeClasses(cell, "selectTdClass"); - var tmpCell = cell.cloneNode(true); - if (ignoreMerge) { - tmpCell.rowSpan = tmpCell.colSpan = 1; - } - //去掉宽高 - !keepPro && domUtils.removeAttributes(tmpCell, "width height"); - !keepPro && domUtils.removeAttributes(tmpCell, "style"); - - tmpCell.style.borderLeftStyle = ""; - tmpCell.style.borderTopStyle = ""; - tmpCell.style.borderLeftColor = cell.style.borderRightColor; - tmpCell.style.borderLeftWidth = cell.style.borderRightWidth; - tmpCell.style.borderTopColor = cell.style.borderBottomColor; - tmpCell.style.borderTopWidth = cell.style.borderBottomWidth; - flag && domUtils.addClass(cell, "selectTdClass"); - return tmpCell; - }; - - UETable.prototype = { - getMaxRows: function() { - var rows = this.table.rows, - maxLen = 1; - for (var i = 0, row; (row = rows[i]); i++) { - var currentMax = 1; - for (var j = 0, cj; (cj = row.cells[j++]); ) { - currentMax = Math.max(cj.rowSpan || 1, currentMax); - } - maxLen = Math.max(currentMax + i, maxLen); - } - return maxLen; - }, - /** - * 获取当前表格的最大列数 - */ - getMaxCols: function() { - var rows = this.table.rows, - maxLen = 0, - cellRows = {}; - for (var i = 0, row; (row = rows[i]); i++) { - var cellsNum = 0; - for (var j = 0, cj; (cj = row.cells[j++]); ) { - cellsNum += cj.colSpan || 1; - if (cj.rowSpan && cj.rowSpan > 1) { - for (var k = 1; k < cj.rowSpan; k++) { - if (!cellRows["row_" + (i + k)]) { - cellRows["row_" + (i + k)] = cj.colSpan || 1; - } else { - cellRows["row_" + (i + k)]++; - } - } - } - } - cellsNum += cellRows["row_" + i] || 0; - maxLen = Math.max(cellsNum, maxLen); - } - return maxLen; - }, - getCellColIndex: function(cell) {}, - /** - * 获取当前cell旁边的单元格, - * @param cell - * @param right - */ - getHSideCell: function(cell, right) { - try { - var cellInfo = this.getCellInfo(cell), - previewRowIndex, - previewColIndex; - var len = this.selectedTds.length, - range = this.cellsRange; - //首行或者首列没有前置单元格 - if ( - (!right && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || - (right && - (!len - ? cellInfo.colIndex == this.colsNum - 1 - : range.endColIndex == this.colsNum - 1)) - ) - return null; - - previewRowIndex = !len ? cellInfo.rowIndex : range.beginRowIndex; - previewColIndex = !right - ? !len - ? cellInfo.colIndex < 1 ? 0 : cellInfo.colIndex - 1 - : range.beginColIndex - 1 - : !len ? cellInfo.colIndex + 1 : range.endColIndex + 1; - return this.getCell( - this.indexTable[previewRowIndex][previewColIndex].rowIndex, - this.indexTable[previewRowIndex][previewColIndex].cellIndex - ); - } catch (e) { - showError(e); - } - }, - getTabNextCell: function(cell, preRowIndex) { - var cellInfo = this.getCellInfo(cell), - rowIndex = preRowIndex || cellInfo.rowIndex, - colIndex = cellInfo.colIndex + 1 + (cellInfo.colSpan - 1), - nextCell; - try { - nextCell = this.getCell( - this.indexTable[rowIndex][colIndex].rowIndex, - this.indexTable[rowIndex][colIndex].cellIndex - ); - } catch (e) { - try { - rowIndex = rowIndex * 1 + 1; - colIndex = 0; - nextCell = this.getCell( - this.indexTable[rowIndex][colIndex].rowIndex, - this.indexTable[rowIndex][colIndex].cellIndex - ); - } catch (e) {} - } - return nextCell; - }, - /** - * 获取视觉上的后置单元格 - * @param cell - * @param bottom - */ - getVSideCell: function(cell, bottom, ignoreRange) { - try { - var cellInfo = this.getCellInfo(cell), - nextRowIndex, - nextColIndex; - var len = this.selectedTds.length && !ignoreRange, - range = this.cellsRange; - //末行或者末列没有后置单元格 - if ( - (!bottom && cellInfo.rowIndex == 0) || - (bottom && - (!len - ? cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1 - : range.endRowIndex == this.rowsNum - 1)) - ) - return null; - - nextRowIndex = !bottom - ? !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1 - : !len ? cellInfo.rowIndex + cellInfo.rowSpan : range.endRowIndex + 1; - nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex; - return this.getCell( - this.indexTable[nextRowIndex][nextColIndex].rowIndex, - this.indexTable[nextRowIndex][nextColIndex].cellIndex - ); - } catch (e) { - showError(e); - } - }, - /** - * 获取相同结束位置的单元格,xOrY指代了是获取x轴相同还是y轴相同 - */ - getSameEndPosCells: function(cell, xOrY) { - try { - var flag = xOrY.toLowerCase() === "x", - end = - domUtils.getXY(cell)[flag ? "x" : "y"] + - cell["offset" + (flag ? "Width" : "Height")], - rows = this.table.rows, - cells = null, - returns = []; - for (var i = 0; i < this.rowsNum; i++) { - cells = rows[i].cells; - for (var j = 0, tmpCell; (tmpCell = cells[j++]); ) { - var tmpEnd = - domUtils.getXY(tmpCell)[flag ? "x" : "y"] + - tmpCell["offset" + (flag ? "Width" : "Height")]; - //对应行的td已经被上面行rowSpan了 - if (tmpEnd > end && flag) break; - if (cell == tmpCell || end == tmpEnd) { - //只获取单一的单元格 - //todo 仅获取单一单元格在特定情况下会造成returns为空,从而影响后续的拖拽实现,修正这个。需考虑性能 - if (tmpCell[flag ? "colSpan" : "rowSpan"] == 1) { - returns.push(tmpCell); - } - if (flag) break; - } - } - } - return returns; - } catch (e) { - showError(e); - } - }, - setCellContent: function(cell, content) { - cell.innerHTML = content || (browser.ie ? domUtils.fillChar : "
    "); - }, - cloneCell: UETable.cloneCell, - /** - * 获取跟当前单元格的右边竖线为左边的所有未合并单元格 - */ - getSameStartPosXCells: function(cell) { - try { - var start = domUtils.getXY(cell).x + cell.offsetWidth, - rows = this.table.rows, - cells, - returns = []; - for (var i = 0; i < this.rowsNum; i++) { - cells = rows[i].cells; - for (var j = 0, tmpCell; (tmpCell = cells[j++]); ) { - var tmpStart = domUtils.getXY(tmpCell).x; - if (tmpStart > start) break; - if (tmpStart == start && tmpCell.colSpan == 1) { - returns.push(tmpCell); - break; - } - } - } - return returns; - } catch (e) { - showError(e); - } - }, - /** - * 更新table对应的索引表 - */ - update: function(table) { - this.table = table || this.table; - this.selectedTds = []; - this.cellsRange = {}; - this.indexTable = []; - var rows = this.table.rows, - rowsNum = this.getMaxRows(), - dNum = rowsNum - rows.length, - colsNum = this.getMaxCols(); - while (dNum--) { - this.table.insertRow(rows.length); - } - this.rowsNum = rowsNum; - this.colsNum = colsNum; - for (var i = 0, len = rows.length; i < len; i++) { - this.indexTable[i] = new Array(colsNum); - } - //填充索引表 - for (var rowIndex = 0, row; (row = rows[rowIndex]); rowIndex++) { - for ( - var cellIndex = 0, cell, cells = row.cells; - (cell = cells[cellIndex]); - cellIndex++ - ) { - //修正整行被rowSpan时导致的行数计算错误 - if (cell.rowSpan > rowsNum) { - cell.rowSpan = rowsNum; - } - var colIndex = cellIndex, - rowSpan = cell.rowSpan || 1, - colSpan = cell.colSpan || 1; - //当已经被上一行rowSpan或者被前一列colSpan了,则跳到下一个单元格进行 - while (this.indexTable[rowIndex][colIndex]) colIndex++; - for (var j = 0; j < rowSpan; j++) { - for (var k = 0; k < colSpan; k++) { - this.indexTable[rowIndex + j][colIndex + k] = { - rowIndex: rowIndex, - cellIndex: cellIndex, - colIndex: colIndex, - rowSpan: rowSpan, - colSpan: colSpan - }; - } - } - } - } - //修复残缺td - for (j = 0; j < rowsNum; j++) { - for (k = 0; k < colsNum; k++) { - if (this.indexTable[j][k] === undefined) { - row = rows[j]; - cell = row.cells[row.cells.length - 1]; - cell = cell - ? cell.cloneNode(true) - : this.table.ownerDocument.createElement("td"); - this.setCellContent(cell); - if (cell.colSpan !== 1) cell.colSpan = 1; - if (cell.rowSpan !== 1) cell.rowSpan = 1; - row.appendChild(cell); - this.indexTable[j][k] = { - rowIndex: j, - cellIndex: cell.cellIndex, - colIndex: k, - rowSpan: 1, - colSpan: 1 - }; - } - } - } - //当框选后删除行或者列后撤销,需要重建选区。 - var tds = domUtils.getElementsByTagName(this.table, "td"), - selectTds = []; - utils.each(tds, function(td) { - if (domUtils.hasClass(td, "selectTdClass")) { - selectTds.push(td); - } - }); - if (selectTds.length) { - var start = selectTds[0], - end = selectTds[selectTds.length - 1], - startInfo = this.getCellInfo(start), - endInfo = this.getCellInfo(end); - this.selectedTds = selectTds; - this.cellsRange = { - beginRowIndex: startInfo.rowIndex, - beginColIndex: startInfo.colIndex, - endRowIndex: endInfo.rowIndex + endInfo.rowSpan - 1, - endColIndex: endInfo.colIndex + endInfo.colSpan - 1 - }; - } - //给第一行设置firstRow的样式名称,在排序图标的样式上使用到 - if (!domUtils.hasClass(this.table.rows[0], "firstRow")) { - domUtils.addClass(this.table.rows[0], "firstRow"); - for (var i = 1; i < this.table.rows.length; i++) { - domUtils.removeClasses(this.table.rows[i], "firstRow"); - } - } - }, - /** - * 获取单元格的索引信息 - */ - getCellInfo: function(cell) { - if (!cell) return; - var cellIndex = cell.cellIndex, - rowIndex = cell.parentNode.rowIndex, - rowInfo = this.indexTable[rowIndex], - numCols = this.colsNum; - for (var colIndex = cellIndex; colIndex < numCols; colIndex++) { - var cellInfo = rowInfo[colIndex]; - if ( - cellInfo.rowIndex === rowIndex && - cellInfo.cellIndex === cellIndex - ) { - return cellInfo; - } - } - }, - /** - * 根据行列号获取单元格 - */ - getCell: function(rowIndex, cellIndex) { - return ( - (rowIndex < this.rowsNum && - this.table.rows[rowIndex].cells[cellIndex]) || - null - ); - }, - /** - * 删除单元格 - */ - deleteCell: function(cell, rowIndex) { - rowIndex = typeof rowIndex == "number" - ? rowIndex - : cell.parentNode.rowIndex; - var row = this.table.rows[rowIndex]; - row.deleteCell(cell.cellIndex); - }, - /** - * 根据始末两个单元格获取被框选的所有单元格范围 - */ - getCellsRange: function(cellA, cellB) { - function checkRange( - beginRowIndex, - beginColIndex, - endRowIndex, - endColIndex - ) { - var tmpBeginRowIndex = beginRowIndex, - tmpBeginColIndex = beginColIndex, - tmpEndRowIndex = endRowIndex, - tmpEndColIndex = endColIndex, - cellInfo, - colIndex, - rowIndex; - // 通过indexTable检查是否存在超出TableRange上边界的情况 - if (beginRowIndex > 0) { - for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { - cellInfo = me.indexTable[beginRowIndex][colIndex]; - rowIndex = cellInfo.rowIndex; - if (rowIndex < beginRowIndex) { - tmpBeginRowIndex = Math.min(rowIndex, tmpBeginRowIndex); - } - } - } - // 通过indexTable检查是否存在超出TableRange右边界的情况 - if (endColIndex < me.colsNum) { - for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { - cellInfo = me.indexTable[rowIndex][endColIndex]; - colIndex = cellInfo.colIndex + cellInfo.colSpan - 1; - if (colIndex > endColIndex) { - tmpEndColIndex = Math.max(colIndex, tmpEndColIndex); - } - } - } - // 检查是否有超出TableRange下边界的情况 - if (endRowIndex < me.rowsNum) { - for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { - cellInfo = me.indexTable[endRowIndex][colIndex]; - rowIndex = cellInfo.rowIndex + cellInfo.rowSpan - 1; - if (rowIndex > endRowIndex) { - tmpEndRowIndex = Math.max(rowIndex, tmpEndRowIndex); - } - } - } - // 检查是否有超出TableRange左边界的情况 - if (beginColIndex > 0) { - for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { - cellInfo = me.indexTable[rowIndex][beginColIndex]; - colIndex = cellInfo.colIndex; - if (colIndex < beginColIndex) { - tmpBeginColIndex = Math.min(cellInfo.colIndex, tmpBeginColIndex); - } - } - } - //递归调用直至所有完成所有框选单元格的扩展 - if ( - tmpBeginRowIndex != beginRowIndex || - tmpBeginColIndex != beginColIndex || - tmpEndRowIndex != endRowIndex || - tmpEndColIndex != endColIndex - ) { - return checkRange( - tmpBeginRowIndex, - tmpBeginColIndex, - tmpEndRowIndex, - tmpEndColIndex - ); - } else { - // 不需要扩展TableRange的情况 - return { - beginRowIndex: beginRowIndex, - beginColIndex: beginColIndex, - endRowIndex: endRowIndex, - endColIndex: endColIndex - }; - } - } - - try { - var me = this, - cellAInfo = me.getCellInfo(cellA); - if (cellA === cellB) { - return { - beginRowIndex: cellAInfo.rowIndex, - beginColIndex: cellAInfo.colIndex, - endRowIndex: cellAInfo.rowIndex + cellAInfo.rowSpan - 1, - endColIndex: cellAInfo.colIndex + cellAInfo.colSpan - 1 - }; - } - var cellBInfo = me.getCellInfo(cellB); - // 计算TableRange的四个边 - var beginRowIndex = Math.min(cellAInfo.rowIndex, cellBInfo.rowIndex), - beginColIndex = Math.min(cellAInfo.colIndex, cellBInfo.colIndex), - endRowIndex = Math.max( - cellAInfo.rowIndex + cellAInfo.rowSpan - 1, - cellBInfo.rowIndex + cellBInfo.rowSpan - 1 - ), - endColIndex = Math.max( - cellAInfo.colIndex + cellAInfo.colSpan - 1, - cellBInfo.colIndex + cellBInfo.colSpan - 1 - ); - - return checkRange( - beginRowIndex, - beginColIndex, - endRowIndex, - endColIndex - ); - } catch (e) { - //throw e; - } - }, - /** - * 依据cellsRange获取对应的单元格集合 - */ - getCells: function(range) { - //每次获取cells之前必须先清除上次的选择,否则会对后续获取操作造成影响 - this.clearSelected(); - var beginRowIndex = range.beginRowIndex, - beginColIndex = range.beginColIndex, - endRowIndex = range.endRowIndex, - endColIndex = range.endColIndex, - cellInfo, - rowIndex, - colIndex, - tdHash = {}, - returnTds = []; - for (var i = beginRowIndex; i <= endRowIndex; i++) { - for (var j = beginColIndex; j <= endColIndex; j++) { - cellInfo = this.indexTable[i][j]; - rowIndex = cellInfo.rowIndex; - colIndex = cellInfo.colIndex; - // 如果Cells里已经包含了此Cell则跳过 - var key = rowIndex + "|" + colIndex; - if (tdHash[key]) continue; - tdHash[key] = 1; - if ( - rowIndex < i || - colIndex < j || - rowIndex + cellInfo.rowSpan - 1 > endRowIndex || - colIndex + cellInfo.colSpan - 1 > endColIndex - ) { - return null; - } - returnTds.push(this.getCell(rowIndex, cellInfo.cellIndex)); - } - } - return returnTds; - }, - /** - * 清理已经选中的单元格 - */ - clearSelected: function() { - UETable.removeSelectedClass(this.selectedTds); - this.selectedTds = []; - this.cellsRange = {}; - }, - /** - * 根据range设置已经选中的单元格 - */ - setSelected: function(range) { - var cells = this.getCells(range); - UETable.addSelectedClass(cells); - this.selectedTds = cells; - this.cellsRange = range; - }, - isFullRow: function() { - var range = this.cellsRange; - return range.endColIndex - range.beginColIndex + 1 == this.colsNum; - }, - isFullCol: function() { - var range = this.cellsRange, - table = this.table, - ths = table.getElementsByTagName("th"), - rows = range.endRowIndex - range.beginRowIndex + 1; - return !ths.length - ? rows == this.rowsNum - : rows == this.rowsNum || rows == this.rowsNum - 1; - }, - /** - * 获取视觉上的前置单元格,默认是左边,top传入时 - * @param cell - * @param top - */ - getNextCell: function(cell, bottom, ignoreRange) { - try { - var cellInfo = this.getCellInfo(cell), - nextRowIndex, - nextColIndex; - var len = this.selectedTds.length && !ignoreRange, - range = this.cellsRange; - //末行或者末列没有后置单元格 - if ( - (!bottom && cellInfo.rowIndex == 0) || - (bottom && - (!len - ? cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1 - : range.endRowIndex == this.rowsNum - 1)) - ) - return null; - - nextRowIndex = !bottom - ? !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1 - : !len ? cellInfo.rowIndex + cellInfo.rowSpan : range.endRowIndex + 1; - nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex; - return this.getCell( - this.indexTable[nextRowIndex][nextColIndex].rowIndex, - this.indexTable[nextRowIndex][nextColIndex].cellIndex - ); - } catch (e) { - showError(e); - } - }, - getPreviewCell: function(cell, top) { - try { - var cellInfo = this.getCellInfo(cell), - previewRowIndex, - previewColIndex; - var len = this.selectedTds.length, - range = this.cellsRange; - //首行或者首列没有前置单元格 - if ( - (!top && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || - (top && - (!len - ? cellInfo.rowIndex > this.colsNum - 1 - : range.endColIndex == this.colsNum - 1)) - ) - return null; - - previewRowIndex = !top - ? !len ? cellInfo.rowIndex : range.beginRowIndex - : !len - ? cellInfo.rowIndex < 1 ? 0 : cellInfo.rowIndex - 1 - : range.beginRowIndex; - previewColIndex = !top - ? !len - ? cellInfo.colIndex < 1 ? 0 : cellInfo.colIndex - 1 - : range.beginColIndex - 1 - : !len ? cellInfo.colIndex : range.endColIndex + 1; - return this.getCell( - this.indexTable[previewRowIndex][previewColIndex].rowIndex, - this.indexTable[previewRowIndex][previewColIndex].cellIndex - ); - } catch (e) { - showError(e); - } - }, - /** - * 移动单元格中的内容 - */ - moveContent: function(cellTo, cellFrom) { - if (UETable.isEmptyBlock(cellFrom)) return; - if (UETable.isEmptyBlock(cellTo)) { - cellTo.innerHTML = cellFrom.innerHTML; - return; - } - var child = cellTo.lastChild; - if (child.nodeType == 3 || !dtd.$block[child.tagName]) { - cellTo.appendChild(cellTo.ownerDocument.createElement("br")); - } - while ((child = cellFrom.firstChild)) { - cellTo.appendChild(child); - } - }, - /** - * 向右合并单元格 - */ - mergeRight: function(cell) { - var cellInfo = this.getCellInfo(cell), - rightColIndex = cellInfo.colIndex + cellInfo.colSpan, - rightCellInfo = this.indexTable[cellInfo.rowIndex][rightColIndex], - rightCell = this.getCell( - rightCellInfo.rowIndex, - rightCellInfo.cellIndex - ); - //合并 - cell.colSpan = cellInfo.colSpan + rightCellInfo.colSpan; - //被合并的单元格不应存在宽度属性 - cell.removeAttribute("width"); - //移动内容 - this.moveContent(cell, rightCell); - //删掉被合并的Cell - this.deleteCell(rightCell, rightCellInfo.rowIndex); - this.update(); - }, - /** - * 向下合并单元格 - */ - mergeDown: function(cell) { - var cellInfo = this.getCellInfo(cell), - downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan, - downCellInfo = this.indexTable[downRowIndex][cellInfo.colIndex], - downCell = this.getCell(downCellInfo.rowIndex, downCellInfo.cellIndex); - cell.rowSpan = cellInfo.rowSpan + downCellInfo.rowSpan; - cell.removeAttribute("height"); - this.moveContent(cell, downCell); - this.deleteCell(downCell, downCellInfo.rowIndex); - this.update(); - }, - /** - * 合并整个range中的内容 - */ - mergeRange: function() { - //由于合并操作可以在任意时刻进行,所以无法通过鼠标位置等信息实时生成range,只能通过缓存实例中的cellsRange对象来访问 - var range = this.cellsRange, - leftTopCell = this.getCell( - range.beginRowIndex, - this.indexTable[range.beginRowIndex][range.beginColIndex].cellIndex - ); - - // 这段关于行表头或者列表头的特殊处理会导致表头合并范围错误 - // 为什么有这段代码的原因未明,暂且注释掉,希望原作者看到后出面说明下 - // if ( - // leftTopCell.tagName == "TH" && - // range.endRowIndex !== range.beginRowIndex - // ) { - // var index = this.indexTable, - // info = this.getCellInfo(leftTopCell); - // leftTopCell = this.getCell(1, index[1][info.colIndex].cellIndex); - // range = this.getCellsRange( - // leftTopCell, - // this.getCell( - // index[this.rowsNum - 1][info.colIndex].rowIndex, - // index[this.rowsNum - 1][info.colIndex].cellIndex - // ) - // ); - // } - - // 删除剩余的Cells - var cells = this.getCells(range); - for (var i = 0, ci; (ci = cells[i++]); ) { - if (ci !== leftTopCell) { - this.moveContent(leftTopCell, ci); - this.deleteCell(ci); - } - } - // 修改左上角Cell的rowSpan和colSpan,并调整宽度属性设置 - leftTopCell.rowSpan = range.endRowIndex - range.beginRowIndex + 1; - leftTopCell.rowSpan > 1 && leftTopCell.removeAttribute("height"); - leftTopCell.colSpan = range.endColIndex - range.beginColIndex + 1; - leftTopCell.colSpan > 1 && leftTopCell.removeAttribute("width"); - if (leftTopCell.rowSpan == this.rowsNum && leftTopCell.colSpan != 1) { - leftTopCell.colSpan = 1; - } - - if (leftTopCell.colSpan == this.colsNum && leftTopCell.rowSpan != 1) { - var rowIndex = leftTopCell.parentNode.rowIndex; - //解决IE下的表格操作问题 - if (this.table.deleteRow) { - for ( - var i = rowIndex + 1, - curIndex = rowIndex + 1, - len = leftTopCell.rowSpan; - i < len; - i++ - ) { - this.table.deleteRow(curIndex); - } - } else { - for (var i = 0, len = leftTopCell.rowSpan - 1; i < len; i++) { - var row = this.table.rows[rowIndex + 1]; - row.parentNode.removeChild(row); - } - } - leftTopCell.rowSpan = 1; - } - this.update(); - }, - /** - * 插入一行单元格 - */ - insertRow: function(rowIndex, sourceCell) { - var numCols = this.colsNum, - table = this.table, - row = table.insertRow(rowIndex), - cell, - thead = null, - isInsertTitle = - typeof sourceCell == "string" && sourceCell.toUpperCase() == "TH"; - - function replaceTdToTh(colIndex, cell, tableRow) { - if (colIndex == 0) { - var tr = tableRow.nextSibling || tableRow.previousSibling, - th = tr.cells[colIndex]; - if (th.tagName == "TH") { - th = cell.ownerDocument.createElement("th"); - th.appendChild(cell.firstChild); - tableRow.insertBefore(th, cell); - domUtils.remove(cell); - } - } else { - if (cell.tagName == "TH") { - var td = cell.ownerDocument.createElement("td"); - td.appendChild(cell.firstChild); - tableRow.insertBefore(td, cell); - domUtils.remove(cell); - } - } - } - - //首行直接插入,无需考虑部分单元格被rowspan的情况 - if (rowIndex == 0 || rowIndex == this.rowsNum) { - for (var colIndex = 0; colIndex < numCols; colIndex++) { - cell = this.cloneCell(sourceCell, true); - this.setCellContent(cell); - cell.getAttribute("vAlign") && - cell.setAttribute("vAlign", cell.getAttribute("vAlign")); - row.appendChild(cell); - if (!isInsertTitle) replaceTdToTh(colIndex, cell, row); - } - - if (isInsertTitle) { - thead = table.createTHead(); - thead.insertBefore(row, thead.firstChild); - } - } else { - var infoRow = this.indexTable[rowIndex], - cellIndex = 0; - for (colIndex = 0; colIndex < numCols; colIndex++) { - var cellInfo = infoRow[colIndex]; - //如果存在某个单元格的rowspan穿过待插入行的位置,则修改该单元格的rowspan即可,无需插入单元格 - if (cellInfo.rowIndex < rowIndex) { - cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); - cell.rowSpan = cellInfo.rowSpan + 1; - } else { - cell = this.cloneCell(sourceCell, true); - this.setCellContent(cell); - row.appendChild(cell); - } - if (!isInsertTitle) replaceTdToTh(colIndex, cell, row); - } - } - //框选时插入不触发contentchange,需要手动更新索引。 - this.update(); - return row; - }, - /** - * 删除一行单元格 - * @param rowIndex - */ - deleteRow: function(rowIndex) { - var row = this.table.rows[rowIndex], - infoRow = this.indexTable[rowIndex], - colsNum = this.colsNum, - count = 0; //处理计数 - for (var colIndex = 0; colIndex < colsNum; ) { - var cellInfo = infoRow[colIndex], - cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); - if (cell.rowSpan > 1) { - if (cellInfo.rowIndex == rowIndex) { - var clone = cell.cloneNode(true); - clone.rowSpan = cell.rowSpan - 1; - clone.innerHTML = ""; - cell.rowSpan = 1; - var nextRowIndex = rowIndex + 1, - nextRow = this.table.rows[nextRowIndex], - insertCellIndex, - preMerged = - this.getPreviewMergedCellsNum(nextRowIndex, colIndex) - count; - if (preMerged < colIndex) { - insertCellIndex = colIndex - preMerged - 1; - //nextRow.insertCell(insertCellIndex); - domUtils.insertAfter(nextRow.cells[insertCellIndex], clone); - } else { - if (nextRow.cells.length) - nextRow.insertBefore(clone, nextRow.cells[0]); - } - count += 1; - //cell.parentNode.removeChild(cell); - } - } - colIndex += cell.colSpan || 1; - } - var deleteTds = [], - cacheMap = {}; - for (colIndex = 0; colIndex < colsNum; colIndex++) { - var tmpRowIndex = infoRow[colIndex].rowIndex, - tmpCellIndex = infoRow[colIndex].cellIndex, - key = tmpRowIndex + "_" + tmpCellIndex; - if (cacheMap[key]) continue; - cacheMap[key] = 1; - cell = this.getCell(tmpRowIndex, tmpCellIndex); - deleteTds.push(cell); - } - var mergeTds = []; - utils.each(deleteTds, function(td) { - if (td.rowSpan == 1) { - td.parentNode.removeChild(td); - } else { - mergeTds.push(td); - } - }); - utils.each(mergeTds, function(td) { - td.rowSpan--; - }); - row.parentNode.removeChild(row); - //浏览器方法本身存在bug,采用自定义方法删除 - //this.table.deleteRow(rowIndex); - this.update(); - }, - insertCol: function(colIndex, sourceCell, defaultValue) { - var rowsNum = this.rowsNum, - rowIndex = 0, - tableRow, - cell, - backWidth = parseInt( - (this.table.offsetWidth - - (this.colsNum + 1) * 20 - - (this.colsNum + 1)) / - (this.colsNum + 1), - 10 - ), - isInsertTitleCol = - typeof sourceCell == "string" && sourceCell.toUpperCase() == "TH"; - - function replaceTdToTh(rowIndex, cell, tableRow) { - if (rowIndex == 0) { - var th = cell.nextSibling || cell.previousSibling; - if (th.tagName == "TH") { - th = cell.ownerDocument.createElement("th"); - th.appendChild(cell.firstChild); - tableRow.insertBefore(th, cell); - domUtils.remove(cell); - } - } else { - if (cell.tagName == "TH") { - var td = cell.ownerDocument.createElement("td"); - td.appendChild(cell.firstChild); - tableRow.insertBefore(td, cell); - domUtils.remove(cell); - } - } - } - - var preCell; - if (colIndex == 0 || colIndex == this.colsNum) { - for (; rowIndex < rowsNum; rowIndex++) { - tableRow = this.table.rows[rowIndex]; - preCell = - tableRow.cells[colIndex == 0 ? colIndex : tableRow.cells.length]; - cell = this.cloneCell(sourceCell, true); //tableRow.insertCell(colIndex == 0 ? colIndex : tableRow.cells.length); - this.setCellContent(cell); - cell.setAttribute("vAlign", cell.getAttribute("vAlign")); - preCell && cell.setAttribute("width", preCell.getAttribute("width")); - if (!colIndex) { - tableRow.insertBefore(cell, tableRow.cells[0]); - } else { - domUtils.insertAfter( - tableRow.cells[tableRow.cells.length - 1], - cell - ); - } - if (!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow); - } - } else { - for (; rowIndex < rowsNum; rowIndex++) { - var cellInfo = this.indexTable[rowIndex][colIndex]; - if (cellInfo.colIndex < colIndex) { - cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); - cell.colSpan = cellInfo.colSpan + 1; - } else { - tableRow = this.table.rows[rowIndex]; - preCell = tableRow.cells[cellInfo.cellIndex]; - - cell = this.cloneCell(sourceCell, true); //tableRow.insertCell(cellInfo.cellIndex); - this.setCellContent(cell); - cell.setAttribute("vAlign", cell.getAttribute("vAlign")); - preCell && - cell.setAttribute("width", preCell.getAttribute("width")); - //防止IE下报错 - preCell - ? tableRow.insertBefore(cell, preCell) - : tableRow.appendChild(cell); - } - if (!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow); - } - } - //框选时插入不触发contentchange,需要手动更新索引 - this.update(); - this.updateWidth( - backWidth, - defaultValue || { tdPadding: 10, tdBorder: 1 } - ); - }, - updateWidth: function(width, defaultValue) { - var table = this.table, - tmpWidth = - UETable.getWidth(table) - - defaultValue.tdPadding * 2 - - defaultValue.tdBorder + - width; - if (tmpWidth < table.ownerDocument.body.offsetWidth) { - table.setAttribute("width", tmpWidth); - return; - } - var tds = domUtils.getElementsByTagName(this.table, "td th"); - utils.each(tds, function(td) { - td.setAttribute("width", width); - }); - }, - deleteCol: function(colIndex) { - var indexTable = this.indexTable, - tableRows = this.table.rows, - backTableWidth = this.table.getAttribute("width"), - backTdWidth = 0, - rowsNum = this.rowsNum, - cacheMap = {}; - for (var rowIndex = 0; rowIndex < rowsNum; ) { - var infoRow = indexTable[rowIndex], - cellInfo = infoRow[colIndex], - key = cellInfo.rowIndex + "_" + cellInfo.colIndex; - // 跳过已经处理过的Cell - if (cacheMap[key]) continue; - cacheMap[key] = 1; - var cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); - if (!backTdWidth) - backTdWidth = - cell && parseInt(cell.offsetWidth / cell.colSpan, 10).toFixed(0); - // 如果Cell的colSpan大于1, 就修改colSpan, 否则就删掉这个Cell - if (cell.colSpan > 1) { - cell.colSpan--; - } else { - tableRows[rowIndex].deleteCell(cellInfo.cellIndex); - } - rowIndex += cellInfo.rowSpan || 1; - } - this.table.setAttribute("width", backTableWidth - backTdWidth); - this.update(); - }, - splitToCells: function(cell) { - var me = this, - cells = this.splitToRows(cell); - utils.each(cells, function(cell) { - me.splitToCols(cell); - }); - }, - splitToRows: function(cell) { - var cellInfo = this.getCellInfo(cell), - rowIndex = cellInfo.rowIndex, - colIndex = cellInfo.colIndex, - results = []; - // 修改Cell的rowSpan - cell.rowSpan = 1; - results.push(cell); - // 补齐单元格 - for ( - var i = rowIndex, endRow = rowIndex + cellInfo.rowSpan; - i < endRow; - i++ - ) { - if (i == rowIndex) continue; - var tableRow = this.table.rows[i], - tmpCell = tableRow.insertCell( - colIndex - this.getPreviewMergedCellsNum(i, colIndex) - ); - tmpCell.colSpan = cellInfo.colSpan; - this.setCellContent(tmpCell); - tmpCell.setAttribute("vAlign", cell.getAttribute("vAlign")); - tmpCell.setAttribute("align", cell.getAttribute("align")); - if (cell.style.cssText) { - tmpCell.style.cssText = cell.style.cssText; - } - results.push(tmpCell); - } - this.update(); - return results; - }, - getPreviewMergedCellsNum: function(rowIndex, colIndex) { - var indexRow = this.indexTable[rowIndex], - num = 0; - for (var i = 0; i < colIndex; ) { - var colSpan = indexRow[i].colSpan, - tmpRowIndex = indexRow[i].rowIndex; - num += colSpan - (tmpRowIndex == rowIndex ? 1 : 0); - i += colSpan; - } - return num; - }, - splitToCols: function(cell) { - var backWidth = (cell.offsetWidth / cell.colSpan - 22).toFixed(0), - cellInfo = this.getCellInfo(cell), - rowIndex = cellInfo.rowIndex, - colIndex = cellInfo.colIndex, - results = []; - // 修改Cell的rowSpan - cell.colSpan = 1; - cell.setAttribute("width", backWidth); - results.push(cell); - // 补齐单元格 - for ( - var j = colIndex, endCol = colIndex + cellInfo.colSpan; - j < endCol; - j++ - ) { - if (j == colIndex) continue; - var tableRow = this.table.rows[rowIndex], - tmpCell = tableRow.insertCell( - this.indexTable[rowIndex][j].cellIndex + 1 - ); - tmpCell.rowSpan = cellInfo.rowSpan; - this.setCellContent(tmpCell); - tmpCell.setAttribute("vAlign", cell.getAttribute("vAlign")); - tmpCell.setAttribute("align", cell.getAttribute("align")); - tmpCell.setAttribute("width", backWidth); - if (cell.style.cssText) { - tmpCell.style.cssText = cell.style.cssText; - } - //处理th的情况 - if (cell.tagName == "TH") { - var th = cell.ownerDocument.createElement("th"); - th.appendChild(tmpCell.firstChild); - th.setAttribute("vAlign", cell.getAttribute("vAlign")); - th.rowSpan = tmpCell.rowSpan; - tableRow.insertBefore(th, tmpCell); - domUtils.remove(tmpCell); - } - results.push(tmpCell); - } - this.update(); - return results; - }, - isLastCell: function(cell, rowsNum, colsNum) { - rowsNum = rowsNum || this.rowsNum; - colsNum = colsNum || this.colsNum; - var cellInfo = this.getCellInfo(cell); - return ( - cellInfo.rowIndex + cellInfo.rowSpan == rowsNum && - cellInfo.colIndex + cellInfo.colSpan == colsNum - ); - }, - getLastCell: function(cells) { - cells = cells || this.table.getElementsByTagName("td"); - var firstInfo = this.getCellInfo(cells[0]); - var me = this, - last = cells[0], - tr = last.parentNode, - cellsNum = 0, - cols = 0, - rows; - utils.each(cells, function(cell) { - if (cell.parentNode == tr) cols += cell.colSpan || 1; - cellsNum += cell.rowSpan * cell.colSpan || 1; - }); - rows = cellsNum / cols; - utils.each(cells, function(cell) { - if (me.isLastCell(cell, rows, cols)) { - last = cell; - return false; - } - }); - return last; - }, - selectRow: function(rowIndex) { - var indexRow = this.indexTable[rowIndex], - start = this.getCell(indexRow[0].rowIndex, indexRow[0].cellIndex), - end = this.getCell( - indexRow[this.colsNum - 1].rowIndex, - indexRow[this.colsNum - 1].cellIndex - ), - range = this.getCellsRange(start, end); - this.setSelected(range); - }, - selectTable: function() { - var tds = this.table.getElementsByTagName("td"), - range = this.getCellsRange(tds[0], tds[tds.length - 1]); - this.setSelected(range); - }, - setBackground: function(cells, value) { - if (typeof value === "string") { - utils.each(cells, function(cell) { - cell.style.backgroundColor = value; - }); - } else if (typeof value === "object") { - value = utils.extend( - { - repeat: true, - colorList: ["#ddd", "#fff"] - }, - value - ); - var rowIndex = this.getCellInfo(cells[0]).rowIndex, - count = 0, - colors = value.colorList, - getColor = function(list, index, repeat) { - return list[index] - ? list[index] - : repeat ? list[index % list.length] : ""; - }; - for (var i = 0, cell; (cell = cells[i++]); ) { - var cellInfo = this.getCellInfo(cell); - cell.style.backgroundColor = getColor( - colors, - rowIndex + count == cellInfo.rowIndex ? count : ++count, - value.repeat - ); - } - } - }, - removeBackground: function(cells) { - utils.each(cells, function(cell) { - cell.style.backgroundColor = ""; - }); - } - }; - function showError(e) {} - })(); - - - // plugins/table.cmds.js - /** - * Created with JetBrains PhpStorm. - * User: taoqili - * Date: 13-2-20 - * Time: 下午6:25 - * To change this template use File | Settings | File Templates. - */ - (function() { - var UT = UE.UETable, - getTableItemsByRange = function(editor) { - return UT.getTableItemsByRange(editor); - }, - getUETableBySelected = function(editor) { - return UT.getUETableBySelected(editor); - }, - getDefaultValue = function(editor, table) { - return UT.getDefaultValue(editor, table); - }, - getUETable = function(tdOrTable) { - return UT.getUETable(tdOrTable); - }; - - UE.commands["inserttable"] = { - queryCommandState: function() { - return getTableItemsByRange(this).table ? -1 : 0; - }, - execCommand: function(cmd, opt) { - function createTable(opt, tdWidth) { - var html = [], - rowsNum = opt.numRows, - colsNum = opt.numCols; - for (var r = 0; r < rowsNum; r++) { - html.push(""); - for (var c = 0; c < colsNum; c++) { - html.push( - '
  • ' + - (browser.ie && browser.version < 11 - ? domUtils.fillChar - : "
    ") + - "
    " + html.join("") + "
    "; - } - - if (!opt) { - opt = utils.extend( - {}, - { - numCols: this.options.defaultCols, - numRows: this.options.defaultRows, - tdvalign: this.options.tdvalign - } - ); - } - var me = this; - var range = this.selection.getRange(), - start = range.startContainer, - firstParentBlock = - domUtils.findParent( - start, - function(node) { - return domUtils.isBlockElm(node); - }, - true - ) || me.body; - - var defaultValue = getDefaultValue(me), - tableWidth = firstParentBlock.offsetWidth, - tdWidth = Math.floor( - tableWidth / opt.numCols - - defaultValue.tdPadding * 2 - - defaultValue.tdBorder - ); - - //todo其他属性 - !opt.tdvalign && (opt.tdvalign = me.options.tdvalign); - me.execCommand("inserthtml", createTable(opt, tdWidth)); - } - }; - - UE.commands["insertparagraphbeforetable"] = { - queryCommandState: function() { - return getTableItemsByRange(this).cell ? 0 : -1; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var p = this.document.createElement("p"); - p.innerHTML = browser.ie ? " " : "
    "; - table.parentNode.insertBefore(p, table); - this.selection.getRange().setStart(p, 0).setCursor(); - } - } - }; - - UE.commands["deletetable"] = { - queryCommandState: function() { - var rng = this.selection.getRange(); - return domUtils.findParentByTagName(rng.startContainer, "table", true) - ? 0 - : -1; - }, - execCommand: function(cmd, table) { - var rng = this.selection.getRange(); - table = - table || - domUtils.findParentByTagName(rng.startContainer, "table", true); - if (table) { - var next = table.nextSibling; - if (!next) { - next = domUtils.createElement(this.document, "p", { - innerHTML: browser.ie ? domUtils.fillChar : "
    " - }); - table.parentNode.insertBefore(next, table); - } - domUtils.remove(table); - rng = this.selection.getRange(); - if (next.nodeType == 3) { - rng.setStartBefore(next); - } else { - rng.setStart(next, 0); - } - rng.setCursor(false, true); - this.fireEvent("tablehasdeleted"); - } - } - }; - UE.commands["cellalign"] = { - queryCommandState: function() { - return getSelectedArr(this).length ? 0 : -1; - }, - execCommand: function(cmd, align) { - var selectedTds = getSelectedArr(this); - if (selectedTds.length) { - for (var i = 0, ci; (ci = selectedTds[i++]); ) { - ci.setAttribute("align", align); - } - } - } - }; - UE.commands["cellvalign"] = { - queryCommandState: function() { - return getSelectedArr(this).length ? 0 : -1; - }, - execCommand: function(cmd, valign) { - var selectedTds = getSelectedArr(this); - if (selectedTds.length) { - for (var i = 0, ci; (ci = selectedTds[i++]); ) { - ci.setAttribute("vAlign", valign); - } - } - } - }; - UE.commands["insertcaption"] = { - queryCommandState: function() { - var table = getTableItemsByRange(this).table; - if (table) { - return table.getElementsByTagName("caption").length == 0 ? 1 : -1; - } - return -1; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var caption = this.document.createElement("caption"); - caption.innerHTML = browser.ie ? domUtils.fillChar : "
    "; - table.insertBefore(caption, table.firstChild); - var range = this.selection.getRange(); - range.setStart(caption, 0).setCursor(); - } - } - }; - UE.commands["deletecaption"] = { - queryCommandState: function() { - var rng = this.selection.getRange(), - table = domUtils.findParentByTagName(rng.startContainer, "table"); - if (table) { - return table.getElementsByTagName("caption").length == 0 ? -1 : 1; - } - return -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - table = domUtils.findParentByTagName(rng.startContainer, "table"); - if (table) { - domUtils.remove(table.getElementsByTagName("caption")[0]); - var range = this.selection.getRange(); - range.setStart(table.rows[0].cells[0], 0).setCursor(); - } - } - }; - UE.commands["inserttitle"] = { - queryCommandState: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var firstRow = table.rows[0]; - return firstRow.cells[ - firstRow.cells.length - 1 - ].tagName.toLowerCase() != "th" - ? 0 - : -1; - } - return -1; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - if (table) { - getUETable(table).insertRow(0, "th"); - } - var th = table.getElementsByTagName("th")[0]; - this.selection.getRange().setStart(th, 0).setCursor(false, true); - } - }; - UE.commands["deletetitle"] = { - queryCommandState: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var firstRow = table.rows[0]; - return firstRow.cells[ - firstRow.cells.length - 1 - ].tagName.toLowerCase() == "th" - ? 0 - : -1; - } - return -1; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - if (table) { - domUtils.remove(table.rows[0]); - } - var td = table.getElementsByTagName("td")[0]; - this.selection.getRange().setStart(td, 0).setCursor(false, true); - } - }; - UE.commands["inserttitlecol"] = { - queryCommandState: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var lastRow = table.rows[table.rows.length - 1]; - return lastRow.getElementsByTagName("th").length ? -1 : 0; - } - return -1; - }, - execCommand: function(cmd) { - var table = getTableItemsByRange(this).table; - if (table) { - getUETable(table).insertCol(0, "th"); - } - resetTdWidth(table, this); - var th = table.getElementsByTagName("th")[0]; - this.selection.getRange().setStart(th, 0).setCursor(false, true); - } - }; - UE.commands["deletetitlecol"] = { - queryCommandState: function() { - var table = getTableItemsByRange(this).table; - if (table) { - var lastRow = table.rows[table.rows.length - 1]; - return lastRow.getElementsByTagName("th").length ? 0 : -1; - } - return -1; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - if (table) { - for (var i = 0; i < table.rows.length; i++) { - domUtils.remove(table.rows[i].children[0]); - } - } - resetTdWidth(table, this); - var td = table.getElementsByTagName("td")[0]; - this.selection.getRange().setStart(td, 0).setCursor(false, true); - } - }; - - UE.commands["mergeright"] = { - queryCommandState: function(cmd) { - var tableItems = getTableItemsByRange(this), - table = tableItems.table, - cell = tableItems.cell; - - if (!table || !cell) return -1; - var ut = getUETable(table); - if (ut.selectedTds.length) return -1; - - var cellInfo = ut.getCellInfo(cell), - rightColIndex = cellInfo.colIndex + cellInfo.colSpan; - if (rightColIndex >= ut.colsNum) return -1; // 如果处于最右边则不能向右合并 - - var rightCellInfo = ut.indexTable[cellInfo.rowIndex][rightColIndex], - rightCell = - table.rows[rightCellInfo.rowIndex].cells[rightCellInfo.cellIndex]; - if (!rightCell || cell.tagName != rightCell.tagName) return -1; // TH和TD不能相互合并 - - // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并 - return rightCellInfo.rowIndex == cellInfo.rowIndex && - rightCellInfo.rowSpan == cellInfo.rowSpan - ? 0 - : -1; - }, - execCommand: function(cmd) { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell); - ut.mergeRight(cell); - rng.moveToBookmark(bk).select(); - } - }; - UE.commands["mergedown"] = { - queryCommandState: function(cmd) { - var tableItems = getTableItemsByRange(this), - table = tableItems.table, - cell = tableItems.cell; - - if (!table || !cell) return -1; - var ut = getUETable(table); - if (ut.selectedTds.length) return -1; - - var cellInfo = ut.getCellInfo(cell), - downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan; - if (downRowIndex >= ut.rowsNum) return -1; // 如果处于最下边则不能向下合并 - - var downCellInfo = ut.indexTable[downRowIndex][cellInfo.colIndex], - downCell = - table.rows[downCellInfo.rowIndex].cells[downCellInfo.cellIndex]; - if (!downCell || cell.tagName != downCell.tagName) return -1; // TH和TD不能相互合并 - - // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并 - return downCellInfo.colIndex == cellInfo.colIndex && - downCellInfo.colSpan == cellInfo.colSpan - ? 0 - : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell); - ut.mergeDown(cell); - rng.moveToBookmark(bk).select(); - } - }; - UE.commands["mergecells"] = { - queryCommandState: function() { - return getUETableBySelected(this) ? 0 : -1; - }, - execCommand: function() { - var ut = getUETableBySelected(this); - if (ut && ut.selectedTds.length) { - var cell = ut.selectedTds[0]; - ut.mergeRange(); - var rng = this.selection.getRange(); - if (domUtils.isEmptyBlock(cell)) { - rng.setStart(cell, 0).collapse(true); - } else { - rng.selectNodeContents(cell); - } - rng.select(); - } - } - }; - UE.commands["insertrow"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - return cell && - (cell.tagName == "TD" || - (cell.tagName == "TH" && - tableItems.tr !== tableItems.table.rows[0])) && - getUETable(tableItems.table).rowsNum < this.options.maxRowNum - ? 0 - : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell, - table = tableItems.table, - ut = getUETable(table), - cellInfo = ut.getCellInfo(cell); - //ut.insertRow(!ut.selectedTds.length ? cellInfo.rowIndex:ut.cellsRange.beginRowIndex,''); - if (!ut.selectedTds.length) { - ut.insertRow(cellInfo.rowIndex, cell); - } else { - var range = ut.cellsRange; - for ( - var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; - i < len; - i++ - ) { - ut.insertRow(range.beginRowIndex, cell); - } - } - rng.moveToBookmark(bk).select(); - if (table.getAttribute("interlaced") === "enabled") - this.fireEvent("interlacetable", table); - } - }; - //后插入行 - UE.commands["insertrownext"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - return cell && - cell.tagName == "TD" && - getUETable(tableItems.table).rowsNum < this.options.maxRowNum - ? 0 - : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell, - table = tableItems.table, - ut = getUETable(table), - cellInfo = ut.getCellInfo(cell); - //ut.insertRow(!ut.selectedTds.length? cellInfo.rowIndex + cellInfo.rowSpan : ut.cellsRange.endRowIndex + 1,''); - if (!ut.selectedTds.length) { - ut.insertRow(cellInfo.rowIndex + cellInfo.rowSpan, cell); - } else { - var range = ut.cellsRange; - for ( - var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; - i < len; - i++ - ) { - ut.insertRow(range.endRowIndex + 1, cell); - } - } - rng.moveToBookmark(bk).select(); - if (table.getAttribute("interlaced") === "enabled") - this.fireEvent("interlacetable", table); - } - }; - UE.commands["deleterow"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this); - return tableItems.cell ? 0 : -1; - }, - execCommand: function() { - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell), - cellsRange = ut.cellsRange, - cellInfo = ut.getCellInfo(cell), - preCell = ut.getVSideCell(cell), - nextCell = ut.getVSideCell(cell, true), - rng = this.selection.getRange(); - if (utils.isEmptyObject(cellsRange)) { - ut.deleteRow(cellInfo.rowIndex); - } else { - for ( - var i = cellsRange.beginRowIndex; - i < cellsRange.endRowIndex + 1; - i++ - ) { - ut.deleteRow(cellsRange.beginRowIndex); - } - } - var table = ut.table; - if (!table.getElementsByTagName("td").length) { - var nextSibling = table.nextSibling; - domUtils.remove(table); - if (nextSibling) { - rng.setStart(nextSibling, 0).setCursor(false, true); - } - } else { - if ( - cellInfo.rowSpan == 1 || - cellInfo.rowSpan == - cellsRange.endRowIndex - cellsRange.beginRowIndex + 1 - ) { - if (nextCell || preCell) - rng.selectNodeContents(nextCell || preCell).setCursor(false, true); - } else { - var newCell = ut.getCell( - cellInfo.rowIndex, - ut.indexTable[cellInfo.rowIndex][cellInfo.colIndex].cellIndex - ); - if (newCell) rng.selectNodeContents(newCell).setCursor(false, true); - } - } - if (table.getAttribute("interlaced") === "enabled") - this.fireEvent("interlacetable", table); - } - }; - UE.commands["insertcol"] = { - queryCommandState: function(cmd) { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - return cell && - (cell.tagName == "TD" || - (cell.tagName == "TH" && cell !== tableItems.tr.cells[0])) && - getUETable(tableItems.table).colsNum < this.options.maxColNum - ? 0 - : -1; - }, - execCommand: function(cmd) { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - if (this.queryCommandState(cmd) == -1) return; - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell), - cellInfo = ut.getCellInfo(cell); - - //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex:ut.cellsRange.beginColIndex); - if (!ut.selectedTds.length) { - ut.insertCol(cellInfo.colIndex, cell); - } else { - var range = ut.cellsRange; - for ( - var i = 0, len = range.endColIndex - range.beginColIndex + 1; - i < len; - i++ - ) { - ut.insertCol(range.beginColIndex, cell); - } - } - rng.moveToBookmark(bk).select(true); - } - }; - UE.commands["insertcolnext"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - return cell && - getUETable(tableItems.table).colsNum < this.options.maxColNum - ? 0 - : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell), - cellInfo = ut.getCellInfo(cell); - //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex + cellInfo.colSpan:ut.cellsRange.endColIndex +1); - if (!ut.selectedTds.length) { - ut.insertCol(cellInfo.colIndex + cellInfo.colSpan, cell); - } else { - var range = ut.cellsRange; - for ( - var i = 0, len = range.endColIndex - range.beginColIndex + 1; - i < len; - i++ - ) { - ut.insertCol(range.endColIndex + 1, cell); - } - } - rng.moveToBookmark(bk).select(); - } - }; - - UE.commands["deletecol"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this); - return tableItems.cell ? 0 : -1; - }, - execCommand: function() { - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell), - range = ut.cellsRange, - cellInfo = ut.getCellInfo(cell), - preCell = ut.getHSideCell(cell), - nextCell = ut.getHSideCell(cell, true); - if (utils.isEmptyObject(range)) { - ut.deleteCol(cellInfo.colIndex); - } else { - for (var i = range.beginColIndex; i < range.endColIndex + 1; i++) { - ut.deleteCol(range.beginColIndex); - } - } - var table = ut.table, - rng = this.selection.getRange(); - - if (!table.getElementsByTagName("td").length) { - var nextSibling = table.nextSibling; - domUtils.remove(table); - if (nextSibling) { - rng.setStart(nextSibling, 0).setCursor(false, true); - } - } else { - if (domUtils.inDoc(cell, this.document)) { - rng.setStart(cell, 0).setCursor(false, true); - } else { - if (nextCell && domUtils.inDoc(nextCell, this.document)) { - rng.selectNodeContents(nextCell).setCursor(false, true); - } else { - if (preCell && domUtils.inDoc(preCell, this.document)) { - rng.selectNodeContents(preCell).setCursor(true, true); - } - } - } - } - } - }; - UE.commands["splittocells"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - if (!cell) return -1; - var ut = getUETable(tableItems.table); - if (ut.selectedTds.length > 0) return -1; - return cell && (cell.colSpan > 1 || cell.rowSpan > 1) ? 0 : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell); - ut.splitToCells(cell); - rng.moveToBookmark(bk).select(); - } - }; - UE.commands["splittorows"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - if (!cell) return -1; - var ut = getUETable(tableItems.table); - if (ut.selectedTds.length > 0) return -1; - return cell && cell.rowSpan > 1 ? 0 : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell); - ut.splitToRows(cell); - rng.moveToBookmark(bk).select(); - } - }; - UE.commands["splittocols"] = { - queryCommandState: function() { - var tableItems = getTableItemsByRange(this), - cell = tableItems.cell; - if (!cell) return -1; - var ut = getUETable(tableItems.table); - if (ut.selectedTds.length > 0) return -1; - return cell && cell.colSpan > 1 ? 0 : -1; - }, - execCommand: function() { - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - var cell = getTableItemsByRange(this).cell, - ut = getUETable(cell); - ut.splitToCols(cell); - rng.moveToBookmark(bk).select(); - } - }; - - UE.commands["adaptbytext"] = UE.commands["adaptbywindow"] = { - queryCommandState: function() { - return getTableItemsByRange(this).table ? 0 : -1; - }, - execCommand: function(cmd) { - var tableItems = getTableItemsByRange(this), - table = tableItems.table; - if (table) { - if (cmd == "adaptbywindow") { - resetTdWidth(table, this); - } else { - var cells = domUtils.getElementsByTagName(table, "td th"); - utils.each(cells, function(cell) { - cell.removeAttribute("width"); - }); - table.removeAttribute("width"); - } - } - } - }; - - //平均分配各列 - UE.commands["averagedistributecol"] = { - queryCommandState: function() { - var ut = getUETableBySelected(this); - if (!ut) return -1; - return ut.isFullRow() || ut.isFullCol() ? 0 : -1; - }, - execCommand: function(cmd) { - var me = this, - ut = getUETableBySelected(me); - - function getAverageWidth() { - var tb = ut.table, - averageWidth, - sumWidth = 0, - colsNum = 0, - tbAttr = getDefaultValue(me, tb); - - if (ut.isFullRow()) { - sumWidth = tb.offsetWidth; - colsNum = ut.colsNum; - } else { - var begin = ut.cellsRange.beginColIndex, - end = ut.cellsRange.endColIndex, - node; - for (var i = begin; i <= end; ) { - node = ut.selectedTds[i]; - sumWidth += node.offsetWidth; - i += node.colSpan; - colsNum += 1; - } - } - averageWidth = - Math.ceil(sumWidth / colsNum) - - tbAttr.tdBorder * 2 - - tbAttr.tdPadding * 2; - return averageWidth; - } - - function setAverageWidth(averageWidth) { - utils.each(domUtils.getElementsByTagName(ut.table, "th"), function( - node - ) { - node.setAttribute("width", ""); - }); - var cells = ut.isFullRow() - ? domUtils.getElementsByTagName(ut.table, "td") - : ut.selectedTds; - - utils.each(cells, function(node) { - if (node.colSpan == 1) { - node.setAttribute("width", averageWidth); - } - }); - } - - if (ut && ut.selectedTds.length) { - setAverageWidth(getAverageWidth()); - } - } - }; - //平均分配各行 - UE.commands["averagedistributerow"] = { - queryCommandState: function() { - var ut = getUETableBySelected(this); - if (!ut) return -1; - if (ut.selectedTds && /th/gi.test(ut.selectedTds[0].tagName)) return -1; - return ut.isFullRow() || ut.isFullCol() ? 0 : -1; - }, - execCommand: function(cmd) { - var me = this, - ut = getUETableBySelected(me); - - function getAverageHeight() { - var averageHeight, - rowNum, - sumHeight = 0, - tb = ut.table, - tbAttr = getDefaultValue(me, tb), - tdpadding = parseInt( - domUtils.getComputedStyle( - tb.getElementsByTagName("td")[0], - "padding-top" - ) - ); - - if (ut.isFullCol()) { - var captionArr = domUtils.getElementsByTagName(tb, "caption"), - thArr = domUtils.getElementsByTagName(tb, "th"), - captionHeight, - thHeight; - - if (captionArr.length > 0) { - captionHeight = captionArr[0].offsetHeight; - } - if (thArr.length > 0) { - thHeight = thArr[0].offsetHeight; - } - - sumHeight = tb.offsetHeight - (captionHeight || 0) - (thHeight || 0); - rowNum = thArr.length == 0 ? ut.rowsNum : ut.rowsNum - 1; - } else { - var begin = ut.cellsRange.beginRowIndex, - end = ut.cellsRange.endRowIndex, - count = 0, - trs = domUtils.getElementsByTagName(tb, "tr"); - for (var i = begin; i <= end; i++) { - sumHeight += trs[i].offsetHeight; - count += 1; - } - rowNum = count; - } - //ie8下是混杂模式 - if (browser.ie && browser.version < 9) { - averageHeight = Math.ceil(sumHeight / rowNum); - } else { - averageHeight = - Math.ceil(sumHeight / rowNum) - tbAttr.tdBorder * 2 - tdpadding * 2; - } - return averageHeight; - } - - function setAverageHeight(averageHeight) { - var cells = ut.isFullCol() - ? domUtils.getElementsByTagName(ut.table, "td") - : ut.selectedTds; - utils.each(cells, function(node) { - if (node.rowSpan == 1) { - node.setAttribute("height", averageHeight); - } - }); - } - - if (ut && ut.selectedTds.length) { - setAverageHeight(getAverageHeight()); - } - } - }; - - //单元格对齐方式 - UE.commands["cellalignment"] = { - queryCommandState: function() { - return getTableItemsByRange(this).table ? 0 : -1; - }, - execCommand: function(cmd, data) { - var me = this, - ut = getUETableBySelected(me); - - if (!ut) { - var start = me.selection.getStart(), - cell = - start && - domUtils.findParentByTagName(start, ["td", "th", "caption"], true); - if (!/caption/gi.test(cell.tagName)) { - domUtils.setAttributes(cell, data); - } else { - cell.style.textAlign = data.align; - cell.style.verticalAlign = data.vAlign; - } - me.selection.getRange().setCursor(true); - } else { - utils.each(ut.selectedTds, function(cell) { - domUtils.setAttributes(cell, data); - }); - } - }, - /** - * 查询当前点击的单元格的对齐状态, 如果当前已经选择了多个单元格, 则会返回所有单元格经过统一协调过后的状态 - * @see UE.UETable.getTableCellAlignState - */ - queryCommandValue: function(cmd) { - var activeMenuCell = getTableItemsByRange(this).cell; - - if (!activeMenuCell) { - activeMenuCell = getSelectedArr(this)[0]; - } - - if (!activeMenuCell) { - return null; - } else { - //获取同时选中的其他单元格 - var cells = UE.UETable.getUETable(activeMenuCell).selectedTds; - - !cells.length && (cells = activeMenuCell); - - return UE.UETable.getTableCellAlignState(cells); - } - } - }; - //表格对齐方式 - UE.commands["tablealignment"] = { - queryCommandState: function() { - if (browser.ie && browser.version < 8) { - return -1; - } - return getTableItemsByRange(this).table ? 0 : -1; - }, - execCommand: function(cmd, value) { - var me = this, - start = me.selection.getStart(), - table = start && domUtils.findParentByTagName(start, ["table"], true); - - if (table) { - table.setAttribute("align", value); - } - } - }; - - //表格属性 - UE.commands["edittable"] = { - queryCommandState: function() { - return getTableItemsByRange(this).table ? 0 : -1; - }, - execCommand: function(cmd, color) { - var rng = this.selection.getRange(), - table = domUtils.findParentByTagName(rng.startContainer, "table"); - if (table) { - var arr = domUtils - .getElementsByTagName(table, "td") - .concat( - domUtils.getElementsByTagName(table, "th"), - domUtils.getElementsByTagName(table, "caption") - ); - utils.each(arr, function(node) { - node.style.borderColor = color; - }); - } - } - }; - //单元格属性 - UE.commands["edittd"] = { - queryCommandState: function() { - return getTableItemsByRange(this).table ? 0 : -1; - }, - execCommand: function(cmd, bkColor) { - var me = this, - ut = getUETableBySelected(me); - - if (!ut) { - var start = me.selection.getStart(), - cell = - start && - domUtils.findParentByTagName(start, ["td", "th", "caption"], true); - if (cell) { - cell.style.backgroundColor = bkColor; - } - } else { - utils.each(ut.selectedTds, function(cell) { - cell.style.backgroundColor = bkColor; - }); - } - } - }; - - UE.commands["settablebackground"] = { - queryCommandState: function() { - return getSelectedArr(this).length > 1 ? 0 : -1; - }, - execCommand: function(cmd, value) { - var cells, ut; - cells = getSelectedArr(this); - ut = getUETable(cells[0]); - ut.setBackground(cells, value); - } - }; - - UE.commands["cleartablebackground"] = { - queryCommandState: function() { - var cells = getSelectedArr(this); - if (!cells.length) return -1; - for (var i = 0, cell; (cell = cells[i++]); ) { - if (cell.style.backgroundColor !== "") return 0; - } - return -1; - }, - execCommand: function() { - var cells = getSelectedArr(this), - ut = getUETable(cells[0]); - ut.removeBackground(cells); - } - }; - - UE.commands["interlacetable"] = UE.commands["uninterlacetable"] = { - queryCommandState: function(cmd) { - var table = getTableItemsByRange(this).table; - if (!table) return -1; - var interlaced = table.getAttribute("interlaced"); - if (cmd == "interlacetable") { - //TODO 待定 - //是否需要待定,如果设置,则命令只能单次执行成功,但反射具备toggle效果;否则可以覆盖前次命令,但反射将不存在toggle效果 - return interlaced === "enabled" ? -1 : 0; - } else { - return !interlaced || interlaced === "disabled" ? -1 : 0; - } - }, - execCommand: function(cmd, classList) { - var table = getTableItemsByRange(this).table; - if (cmd == "interlacetable") { - table.setAttribute("interlaced", "enabled"); - this.fireEvent("interlacetable", table, classList); - } else { - table.setAttribute("interlaced", "disabled"); - this.fireEvent("uninterlacetable", table); - } - } - }; - UE.commands["setbordervisible"] = { - queryCommandState: function(cmd) { - var table = getTableItemsByRange(this).table; - if (!table) return -1; - return 0; - }, - execCommand: function() { - var table = getTableItemsByRange(this).table; - utils.each(domUtils.getElementsByTagName(table, "td"), function(td) { - td.style.borderWidth = "1px"; - td.style.borderStyle = "solid"; - }); - } - }; - function resetTdWidth(table, editor) { - var tds = domUtils.getElementsByTagName(table, "td th"); - utils.each(tds, function(td) { - td.removeAttribute("width"); - }); - table.setAttribute( - "width", - getTableWidth(editor, true, getDefaultValue(editor, table)) - ); - var tdsWidths = []; - setTimeout(function() { - utils.each(tds, function(td) { - td.colSpan == 1 && tdsWidths.push(td.offsetWidth); - }); - utils.each(tds, function(td, i) { - td.colSpan == 1 && td.setAttribute("width", tdsWidths[i] + ""); - }); - }, 0); - } - - function getTableWidth(editor, needIEHack, defaultValue) { - var body = editor.body; - return ( - body.offsetWidth - - (needIEHack - ? parseInt(domUtils.getComputedStyle(body, "margin-left"), 10) * 2 - : 0) - - defaultValue.tableBorder * 2 - - (editor.options.offsetWidth || 0) - ); - } - - function getSelectedArr(editor) { - var cell = getTableItemsByRange(editor).cell; - if (cell) { - var ut = getUETable(cell); - return ut.selectedTds.length ? ut.selectedTds : [cell]; - } else { - return []; - } - } - })(); - - - // plugins/table.action.js - /** - * Created with JetBrains PhpStorm. - * User: taoqili - * Date: 12-10-12 - * Time: 上午10:05 - * To change this template use File | Settings | File Templates. - */ - UE.plugins["table"] = function() { - var me = this, - tabTimer = null, - //拖动计时器 - tableDragTimer = null, - //双击计时器 - tableResizeTimer = null, - //单元格最小宽度 - cellMinWidth = 5, - isInResizeBuffer = false, - //单元格边框大小 - cellBorderWidth = 5, - //鼠标偏移距离 - offsetOfTableCell = 10, - //记录在有限时间内的点击状态, 共有3个取值, 0, 1, 2。 0代表未初始化, 1代表单击了1次,2代表2次 - singleClickState = 0, - userActionStatus = null, - //双击允许的时间范围 - dblclickTime = 360, - UT = UE.UETable, - getUETable = function(tdOrTable) { - return UT.getUETable(tdOrTable); - }, - getUETableBySelected = function(editor) { - return UT.getUETableBySelected(editor); - }, - getDefaultValue = function(editor, table) { - return UT.getDefaultValue(editor, table); - }, - removeSelectedClass = function(cells) { - return UT.removeSelectedClass(cells); - }; - - function showError(e) { - // throw e; - } - me.ready(function() { - var me = this; - var orgGetText = me.selection.getText; - me.selection.getText = function() { - var table = getUETableBySelected(me); - if (table) { - var str = ""; - utils.each(table.selectedTds, function(td) { - str += td[browser.ie ? "innerText" : "textContent"]; - }); - return str; - } else { - return orgGetText.call(me.selection); - } - }; - }); - - //处理拖动及框选相关方法 - var startTd = null, //鼠标按下时的锚点td - currentTd = null, //当前鼠标经过时的td - onDrag = "", //指示当前拖动状态,其值可为"","h","v" ,分别表示未拖动状态,横向拖动状态,纵向拖动状态,用于鼠标移动过程中的判断 - onBorder = false, //检测鼠标按下时是否处在单元格边缘位置 - dragButton = null, - dragOver = false, - dragLine = null, //模拟的拖动线 - dragTd = null; //发生拖动的目标td - - var mousedown = false, - //todo 判断混乱模式 - needIEHack = true; - - me.setOpt({ - maxColNum: 20, - maxRowNum: 100, - defaultCols: 5, - defaultRows: 5, - tdvalign: "top", - cursorpath: me.options.UEDITOR_HOME_URL + "themes/default/images/cursor_", - tableDragable: false, - classList: [ - "ue-table-interlace-color-single", - "ue-table-interlace-color-double" - ] - }); - me.getUETable = getUETable; - var commands = { - deletetable: 1, - inserttable: 1, - cellvalign: 1, - insertcaption: 1, - deletecaption: 1, - inserttitle: 1, - deletetitle: 1, - mergeright: 1, - mergedown: 1, - mergecells: 1, - insertrow: 1, - insertrownext: 1, - deleterow: 1, - insertcol: 1, - insertcolnext: 1, - deletecol: 1, - splittocells: 1, - splittorows: 1, - splittocols: 1, - adaptbytext: 1, - adaptbywindow: 1, - adaptbycustomer: 1, - insertparagraph: 1, - insertparagraphbeforetable: 1, - averagedistributecol: 1, - averagedistributerow: 1 - }; - me.ready(function() { - utils.cssRule( - "table", - //选中的td上的样式 - ".selectTdClass{background-color:#edf5fa !important}" + - "table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}" + - //插入的表格的默认样式 - "table{margin-bottom:10px;border-collapse:collapse;display:table;}" + - "td,th{padding: 5px 10px;border: 1px solid #DDD;}" + - "caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}" + - "th{border-top:1px solid #BBB;background-color:#F7F7F7;}" + - "table tr.firstRow th{border-top-width:2px;}" + - ".ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }" + - "td p{margin:0;padding:0;}", - me.document - ); - - var tableCopyList, isFullCol, isFullRow; - //注册del/backspace事件 - me.addListener("keydown", function(cmd, evt) { - var me = this; - var keyCode = evt.keyCode || evt.which; - - if (keyCode == 8) { - var ut = getUETableBySelected(me); - if (ut && ut.selectedTds.length) { - if (ut.isFullCol()) { - me.execCommand("deletecol"); - } else if (ut.isFullRow()) { - me.execCommand("deleterow"); - } else { - me.fireEvent("delcells"); - } - domUtils.preventDefault(evt); - } - - var caption = domUtils.findParentByTagName( - me.selection.getStart(), - "caption", - true - ), - range = me.selection.getRange(); - if (range.collapsed && caption && isEmptyBlock(caption)) { - me.fireEvent("saveScene"); - var table = caption.parentNode; - domUtils.remove(caption); - if (table) { - range.setStart(table.rows[0].cells[0], 0).setCursor(false, true); - } - me.fireEvent("saveScene"); - } - } - - if (keyCode == 46) { - ut = getUETableBySelected(me); - if (ut) { - me.fireEvent("saveScene"); - for (var i = 0, ci; (ci = ut.selectedTds[i++]); ) { - domUtils.fillNode(me.document, ci); - } - me.fireEvent("saveScene"); - domUtils.preventDefault(evt); - } - } - if (keyCode == 13) { - var rng = me.selection.getRange(), - caption = domUtils.findParentByTagName( - rng.startContainer, - "caption", - true - ); - if (caption) { - var table = domUtils.findParentByTagName(caption, "table"); - if (!rng.collapsed) { - rng.deleteContents(); - me.fireEvent("saveScene"); - } else { - if (caption) { - rng.setStart(table.rows[0].cells[0], 0).setCursor(false, true); - } - } - domUtils.preventDefault(evt); - return; - } - if (rng.collapsed) { - var table = domUtils.findParentByTagName(rng.startContainer, "table"); - if (table) { - var cell = table.rows[0].cells[0], - start = domUtils.findParentByTagName( - me.selection.getStart(), - ["td", "th"], - true - ), - preNode = table.previousSibling; - if ( - cell === start && - (!preNode || - (preNode.nodeType == 1 && preNode.tagName == "TABLE")) && - domUtils.isStartInblock(rng) - ) { - var first = domUtils.findParent( - me.selection.getStart(), - function(n) { - return domUtils.isBlockElm(n); - }, - true - ); - if ( - first && - (/t(h|d)/i.test(first.tagName) || first === start.firstChild) - ) { - me.execCommand("insertparagraphbeforetable"); - domUtils.preventDefault(evt); - } - } - } - } - } - - if ((evt.ctrlKey || evt.metaKey) && evt.keyCode == "67") { - tableCopyList = null; - var ut = getUETableBySelected(me); - if (ut) { - var tds = ut.selectedTds; - isFullCol = ut.isFullCol(); - isFullRow = ut.isFullRow(); - tableCopyList = [[ut.cloneCell(tds[0], null, true)]]; - for (var i = 1, ci; (ci = tds[i]); i++) { - if (ci.parentNode !== tds[i - 1].parentNode) { - tableCopyList.push([ut.cloneCell(ci, null, true)]); - } else { - tableCopyList[tableCopyList.length - 1].push( - ut.cloneCell(ci, null, true) - ); - } - } - } - } - }); - me.addListener("tablehasdeleted", function() { - toggleDraggableState(this, false, "", null); - if (dragButton) domUtils.remove(dragButton); - }); - - me.addListener("beforepaste", function(cmd, html) { - var me = this; - var rng = me.selection.getRange(); - if (domUtils.findParentByTagName(rng.startContainer, "caption", true)) { - var div = me.document.createElement("div"); - div.innerHTML = html.html; - //trace:3729 - html.html = div[browser.ie9below ? "innerText" : "textContent"]; - return; - } - var table = getUETableBySelected(me); - if (tableCopyList) { - me.fireEvent("saveScene"); - var rng = me.selection.getRange(); - var td = domUtils.findParentByTagName( - rng.startContainer, - ["td", "th"], - true - ), - tmpNode, - preNode; - if (td) { - var ut = getUETable(td); - if (isFullRow) { - var rowIndex = ut.getCellInfo(td).rowIndex; - if (td.tagName == "TH") { - rowIndex++; - } - for (var i = 0, ci; (ci = tableCopyList[i++]); ) { - var tr = ut.insertRow(rowIndex++, "td"); - for (var j = 0, cj; (cj = ci[j]); j++) { - var cell = tr.cells[j]; - if (!cell) { - cell = tr.insertCell(j); - } - cell.innerHTML = cj.innerHTML; - cj.getAttribute("width") && - cell.setAttribute("width", cj.getAttribute("width")); - cj.getAttribute("vAlign") && - cell.setAttribute("vAlign", cj.getAttribute("vAlign")); - cj.getAttribute("align") && - cell.setAttribute("align", cj.getAttribute("align")); - cj.style.cssText && (cell.style.cssText = cj.style.cssText); - } - for (var j = 0, cj; (cj = tr.cells[j]); j++) { - if (!ci[j]) break; - cj.innerHTML = ci[j].innerHTML; - ci[j].getAttribute("width") && - cj.setAttribute("width", ci[j].getAttribute("width")); - ci[j].getAttribute("vAlign") && - cj.setAttribute("vAlign", ci[j].getAttribute("vAlign")); - ci[j].getAttribute("align") && - cj.setAttribute("align", ci[j].getAttribute("align")); - ci[j].style.cssText && (cj.style.cssText = ci[j].style.cssText); - } - } - } else { - if (isFullCol) { - cellInfo = ut.getCellInfo(td); - var maxColNum = 0; - for (var j = 0, ci = tableCopyList[0], cj; (cj = ci[j++]); ) { - maxColNum += cj.colSpan || 1; - } - me.__hasEnterExecCommand = true; - for (i = 0; i < maxColNum; i++) { - me.execCommand("insertcol"); - } - me.__hasEnterExecCommand = false; - td = ut.table.rows[0].cells[cellInfo.cellIndex]; - if (td.tagName == "TH") { - td = ut.table.rows[1].cells[cellInfo.cellIndex]; - } - } - for (var i = 0, ci; (ci = tableCopyList[i++]); ) { - tmpNode = td; - for (var j = 0, cj; (cj = ci[j++]); ) { - if (td) { - td.innerHTML = cj.innerHTML; - //todo 定制处理 - cj.getAttribute("width") && - td.setAttribute("width", cj.getAttribute("width")); - cj.getAttribute("vAlign") && - td.setAttribute("vAlign", cj.getAttribute("vAlign")); - cj.getAttribute("align") && - td.setAttribute("align", cj.getAttribute("align")); - cj.style.cssText && (td.style.cssText = cj.style.cssText); - preNode = td; - td = td.nextSibling; - } else { - var cloneTd = cj.cloneNode(true); - domUtils.removeAttributes(cloneTd, [ - "class", - "rowSpan", - "colSpan" - ]); - - preNode.parentNode.appendChild(cloneTd); - } - } - td = ut.getNextCell(tmpNode, true, true); - if (!tableCopyList[i]) break; - if (!td) { - var cellInfo = ut.getCellInfo(tmpNode); - ut.table.insertRow(ut.table.rows.length); - ut.update(); - td = ut.getVSideCell(tmpNode, true); - } - } - } - ut.update(); - } else { - table = me.document.createElement("table"); - for (var i = 0, ci; (ci = tableCopyList[i++]); ) { - var tr = table.insertRow(table.rows.length); - for (var j = 0, cj; (cj = ci[j++]); ) { - cloneTd = UT.cloneCell(cj, null, true); - domUtils.removeAttributes(cloneTd, ["class"]); - tr.appendChild(cloneTd); - } - if (j == 2 && cloneTd.rowSpan > 1) { - cloneTd.rowSpan = 1; - } - } - - var defaultValue = getDefaultValue(me), - width = - me.body.offsetWidth - - (needIEHack - ? parseInt( - domUtils.getComputedStyle(me.body, "margin-left"), - 10 - ) * 2 - : 0) - - defaultValue.tableBorder * 2 - - (me.options.offsetWidth || 0); - me.execCommand( - "insertHTML", - "" + - table.innerHTML - .replace(/>\s*<") - .replace(/\bth\b/gi, "td") + - "
    " - ); - } - me.fireEvent("contentchange"); - me.fireEvent("saveScene"); - html.html = ""; - return true; - } else { - var div = me.document.createElement("div"), - tables; - div.innerHTML = html.html; - tables = div.getElementsByTagName("table"); - if (domUtils.findParentByTagName(me.selection.getStart(), "table")) { - utils.each(tables, function(t) { - domUtils.remove(t); - }); - if ( - domUtils.findParentByTagName( - me.selection.getStart(), - "caption", - true - ) - ) { - div.innerHTML = div[browser.ie ? "innerText" : "textContent"]; - } - } else { - utils.each(tables, function(table) { - removeStyleSize(table, true); - domUtils.removeAttributes(table, ["style", "border"]); - utils.each(domUtils.getElementsByTagName(table, "td"), function( - td - ) { - if (isEmptyBlock(td)) { - domUtils.fillNode(me.document, td); - } - removeStyleSize(td, true); - // domUtils.removeAttributes(td, ['style']) - }); - }); - } - html.html = div.innerHTML; - } - }); - - me.addListener("afterpaste", function() { - utils.each(domUtils.getElementsByTagName(me.body, "table"), function( - table - ) { - if (table.offsetWidth > me.body.offsetWidth) { - var defaultValue = getDefaultValue(me, table); - table.style.width = - me.body.offsetWidth - - (needIEHack - ? parseInt( - domUtils.getComputedStyle(me.body, "margin-left"), - 10 - ) * 2 - : 0) - - defaultValue.tableBorder * 2 - - (me.options.offsetWidth || 0) + - "px"; - } - }); - }); - me.addListener("blur", function() { - tableCopyList = null; - }); - var timer; - me.addListener("keydown", function() { - clearTimeout(timer); - timer = setTimeout(function() { - var rng = me.selection.getRange(), - cell = domUtils.findParentByTagName( - rng.startContainer, - ["th", "td"], - true - ); - if (cell) { - var table = cell.parentNode.parentNode.parentNode; - if (table.offsetWidth > table.getAttribute("width")) { - cell.style.wordBreak = "break-all"; - } - } - }, 100); - }); - me.addListener("selectionchange", function() { - toggleDraggableState(me, false, "", null); - }); - - //内容变化时触发索引更新 - //todo 可否考虑标记检测,如果不涉及表格的变化就不进行索引重建和更新 - me.addListener("contentchange", function() { - var me = this; - //尽可能排除一些不需要更新的状况 - hideDragLine(me); - if (getUETableBySelected(me)) return; - var rng = me.selection.getRange(); - var start = rng.startContainer; - start = domUtils.findParentByTagName(start, ["td", "th"], true); - utils.each(domUtils.getElementsByTagName(me.document, "table"), function( - table - ) { - if (me.fireEvent("excludetable", table) === true) return; - table.ueTable = new UT(table); - //trace:3742 - // utils.each(domUtils.getElementsByTagName(me.document, 'td'), function (td) { - // - // if (domUtils.isEmptyBlock(td) && td !== start) { - // domUtils.fillNode(me.document, td); - // if (browser.ie && browser.version == 6) { - // td.innerHTML = ' ' - // } - // } - // }); - // utils.each(domUtils.getElementsByTagName(me.document, 'th'), function (th) { - // if (domUtils.isEmptyBlock(th) && th !== start) { - // domUtils.fillNode(me.document, th); - // if (browser.ie && browser.version == 6) { - // th.innerHTML = ' ' - // } - // } - // }); - table.onmouseover = function() { - me.fireEvent("tablemouseover", table); - }; - table.onmousemove = function() { - me.fireEvent("tablemousemove", table); - me.options.tableDragable && toggleDragButton(true, this, me); - utils.defer(function() { - me.fireEvent("contentchange", 50); - }, true); - }; - table.onmouseout = function() { - me.fireEvent("tablemouseout", table); - toggleDraggableState(me, false, "", null); - hideDragLine(me); - }; - table.onclick = function(evt) { - evt = me.window.event || evt; - var target = getParentTdOrTh(evt.target || evt.srcElement); - if (!target) return; - var ut = getUETable(target), - table = ut.table, - cellInfo = ut.getCellInfo(target), - cellsRange, - rng = me.selection.getRange(); - // if ("topLeft" == inPosition(table, mouseCoords(evt))) { - // cellsRange = ut.getCellsRange(ut.table.rows[0].cells[0], ut.getLastCell()); - // ut.setSelected(cellsRange); - // return; - // } - // if ("bottomRight" == inPosition(table, mouseCoords(evt))) { - // - // return; - // } - if (inTableSide(table, target, evt, true)) { - var endTdCol = ut.getCell( - ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].rowIndex, - ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].cellIndex - ); - if (evt.shiftKey && ut.selectedTds.length) { - if (ut.selectedTds[0] !== endTdCol) { - cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdCol); - ut.setSelected(cellsRange); - } else { - rng && rng.selectNodeContents(endTdCol).select(); - } - } else { - if (target !== endTdCol) { - cellsRange = ut.getCellsRange(target, endTdCol); - ut.setSelected(cellsRange); - } else { - rng && rng.selectNodeContents(endTdCol).select(); - } - } - return; - } - if (inTableSide(table, target, evt)) { - var endTdRow = ut.getCell( - ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].rowIndex, - ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].cellIndex - ); - if (evt.shiftKey && ut.selectedTds.length) { - if (ut.selectedTds[0] !== endTdRow) { - cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdRow); - ut.setSelected(cellsRange); - } else { - rng && rng.selectNodeContents(endTdRow).select(); - } - } else { - if (target !== endTdRow) { - cellsRange = ut.getCellsRange(target, endTdRow); - ut.setSelected(cellsRange); - } else { - rng && rng.selectNodeContents(endTdRow).select(); - } - } - } - }; - }); - - switchBorderColor(me, true); - }); - - domUtils.on(me.document, "mousemove", mouseMoveEvent); - - domUtils.on(me.document, "mouseout", function(evt) { - var target = evt.target || evt.srcElement; - if (target.tagName == "TABLE") { - toggleDraggableState(me, false, "", null); - } - }); - /** - * 表格隔行变色 - */ - me.addListener("interlacetable", function(type, table, classList) { - if (!table) return; - var me = this, - rows = table.rows, - len = rows.length, - getClass = function(list, index, repeat) { - return list[index] - ? list[index] - : repeat ? list[index % list.length] : ""; - }; - for (var i = 0; i < len; i++) { - rows[i].className = getClass( - classList || me.options.classList, - i, - true - ); - } - }); - me.addListener("uninterlacetable", function(type, table) { - if (!table) return; - var me = this, - rows = table.rows, - classList = me.options.classList, - len = rows.length; - for (var i = 0; i < len; i++) { - domUtils.removeClasses(rows[i], classList); - } - }); - - me.addListener("mousedown", mouseDownEvent); - me.addListener("mouseup", mouseUpEvent); - //拖动的时候触发mouseup - domUtils.on(me.body, "dragstart", function(evt) { - mouseUpEvent.call(me, "dragstart", evt); - }); - me.addOutputRule(function(root) { - utils.each(root.getNodesByTagName("div"), function(n) { - if (n.getAttr("id") == "ue_tableDragLine") { - n.parentNode.removeChild(n); - } - }); - }); - - var currentRowIndex = 0; - me.addListener("mousedown", function() { - currentRowIndex = 0; - }); - me.addListener("tabkeydown", function() { - var range = this.selection.getRange(), - common = range.getCommonAncestor(true, true), - table = domUtils.findParentByTagName(common, "table"); - if (table) { - if (domUtils.findParentByTagName(common, "caption", true)) { - var cell = domUtils.getElementsByTagName(table, "th td"); - if (cell && cell.length) { - range.setStart(cell[0], 0).setCursor(false, true); - } - } else { - var cell = domUtils.findParentByTagName(common, ["td", "th"], true), - ua = getUETable(cell); - currentRowIndex = cell.rowSpan > 1 - ? currentRowIndex - : ua.getCellInfo(cell).rowIndex; - var nextCell = ua.getTabNextCell(cell, currentRowIndex); - if (nextCell) { - if (isEmptyBlock(nextCell)) { - range.setStart(nextCell, 0).setCursor(false, true); - } else { - range.selectNodeContents(nextCell).select(); - } - } else { - me.fireEvent("saveScene"); - me.__hasEnterExecCommand = true; - this.execCommand("insertrownext"); - me.__hasEnterExecCommand = false; - range = this.selection.getRange(); - range - .setStart(table.rows[table.rows.length - 1].cells[0], 0) - .setCursor(); - me.fireEvent("saveScene"); - } - } - return true; - } - }); - browser.ie && - me.addListener("selectionchange", function() { - toggleDraggableState(this, false, "", null); - }); - me.addListener("keydown", function(type, evt) { - var me = this; - //处理在表格的最后一个输入tab产生新的表格 - var keyCode = evt.keyCode || evt.which; - if (keyCode == 8 || keyCode == 46) { - return; - } - var notCtrlKey = - !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey; - notCtrlKey && - removeSelectedClass(domUtils.getElementsByTagName(me.body, "td")); - var ut = getUETableBySelected(me); - if (!ut) return; - notCtrlKey && ut.clearSelected(); - }); - - me.addListener("beforegetcontent", function() { - switchBorderColor(this, false); - browser.ie && - utils.each(this.document.getElementsByTagName("caption"), function(ci) { - if (domUtils.isEmptyNode(ci)) { - ci.innerHTML = " "; - } - }); - }); - me.addListener("aftergetcontent", function() { - switchBorderColor(this, true); - }); - me.addListener("getAllHtml", function() { - removeSelectedClass(me.document.getElementsByTagName("td")); - }); - //修正全屏状态下插入的表格宽度在非全屏状态下撑开编辑器的情况 - me.addListener("fullscreenchanged", function(type, fullscreen) { - if (!fullscreen) { - var ratio = this.body.offsetWidth / document.body.offsetWidth, - tables = domUtils.getElementsByTagName(this.body, "table"); - utils.each(tables, function(table) { - if (table.offsetWidth < me.body.offsetWidth) return false; - var tds = domUtils.getElementsByTagName(table, "td"), - backWidths = []; - utils.each(tds, function(td) { - backWidths.push(td.offsetWidth); - }); - for (var i = 0, td; (td = tds[i]); i++) { - td.setAttribute("width", Math.floor(backWidths[i] * ratio)); - } - table.setAttribute( - "width", - Math.floor(getTableWidth(me, needIEHack, getDefaultValue(me))) - ); - }); - } - }); - - //重写execCommand命令,用于处理框选时的处理 - var oldExecCommand = me.execCommand; - me.execCommand = function(cmd, datatat) { - var me = this, - args = arguments; - - cmd = cmd.toLowerCase(); - var ut = getUETableBySelected(me), - tds, - range = new dom.Range(me.document), - cmdFun = me.commands[cmd] || UE.commands[cmd], - result; - if (!cmdFun) return; - if ( - ut && - !commands[cmd] && - !cmdFun.notNeedUndo && - !me.__hasEnterExecCommand - ) { - me.__hasEnterExecCommand = true; - me.fireEvent("beforeexeccommand", cmd); - tds = ut.selectedTds; - var lastState = -2, - lastValue = -2, - value, - state; - for (var i = 0, td; (td = tds[i]); i++) { - if (isEmptyBlock(td)) { - range.setStart(td, 0).setCursor(false, true); - } else { - range.selectNode(td).select(true); - } - state = me.queryCommandState(cmd); - value = me.queryCommandValue(cmd); - if (state != -1) { - if (lastState !== state || lastValue !== value) { - me._ignoreContentChange = true; - result = oldExecCommand.apply(me, arguments); - me._ignoreContentChange = false; - } - lastState = me.queryCommandState(cmd); - lastValue = me.queryCommandValue(cmd); - if (domUtils.isEmptyBlock(td)) { - domUtils.fillNode(me.document, td); - } - } - } - range.setStart(tds[0], 0).shrinkBoundary(true).setCursor(false, true); - me.fireEvent("contentchange"); - me.fireEvent("afterexeccommand", cmd); - me.__hasEnterExecCommand = false; - me._selectionChange(); - } else { - result = oldExecCommand.apply(me, arguments); - } - return result; - }; - }); - /** - * 删除obj的宽高style,改成属性宽高 - * @param obj - * @param replaceToProperty - */ - function removeStyleSize(obj, replaceToProperty) { - removeStyle(obj, "width", true); - removeStyle(obj, "height", true); - } - - function removeStyle(obj, styleName, replaceToProperty) { - if (obj.style[styleName]) { - replaceToProperty && - obj.setAttribute(styleName, parseInt(obj.style[styleName], 10)); - obj.style[styleName] = ""; - } - } - - function getParentTdOrTh(ele) { - if (ele.tagName == "TD" || ele.tagName == "TH") return ele; - var td; - if ( - (td = - domUtils.findParentByTagName(ele, "td", true) || - domUtils.findParentByTagName(ele, "th", true)) - ) - return td; - return null; - } - - function isEmptyBlock(node) { - var reg = new RegExp(domUtils.fillChar, "g"); - if ( - node[browser.ie ? "innerText" : "textContent"] - .replace(/^\s*$/, "") - .replace(reg, "").length > 0 - ) { - return 0; - } - for (var n in dtd.$isNotEmpty) { - if (node.getElementsByTagName(n).length) { - return 0; - } - } - return 1; - } - - function mouseCoords(evt) { - if (evt.pageX || evt.pageY) { - return { x: evt.pageX, y: evt.pageY }; - } - return { - x: - evt.clientX + me.document.body.scrollLeft - me.document.body.clientLeft, - y: evt.clientY + me.document.body.scrollTop - me.document.body.clientTop - }; - } - - function mouseMoveEvent(evt) { - if (isEditorDisabled()) { - return; - } - - try { - //普通状态下鼠标移动 - var target = getParentTdOrTh(evt.target || evt.srcElement), - pos; - - //区分用户的行为是拖动还是双击 - if (isInResizeBuffer) { - me.body.style.webkitUserSelect = "none"; - - if ( - Math.abs(userActionStatus.x - evt.clientX) > offsetOfTableCell || - Math.abs(userActionStatus.y - evt.clientY) > offsetOfTableCell - ) { - clearTableDragTimer(); - isInResizeBuffer = false; - singleClickState = 0; - //drag action - tableBorderDrag(evt); - } - } - - //修改单元格大小时的鼠标移动 - if (onDrag && dragTd) { - singleClickState = 0; - me.body.style.webkitUserSelect = "none"; - me.selection.getNative()[ - browser.ie9below ? "empty" : "removeAllRanges" - ](); - pos = mouseCoords(evt); - toggleDraggableState(me, true, onDrag, pos, target); - if (onDrag == "h") { - dragLine.style.left = getPermissionX(dragTd, evt) + "px"; - } else if (onDrag == "v") { - dragLine.style.top = getPermissionY(dragTd, evt) + "px"; - } - return; - } - //当鼠标处于table上时,修改移动过程中的光标状态 - if (target) { - //针对使用table作为容器的组件不触发拖拽效果 - if (me.fireEvent("excludetable", target) === true) return; - pos = mouseCoords(evt); - var state = getRelation(target, pos), - table = domUtils.findParentByTagName(target, "table", true); - - if (inTableSide(table, target, evt, true)) { - if (me.fireEvent("excludetable", table) === true) return; - me.body.style.cursor = - "url(" + me.options.cursorpath + "h.png),pointer"; - } else if (inTableSide(table, target, evt)) { - if (me.fireEvent("excludetable", table) === true) return; - me.body.style.cursor = - "url(" + me.options.cursorpath + "v.png),pointer"; - } else { - me.body.style.cursor = "text"; - var curCell = target; - if (/\d/.test(state)) { - state = state.replace(/\d/, ""); - target = getUETable(target).getPreviewCell(target, state == "v"); - } - //位于第一行的顶部或者第一列的左边时不可拖动 - toggleDraggableState( - me, - target ? !!state : false, - target ? state : "", - pos, - target - ); - } - } else { - toggleDragButton(false, table, me); - } - } catch (e) { - showError(e); - } - } - - var dragButtonTimer; - - function toggleDragButton(show, table, editor) { - if (!show) { - if (dragOver) return; - dragButtonTimer = setTimeout(function() { - !dragOver && - dragButton && - dragButton.parentNode && - dragButton.parentNode.removeChild(dragButton); - }, 2000); - } else { - createDragButton(table, editor); - } - } - - function createDragButton(table, editor) { - var pos = domUtils.getXY(table), - doc = table.ownerDocument; - if (dragButton && dragButton.parentNode) return dragButton; - dragButton = doc.createElement("div"); - dragButton.contentEditable = false; - dragButton.innerHTML = ""; - dragButton.style.cssText = - "width:15px;height:15px;background-image:url(" + - editor.options.UEDITOR_HOME_URL + - "dialogs/table/dragicon.png);position: absolute;cursor:move;top:" + - (pos.y - 15) + - "px;left:" + - pos.x + - "px;"; - domUtils.unSelectable(dragButton); - dragButton.onmouseover = function(evt) { - dragOver = true; - }; - dragButton.onmouseout = function(evt) { - dragOver = false; - }; - domUtils.on(dragButton, "click", function(type, evt) { - doClick(evt, this); - }); - domUtils.on(dragButton, "dblclick", function(type, evt) { - doDblClick(evt); - }); - domUtils.on(dragButton, "dragstart", function(type, evt) { - domUtils.preventDefault(evt); - }); - var timer; - - function doClick(evt, button) { - // 部分浏览器下需要清理 - clearTimeout(timer); - timer = setTimeout(function() { - editor.fireEvent("tableClicked", table, button); - }, 300); - } - - function doDblClick(evt) { - clearTimeout(timer); - var ut = getUETable(table), - start = table.rows[0].cells[0], - end = ut.getLastCell(), - range = ut.getCellsRange(start, end); - editor.selection.getRange().setStart(start, 0).setCursor(false, true); - ut.setSelected(range); - } - - doc.body.appendChild(dragButton); - } - - // function inPosition(table, pos) { - // var tablePos = domUtils.getXY(table), - // width = table.offsetWidth, - // height = table.offsetHeight; - // if (pos.x - tablePos.x < 5 && pos.y - tablePos.y < 5) { - // return "topLeft"; - // } else if (tablePos.x + width - pos.x < 5 && tablePos.y + height - pos.y < 5) { - // return "bottomRight"; - // } - // } - - function inTableSide(table, cell, evt, top) { - var pos = mouseCoords(evt), - state = getRelation(cell, pos); - - if (top) { - var caption = table.getElementsByTagName("caption")[0], - capHeight = caption ? caption.offsetHeight : 0; - return state == "v1" && pos.y - domUtils.getXY(table).y - capHeight < 8; - } else { - return state == "h1" && pos.x - domUtils.getXY(table).x < 8; - } - } - - /** - * 获取拖动时允许的X轴坐标 - * @param dragTd - * @param evt - */ - function getPermissionX(dragTd, evt) { - var ut = getUETable(dragTd); - if (ut) { - var preTd = ut.getSameEndPosCells(dragTd, "x")[0], - nextTd = ut.getSameStartPosXCells(dragTd)[0], - mouseX = mouseCoords(evt).x, - left = - (preTd ? domUtils.getXY(preTd).x : domUtils.getXY(ut.table).x) + 20, - right = nextTd - ? domUtils.getXY(nextTd).x + nextTd.offsetWidth - 20 - : me.body.offsetWidth + 5 || - parseInt(domUtils.getComputedStyle(me.body, "width"), 10); - - left += cellMinWidth; - right -= cellMinWidth; - - return mouseX < left ? left : mouseX > right ? right : mouseX; - } - } - - /** - * 获取拖动时允许的Y轴坐标 - */ - function getPermissionY(dragTd, evt) { - try { - var top = domUtils.getXY(dragTd).y, - mousePosY = mouseCoords(evt).y; - return mousePosY < top ? top : mousePosY; - } catch (e) { - showError(e); - } - } - - /** - * 移动状态切换 - */ - function toggleDraggableState(editor, draggable, dir, mousePos, cell) { - try { - editor.body.style.cursor = dir == "h" - ? "col-resize" - : dir == "v" ? "row-resize" : "text"; - if (browser.ie) { - if (dir && !mousedown && !getUETableBySelected(editor)) { - getDragLine(editor, editor.document); - showDragLineAt(dir, cell); - } else { - hideDragLine(editor); - } - } - onBorder = draggable; - } catch (e) { - showError(e); - } - } - - /** - * 获取与UETable相关的resize line - * @param uetable UETable对象 - */ - function getResizeLineByUETable() { - var lineId = "_UETableResizeLine", - line = this.document.getElementById(lineId); - - if (!line) { - line = this.document.createElement("div"); - line.id = lineId; - line.contnetEditable = false; - line.setAttribute("unselectable", "on"); - - var styles = { - width: 2 * cellBorderWidth + 1 + "px", - position: "absolute", - "z-index": 100000, - cursor: "col-resize", - background: "red", - display: "none" - }; - - //切换状态 - line.onmouseout = function() { - this.style.display = "none"; - }; - - utils.extend(line.style, styles); - - this.document.body.appendChild(line); - } - - return line; - } - - /** - * 更新resize-line - */ - function updateResizeLine(cell, uetable) { - var line = getResizeLineByUETable.call(this), - table = uetable.table, - styles = { - top: domUtils.getXY(table).y + "px", - left: - domUtils.getXY(cell).x + cell.offsetWidth - cellBorderWidth + "px", - display: "block", - height: table.offsetHeight + "px" - }; - - utils.extend(line.style, styles); - } - - /** - * 显示resize-line - */ - function showResizeLine(cell) { - var uetable = getUETable(cell); - - updateResizeLine.call(this, cell, uetable); - } - - /** - * 获取鼠标与当前单元格的相对位置 - * @param ele - * @param mousePos - */ - function getRelation(ele, mousePos) { - var elePos = domUtils.getXY(ele); - - if (!elePos) { - return ""; - } - - if (elePos.x + ele.offsetWidth - mousePos.x < cellBorderWidth) { - return "h"; - } - if (mousePos.x - elePos.x < cellBorderWidth) { - return "h1"; - } - if (elePos.y + ele.offsetHeight - mousePos.y < cellBorderWidth) { - return "v"; - } - if (mousePos.y - elePos.y < cellBorderWidth) { - return "v1"; - } - return ""; - } - - function mouseDownEvent(type, evt) { - if (isEditorDisabled()) { - return; - } - - userActionStatus = { - x: evt.clientX, - y: evt.clientY - }; - - //右键菜单单独处理 - if (evt.button == 2) { - var ut = getUETableBySelected(me), - flag = false; - - if (ut) { - var td = getTargetTd(me, evt); - utils.each(ut.selectedTds, function(ti) { - if (ti === td) { - flag = true; - } - }); - if (!flag) { - removeSelectedClass(domUtils.getElementsByTagName(me.body, "th td")); - ut.clearSelected(); - } else { - td = ut.selectedTds[0]; - setTimeout(function() { - me.selection.getRange().setStart(td, 0).setCursor(false, true); - }, 0); - } - } - } else { - tableClickHander(evt); - } - } - - //清除表格的计时器 - function clearTableTimer() { - tabTimer && clearTimeout(tabTimer); - tabTimer = null; - } - - //双击收缩 - function tableDbclickHandler(evt) { - singleClickState = 0; - evt = evt || me.window.event; - var target = getParentTdOrTh(evt.target || evt.srcElement); - if (target) { - var h; - if ((h = getRelation(target, mouseCoords(evt)))) { - hideDragLine(me); - - if (h == "h1") { - h = "h"; - if ( - inTableSide( - domUtils.findParentByTagName(target, "table"), - target, - evt - ) - ) { - me.execCommand("adaptbywindow"); - } else { - target = getUETable(target).getPreviewCell(target); - if (target) { - var rng = me.selection.getRange(); - rng.selectNodeContents(target).setCursor(true, true); - } - } - } - if (h == "h") { - var ut = getUETable(target), - table = ut.table, - cells = getCellsByMoveBorder(target, table, true); - - cells = extractArray(cells, "left"); - - ut.width = ut.offsetWidth; - - var oldWidth = [], - newWidth = []; - - utils.each(cells, function(cell) { - oldWidth.push(cell.offsetWidth); - }); - - utils.each(cells, function(cell) { - cell.removeAttribute("width"); - }); - - window.setTimeout(function() { - //是否允许改变 - var changeable = true; - - utils.each(cells, function(cell, index) { - var width = cell.offsetWidth; - - if (width > oldWidth[index]) { - changeable = false; - return false; - } - - newWidth.push(width); - }); - - var change = changeable ? newWidth : oldWidth; - - utils.each(cells, function(cell, index) { - cell.width = change[index] - getTabcellSpace(); - }); - }, 0); - - // minWidth -= cellMinWidth; - // - // table.removeAttribute("width"); - // utils.each(cells, function (cell) { - // cell.style.width = ""; - // cell.width -= minWidth; - // }); - } - } - } - } - - function tableClickHander(evt) { - removeSelectedClass(domUtils.getElementsByTagName(me.body, "td th")); - //trace:3113 - //选中单元格,点击table外部,不会清掉table上挂的ueTable,会引起getUETableBySelected方法返回值 - utils.each(me.document.getElementsByTagName("table"), function(t) { - t.ueTable = null; - }); - startTd = getTargetTd(me, evt); - if (!startTd) return; - var table = domUtils.findParentByTagName(startTd, "table", true); - ut = getUETable(table); - ut && ut.clearSelected(); - - //判断当前鼠标状态 - if (!onBorder) { - me.document.body.style.webkitUserSelect = ""; - mousedown = true; - me.addListener("mouseover", mouseOverEvent); - } else { - //边框上的动作处理 - borderActionHandler(evt); - } - } - - //处理表格边框上的动作, 这里做延时处理,避免两种动作互相影响 - function borderActionHandler(evt) { - if (browser.ie) { - evt = reconstruct(evt); - } - - clearTableDragTimer(); - - //是否正在等待resize的缓冲中 - isInResizeBuffer = true; - - tableDragTimer = setTimeout(function() { - tableBorderDrag(evt); - }, dblclickTime); - } - - function extractArray(originArr, key) { - var result = [], - tmp = null; - - for (var i = 0, len = originArr.length; i < len; i++) { - tmp = originArr[i][key]; - - if (tmp) { - result.push(tmp); - } - } - - return result; - } - - function clearTableDragTimer() { - tableDragTimer && clearTimeout(tableDragTimer); - tableDragTimer = null; - } - - function reconstruct(obj) { - var attrs = [ - "pageX", - "pageY", - "clientX", - "clientY", - "srcElement", - "target" - ], - newObj = {}; - - if (obj) { - for (var i = 0, key, val; (key = attrs[i]); i++) { - val = obj[key]; - val && (newObj[key] = val); - } - } - - return newObj; - } - - //边框拖动 - function tableBorderDrag(evt) { - isInResizeBuffer = false; - - startTd = evt.target || evt.srcElement; - if (!startTd) return; - var state = getRelation(startTd, mouseCoords(evt)); - if (/\d/.test(state)) { - state = state.replace(/\d/, ""); - startTd = getUETable(startTd).getPreviewCell(startTd, state == "v"); - } - hideDragLine(me); - getDragLine(me, me.document); - me.fireEvent("saveScene"); - showDragLineAt(state, startTd); - mousedown = true; - //拖动开始 - onDrag = state; - dragTd = startTd; - } - - function mouseUpEvent(type, evt) { - if (isEditorDisabled()) { - return; - } - - clearTableDragTimer(); - - isInResizeBuffer = false; - - if (onBorder) { - singleClickState = ++singleClickState % 3; - - userActionStatus = { - x: evt.clientX, - y: evt.clientY - }; - - tableResizeTimer = setTimeout(function() { - singleClickState > 0 && singleClickState--; - }, dblclickTime); - - if (singleClickState === 2) { - singleClickState = 0; - tableDbclickHandler(evt); - return; - } - } - - if (evt.button == 2) return; - var me = this; - //清除表格上原生跨选问题 - var range = me.selection.getRange(), - start = domUtils.findParentByTagName(range.startContainer, "table", true), - end = domUtils.findParentByTagName(range.endContainer, "table", true); - - if (start || end) { - if (start === end) { - start = domUtils.findParentByTagName( - range.startContainer, - ["td", "th", "caption"], - true - ); - end = domUtils.findParentByTagName( - range.endContainer, - ["td", "th", "caption"], - true - ); - if (start !== end) { - me.selection.clearRange(); - } - } else { - me.selection.clearRange(); - } - } - mousedown = false; - me.document.body.style.webkitUserSelect = ""; - //拖拽状态下的mouseUP - if (onDrag && dragTd) { - me.selection.getNative()[ - browser.ie9below ? "empty" : "removeAllRanges" - ](); - - singleClickState = 0; - dragLine = me.document.getElementById("ue_tableDragLine"); - - // trace 3973 - if (dragLine) { - var dragTdPos = domUtils.getXY(dragTd), - dragLinePos = domUtils.getXY(dragLine); - - switch (onDrag) { - case "h": - changeColWidth(dragTd, dragLinePos.x - dragTdPos.x); - break; - case "v": - changeRowHeight( - dragTd, - dragLinePos.y - dragTdPos.y - dragTd.offsetHeight - ); - break; - default: - } - onDrag = ""; - dragTd = null; - - hideDragLine(me); - me.fireEvent("saveScene"); - return; - } - } - //正常状态下的mouseup - if (!startTd) { - var target = domUtils.findParentByTagName( - evt.target || evt.srcElement, - "td", - true - ); - if (!target) - target = domUtils.findParentByTagName( - evt.target || evt.srcElement, - "th", - true - ); - if (target && (target.tagName == "TD" || target.tagName == "TH")) { - if (me.fireEvent("excludetable", target) === true) return; - range = new dom.Range(me.document); - range.setStart(target, 0).setCursor(false, true); - } - } else { - var ut = getUETable(startTd), - cell = ut ? ut.selectedTds[0] : null; - if (cell) { - range = new dom.Range(me.document); - if (domUtils.isEmptyBlock(cell)) { - range.setStart(cell, 0).setCursor(false, true); - } else { - range - .selectNodeContents(cell) - .shrinkBoundary() - .setCursor(false, true); - } - } else { - range = me.selection.getRange().shrinkBoundary(); - if (!range.collapsed) { - var start = domUtils.findParentByTagName( - range.startContainer, - ["td", "th"], - true - ), - end = domUtils.findParentByTagName( - range.endContainer, - ["td", "th"], - true - ); - //在table里边的不能清除 - if ( - (start && !end) || - (!start && end) || - (start && end && start !== end) - ) { - range.setCursor(false, true); - } - } - } - startTd = null; - me.removeListener("mouseover", mouseOverEvent); - } - me._selectionChange(250, evt); - } - - function mouseOverEvent(type, evt) { - if (isEditorDisabled()) { - return; - } - - var me = this, - tar = evt.target || evt.srcElement; - currentTd = - domUtils.findParentByTagName(tar, "td", true) || - domUtils.findParentByTagName(tar, "th", true); - //需要判断两个TD是否位于同一个表格内 - if ( - startTd && - currentTd && - ((startTd.tagName == "TD" && currentTd.tagName == "TD") || - (startTd.tagName == "TH" && currentTd.tagName == "TH")) && - domUtils.findParentByTagName(startTd, "table") == - domUtils.findParentByTagName(currentTd, "table") - ) { - var ut = getUETable(currentTd); - if (startTd != currentTd) { - me.document.body.style.webkitUserSelect = "none"; - me.selection.getNative()[ - browser.ie9below ? "empty" : "removeAllRanges" - ](); - var range = ut.getCellsRange(startTd, currentTd); - ut.setSelected(range); - } else { - me.document.body.style.webkitUserSelect = ""; - ut.clearSelected(); - } - } - evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); - } - - function setCellHeight(cell, height, backHeight) { - var lineHight = parseInt( - domUtils.getComputedStyle(cell, "line-height"), - 10 - ), - tmpHeight = backHeight + height; - height = tmpHeight < lineHight ? lineHight : tmpHeight; - if (cell.style.height) cell.style.height = ""; - cell.rowSpan == 1 - ? cell.setAttribute("height", height) - : cell.removeAttribute && cell.removeAttribute("height"); - } - - function getWidth(cell) { - if (!cell) return 0; - return parseInt(domUtils.getComputedStyle(cell, "width"), 10); - } - - function changeColWidth(cell, changeValue) { - var ut = getUETable(cell); - if (ut) { - //根据当前移动的边框获取相关的单元格 - var table = ut.table, - cells = getCellsByMoveBorder(cell, table); - - table.style.width = ""; - table.removeAttribute("width"); - - //修正改变量 - changeValue = correctChangeValue(changeValue, cell, cells); - - if (cell.nextSibling) { - var i = 0; - - utils.each(cells, function(cellGroup) { - cellGroup.left.width = +cellGroup.left.width + changeValue; - cellGroup.right && - (cellGroup.right.width = +cellGroup.right.width - changeValue); - }); - } else { - utils.each(cells, function(cellGroup) { - cellGroup.left.width -= -changeValue; - }); - } - } - } - - function isEditorDisabled() { - return me.body.contentEditable === "false"; - } - - function changeRowHeight(td, changeValue) { - if (Math.abs(changeValue) < 10) return; - var ut = getUETable(td); - if (ut) { - var cells = ut.getSameEndPosCells(td, "y"), - //备份需要连带变化的td的原始高度,否则后期无法获取正确的值 - backHeight = cells[0] ? cells[0].offsetHeight : 0; - for (var i = 0, cell; (cell = cells[i++]); ) { - setCellHeight(cell, changeValue, backHeight); - } - } - } - - /** - * 获取调整单元格大小的相关单元格 - * @isContainMergeCell 返回的结果中是否包含发生合并后的单元格 - */ - function getCellsByMoveBorder(cell, table, isContainMergeCell) { - if (!table) { - table = domUtils.findParentByTagName(cell, "table"); - } - - if (!table) { - return null; - } - - //获取到该单元格所在行的序列号 - var index = domUtils.getNodeIndex(cell), - temp = cell, - rows = table.rows, - colIndex = 0; - - while (temp) { - //获取到当前单元格在未发生单元格合并时的序列 - if (temp.nodeType === 1) { - colIndex += temp.colSpan || 1; - } - temp = temp.previousSibling; - } - - temp = null; - - //记录想关的单元格 - var borderCells = []; - - utils.each(rows, function(tabRow) { - var cells = tabRow.cells, - currIndex = 0; - - utils.each(cells, function(tabCell) { - currIndex += tabCell.colSpan || 1; - - if (currIndex === colIndex) { - borderCells.push({ - left: tabCell, - right: tabCell.nextSibling || null - }); - - return false; - } else if (currIndex > colIndex) { - if (isContainMergeCell) { - borderCells.push({ - left: tabCell - }); - } - - return false; - } - }); - }); - - return borderCells; - } - - /** - * 通过给定的单元格集合获取最小的单元格width - */ - function getMinWidthByTableCells(cells) { - var minWidth = Number.MAX_VALUE; - - for (var i = 0, curCell; (curCell = cells[i]); i++) { - minWidth = Math.min( - minWidth, - curCell.width || getTableCellWidth(curCell) - ); - } - - return minWidth; - } - - function correctChangeValue(changeValue, relatedCell, cells) { - //为单元格的paading预留空间 - changeValue -= getTabcellSpace(); - - if (changeValue < 0) { - return 0; - } - - changeValue -= getTableCellWidth(relatedCell); - - //确定方向 - var direction = changeValue < 0 ? "left" : "right"; - - changeValue = Math.abs(changeValue); - - //只关心非最后一个单元格就可以 - utils.each(cells, function(cellGroup) { - var curCell = cellGroup[direction]; - - //为单元格保留最小空间 - if (curCell) { - changeValue = Math.min( - changeValue, - getTableCellWidth(curCell) - cellMinWidth - ); - } - }); - - //修正越界 - changeValue = changeValue < 0 ? 0 : changeValue; - - return direction === "left" ? -changeValue : changeValue; - } - - function getTableCellWidth(cell) { - var width = 0, - //偏移纠正量 - offset = 0, - width = cell.offsetWidth - getTabcellSpace(); - - //最后一个节点纠正一下 - if (!cell.nextSibling) { - width -= getTableCellOffset(cell); - } - - width = width < 0 ? 0 : width; - - try { - cell.width = width; - } catch (e) {} - - return width; - } - - /** - * 获取单元格所在表格的最末单元格的偏移量 - */ - function getTableCellOffset(cell) { - tab = domUtils.findParentByTagName(cell, "table", false); - - if (tab.offsetVal === undefined) { - var prev = cell.previousSibling; - - if (prev) { - //最后一个单元格和前一个单元格的width diff结果 如果恰好为一个border width, 则条件成立 - tab.offsetVal = cell.offsetWidth - prev.offsetWidth === UT.borderWidth - ? UT.borderWidth - : 0; - } else { - tab.offsetVal = 0; - } - } - - return tab.offsetVal; - } - - function getTabcellSpace() { - if (UT.tabcellSpace === undefined) { - var cell = null, - tab = me.document.createElement("table"), - tbody = me.document.createElement("tbody"), - trow = me.document.createElement("tr"), - tabcell = me.document.createElement("td"), - mirror = null; - - tabcell.style.cssText = "border: 0;"; - tabcell.width = 1; - - trow.appendChild(tabcell); - trow.appendChild((mirror = tabcell.cloneNode(false))); - - tbody.appendChild(trow); - - tab.appendChild(tbody); - - tab.style.cssText = "visibility: hidden;"; - - me.body.appendChild(tab); - - UT.paddingSpace = tabcell.offsetWidth - 1; - - var tmpTabWidth = tab.offsetWidth; - - tabcell.style.cssText = ""; - mirror.style.cssText = ""; - - UT.borderWidth = (tab.offsetWidth - tmpTabWidth) / 3; - - UT.tabcellSpace = UT.paddingSpace + UT.borderWidth; - - me.body.removeChild(tab); - } - - getTabcellSpace = function() { - return UT.tabcellSpace; - }; - - return UT.tabcellSpace; - } - - function getDragLine(editor, doc) { - if (mousedown) return; - dragLine = editor.document.createElement("div"); - domUtils.setAttributes(dragLine, { - id: "ue_tableDragLine", - unselectable: "on", - contenteditable: false, - onresizestart: "return false", - ondragstart: "return false", - onselectstart: "return false", - style: - "background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)" - }); - editor.body.appendChild(dragLine); - } - - function hideDragLine(editor) { - if (mousedown) return; - var line; - while ((line = editor.document.getElementById("ue_tableDragLine"))) { - domUtils.remove(line); - } - } - - /** - * 依据state(v|h)在cell位置显示横线 - * @param state - * @param cell - */ - function showDragLineAt(state, cell) { - if (!cell) return; - var table = domUtils.findParentByTagName(cell, "table"), - caption = table.getElementsByTagName("caption"), - width = table.offsetWidth, - height = - table.offsetHeight - (caption.length > 0 ? caption[0].offsetHeight : 0), - tablePos = domUtils.getXY(table), - cellPos = domUtils.getXY(cell), - css; - switch (state) { - case "h": - css = - "height:" + - height + - "px;top:" + - (tablePos.y + (caption.length > 0 ? caption[0].offsetHeight : 0)) + - "px;left:" + - (cellPos.x + cell.offsetWidth); - dragLine.style.cssText = - css + - "px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)"; - break; - case "v": - css = - "width:" + - width + - "px;left:" + - tablePos.x + - "px;top:" + - (cellPos.y + cell.offsetHeight); - //必须加上border:0和color:blue,否则低版ie不支持背景色显示 - dragLine.style.cssText = - css + - "px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)"; - break; - default: - } - } - - /** - * 当表格边框颜色为白色时设置为虚线,true为添加虚线 - * @param editor - * @param flag - */ - function switchBorderColor(editor, flag) { - var tableArr = domUtils.getElementsByTagName(editor.body, "table"), - color; - for (var i = 0, node; (node = tableArr[i++]); ) { - var td = domUtils.getElementsByTagName(node, "td"); - if (td[0]) { - if (flag) { - color = td[0].style.borderColor.replace(/\s/g, ""); - if (/(#ffffff)|(rgb\(255,255,255\))/gi.test(color)) - domUtils.addClass(node, "noBorderTable"); - } else { - domUtils.removeClasses(node, "noBorderTable"); - } - } - } - } - - function getTableWidth(editor, needIEHack, defaultValue) { - var body = editor.body; - return ( - body.offsetWidth - - (needIEHack - ? parseInt(domUtils.getComputedStyle(body, "margin-left"), 10) * 2 - : 0) - - defaultValue.tableBorder * 2 - - (editor.options.offsetWidth || 0) - ); - } - - /** - * 获取当前拖动的单元格 - */ - function getTargetTd(editor, evt) { - var target = domUtils.findParentByTagName( - evt.target || evt.srcElement, - ["td", "th"], - true - ), - dir = null; - - if (!target) { - return null; - } - - dir = getRelation(target, mouseCoords(evt)); - - //如果有前一个节点, 需要做一个修正, 否则可能会得到一个错误的td - - if (!target) { - return null; - } - - if (dir === "h1" && target.previousSibling) { - var position = domUtils.getXY(target), - cellWidth = target.offsetWidth; - - if (Math.abs(position.x + cellWidth - evt.clientX) > cellWidth / 3) { - target = target.previousSibling; - } - } else if (dir === "v1" && target.parentNode.previousSibling) { - var position = domUtils.getXY(target), - cellHeight = target.offsetHeight; - - if (Math.abs(position.y + cellHeight - evt.clientY) > cellHeight / 3) { - target = target.parentNode.previousSibling.firstChild; - } - } - - //排除了非td内部以及用于代码高亮部分的td - return target && !(editor.fireEvent("excludetable", target) === true) - ? target - : null; - } - }; - - - // plugins/table.sort.js - /** - * Created with JetBrains PhpStorm. - * User: Jinqn - * Date: 13-10-12 - * Time: 上午10:20 - * To change this template use File | Settings | File Templates. - */ - - UE.UETable.prototype.sortTable = function(sortByCellIndex, compareFn) { - var table = this.table, - rows = table.rows, - trArray = [], - flag = rows[0].cells[0].tagName === "TH", - lastRowIndex = 0; - if (this.selectedTds.length) { - var range = this.cellsRange, - len = range.endRowIndex + 1; - for (var i = range.beginRowIndex; i < len; i++) { - trArray[i] = rows[i]; - } - trArray.splice(0, range.beginRowIndex); - lastRowIndex = range.endRowIndex + 1 === this.rowsNum - ? 0 - : range.endRowIndex + 1; - } else { - for (var i = 0, len = rows.length; i < len; i++) { - trArray[i] = rows[i]; - } - } - - var Fn = { - reversecurrent: function(td1, td2) { - return 1; - }, - orderbyasc: function(td1, td2) { - var value1 = td1.innerText || td1.textContent, - value2 = td2.innerText || td2.textContent; - return value1.localeCompare(value2); - }, - reversebyasc: function(td1, td2) { - var value1 = td1.innerHTML, - value2 = td2.innerHTML; - return value2.localeCompare(value1); - }, - orderbynum: function(td1, td2) { - var value1 = td1[browser.ie ? "innerText" : "textContent"].match(/\d+/), - value2 = td2[browser.ie ? "innerText" : "textContent"].match(/\d+/); - if (value1) value1 = +value1[0]; - if (value2) value2 = +value2[0]; - return (value1 || 0) - (value2 || 0); - }, - reversebynum: function(td1, td2) { - var value1 = td1[browser.ie ? "innerText" : "textContent"].match(/\d+/), - value2 = td2[browser.ie ? "innerText" : "textContent"].match(/\d+/); - if (value1) value1 = +value1[0]; - if (value2) value2 = +value2[0]; - return (value2 || 0) - (value1 || 0); - } - }; - - //对表格设置排序的标记data-sort-type - table.setAttribute( - "data-sort-type", - compareFn && typeof compareFn === "string" && Fn[compareFn] ? compareFn : "" - ); - - //th不参与排序 - flag && trArray.splice(0, 1); - trArray = utils.sort(trArray, function(tr1, tr2) { - var result; - if (compareFn && typeof compareFn === "function") { - result = compareFn.call( - this, - tr1.cells[sortByCellIndex], - tr2.cells[sortByCellIndex] - ); - } else if (compareFn && typeof compareFn === "number") { - result = 1; - } else if (compareFn && typeof compareFn === "string" && Fn[compareFn]) { - result = Fn[compareFn].call( - this, - tr1.cells[sortByCellIndex], - tr2.cells[sortByCellIndex] - ); - } else { - result = Fn["orderbyasc"].call( - this, - tr1.cells[sortByCellIndex], - tr2.cells[sortByCellIndex] - ); - } - return result; - }); - var fragment = table.ownerDocument.createDocumentFragment(); - for (var j = 0, len = trArray.length; j < len; j++) { - fragment.appendChild(trArray[j]); - } - var tbody = table.getElementsByTagName("tbody")[0]; - if (!lastRowIndex) { - tbody.appendChild(fragment); - } else { - tbody.insertBefore( - fragment, - rows[lastRowIndex - range.endRowIndex + range.beginRowIndex - 1] - ); - } - }; - - UE.plugins["tablesort"] = function() { - var me = this, - UT = UE.UETable, - getUETable = function(tdOrTable) { - return UT.getUETable(tdOrTable); - }, - getTableItemsByRange = function(editor) { - return UT.getTableItemsByRange(editor); - }; - - me.ready(function() { - //添加表格可排序的样式 - utils.cssRule( - "tablesort", - "table.sortEnabled tr.firstRow th,table.sortEnabled tr.firstRow td{padding-right:20px;background-repeat: no-repeat;background-position: center right;" + - " background-image:url(" + - me.options.themePath + - me.options.theme + - "/images/sortable.png);}", - me.document - ); - - //做单元格合并操作时,清除可排序标识 - me.addListener("afterexeccommand", function(type, cmd) { - if (cmd == "mergeright" || cmd == "mergedown" || cmd == "mergecells") { - this.execCommand("disablesort"); - } - }); - }); - - //表格排序 - UE.commands["sorttable"] = { - queryCommandState: function() { - var me = this, - tableItems = getTableItemsByRange(me); - if (!tableItems.cell) return -1; - var table = tableItems.table, - cells = table.getElementsByTagName("td"); - for (var i = 0, cell; (cell = cells[i++]); ) { - if (cell.rowSpan != 1 || cell.colSpan != 1) return -1; - } - return 0; - }, - execCommand: function(cmd, fn) { - var me = this, - range = me.selection.getRange(), - bk = range.createBookmark(true), - tableItems = getTableItemsByRange(me), - cell = tableItems.cell, - ut = getUETable(tableItems.table), - cellInfo = ut.getCellInfo(cell); - ut.sortTable(cellInfo.cellIndex, fn); - range.moveToBookmark(bk); - try { - range.select(); - } catch (e) {} - } - }; - - //设置表格可排序,清除表格可排序 - UE.commands["enablesort"] = UE.commands["disablesort"] = { - queryCommandState: function(cmd) { - var table = getTableItemsByRange(this).table; - if (table && cmd == "enablesort") { - var cells = domUtils.getElementsByTagName(table, "th td"); - for (var i = 0; i < cells.length; i++) { - if ( - cells[i].getAttribute("colspan") > 1 || - cells[i].getAttribute("rowspan") > 1 - ) - return -1; - } - } - - return !table - ? -1 - : (cmd == "enablesort") ^ - (table.getAttribute("data-sort") != "sortEnabled") - ? -1 - : 0; - }, - execCommand: function(cmd) { - var table = getTableItemsByRange(this).table; - table.setAttribute( - "data-sort", - cmd == "enablesort" ? "sortEnabled" : "sortDisabled" - ); - cmd == "enablesort" - ? domUtils.addClass(table, "sortEnabled") - : domUtils.removeClasses(table, "sortEnabled"); - } - }; - }; - - - // plugins/contextmenu.js - ///import core - ///commands 右键菜单 - ///commandsName ContextMenu - ///commandsTitle 右键菜单 - /** - * 右键菜单 - * @function - * @name baidu.editor.plugins.contextmenu - * @author zhanyi - */ - - UE.plugins["contextmenu"] = function() { - var me = this; - - me.setOpt("enableContextMenu", me.getOpt("enableContextMenu") || true); - - if (me.getOpt("enableContextMenu") === false) { - return; - } - var lang = me.getLang("contextMenu"), - menu, - items = me.options.contextMenu || [ - { label: lang["selectall"], cmdName: "selectall" }, - { - label: lang.cleardoc, - cmdName: "cleardoc", - exec: function() { - if (confirm(lang.confirmclear)) { - this.execCommand("cleardoc"); - } - } - }, - "-", - { - label: lang.unlink, - cmdName: "unlink" - }, - "-", - { - group: lang.paragraph, - icon: "justifyjustify", - subMenu: [ - { - label: lang.justifyleft, - cmdName: "justify", - value: "left" - }, - { - label: lang.justifyright, - cmdName: "justify", - value: "right" - }, - { - label: lang.justifycenter, - cmdName: "justify", - value: "center" - }, - { - label: lang.justifyjustify, - cmdName: "justify", - value: "justify" - } - ] - }, - "-", - { - group: lang.table, - icon: "table", - subMenu: [ - { - label: lang.inserttable, - cmdName: "inserttable" - }, - { - label: lang.deletetable, - cmdName: "deletetable" - }, - "-", - { - label: lang.deleterow, - cmdName: "deleterow" - }, - { - label: lang.deletecol, - cmdName: "deletecol" - }, - { - label: lang.insertcol, - cmdName: "insertcol" - }, - { - label: lang.insertcolnext, - cmdName: "insertcolnext" - }, - { - label: lang.insertrow, - cmdName: "insertrow" - }, - { - label: lang.insertrownext, - cmdName: "insertrownext" - }, - "-", - { - label: lang.insertcaption, - cmdName: "insertcaption" - }, - { - label: lang.deletecaption, - cmdName: "deletecaption" - }, - { - label: lang.inserttitle, - cmdName: "inserttitle" - }, - { - label: lang.deletetitle, - cmdName: "deletetitle" - }, - { - label: lang.inserttitlecol, - cmdName: "inserttitlecol" - }, - { - label: lang.deletetitlecol, - cmdName: "deletetitlecol" - }, - "-", - { - label: lang.mergecells, - cmdName: "mergecells" - }, - { - label: lang.mergeright, - cmdName: "mergeright" - }, - { - label: lang.mergedown, - cmdName: "mergedown" - }, - "-", - { - label: lang.splittorows, - cmdName: "splittorows" - }, - { - label: lang.splittocols, - cmdName: "splittocols" - }, - { - label: lang.splittocells, - cmdName: "splittocells" - }, - "-", - { - label: lang.averageDiseRow, - cmdName: "averagedistributerow" - }, - { - label: lang.averageDisCol, - cmdName: "averagedistributecol" - }, - "-", - { - label: lang.edittd, - cmdName: "edittd", - exec: function() { - if (UE.ui["edittd"]) { - new UE.ui["edittd"](this); - } - this.getDialog("edittd").open(); - } - }, - { - label: lang.edittable, - cmdName: "edittable", - exec: function() { - if (UE.ui["edittable"]) { - new UE.ui["edittable"](this); - } - this.getDialog("edittable").open(); - } - }, - { - label: lang.setbordervisible, - cmdName: "setbordervisible" - } - ] - }, - { - group: lang.tablesort, - icon: "tablesort", - subMenu: [ - { - label: lang.enablesort, - cmdName: "enablesort" - }, - { - label: lang.disablesort, - cmdName: "disablesort" - }, - "-", - { - label: lang.reversecurrent, - cmdName: "sorttable", - value: "reversecurrent" - }, - { - label: lang.orderbyasc, - cmdName: "sorttable", - value: "orderbyasc" - }, - { - label: lang.reversebyasc, - cmdName: "sorttable", - value: "reversebyasc" - }, - { - label: lang.orderbynum, - cmdName: "sorttable", - value: "orderbynum" - }, - { - label: lang.reversebynum, - cmdName: "sorttable", - value: "reversebynum" - } - ] - }, - { - group: lang.borderbk, - icon: "borderBack", - subMenu: [ - { - label: lang.setcolor, - cmdName: "interlacetable", - exec: function() { - this.execCommand("interlacetable"); - } - }, - { - label: lang.unsetcolor, - cmdName: "uninterlacetable", - exec: function() { - this.execCommand("uninterlacetable"); - } - }, - { - label: lang.setbackground, - cmdName: "settablebackground", - exec: function() { - this.execCommand("settablebackground", { - repeat: true, - colorList: ["#bbb", "#ccc"] - }); - } - }, - { - label: lang.unsetbackground, - cmdName: "cleartablebackground", - exec: function() { - this.execCommand("cleartablebackground"); - } - }, - { - label: lang.redandblue, - cmdName: "settablebackground", - exec: function() { - this.execCommand("settablebackground", { - repeat: true, - colorList: ["red", "blue"] - }); - } - }, - { - label: lang.threecolorgradient, - cmdName: "settablebackground", - exec: function() { - this.execCommand("settablebackground", { - repeat: true, - colorList: ["#aaa", "#bbb", "#ccc"] - }); - } - } - ] - }, - { - group: lang.aligntd, - icon: "aligntd", - subMenu: [ - { - cmdName: "cellalignment", - value: { align: "left", vAlign: "top" } - }, - { - cmdName: "cellalignment", - value: { align: "center", vAlign: "top" } - }, - { - cmdName: "cellalignment", - value: { align: "right", vAlign: "top" } - }, - { - cmdName: "cellalignment", - value: { align: "left", vAlign: "middle" } - }, - { - cmdName: "cellalignment", - value: { align: "center", vAlign: "middle" } - }, - { - cmdName: "cellalignment", - value: { align: "right", vAlign: "middle" } - }, - { - cmdName: "cellalignment", - value: { align: "left", vAlign: "bottom" } - }, - { - cmdName: "cellalignment", - value: { align: "center", vAlign: "bottom" } - }, - { - cmdName: "cellalignment", - value: { align: "right", vAlign: "bottom" } - } - ] - }, - { - group: lang.aligntable, - icon: "aligntable", - subMenu: [ - { - cmdName: "tablealignment", - className: "left", - label: lang.tableleft, - value: "left" - }, - { - cmdName: "tablealignment", - className: "center", - label: lang.tablecenter, - value: "center" - }, - { - cmdName: "tablealignment", - className: "right", - label: lang.tableright, - value: "right" - } - ] - }, - "-", - { - label: lang.insertparagraphbefore, - cmdName: "insertparagraph", - value: true - }, - { - label: lang.insertparagraphafter, - cmdName: "insertparagraph" - }, - { - label: lang["copy"], - cmdName: "copy" - }, - { - label: lang["paste"], - cmdName: "paste" - } - ]; - if (!items.length) { - return; - } - var uiUtils = UE.ui.uiUtils; - - me.addListener("contextmenu", function(type, evt) { - var offset = uiUtils.getViewportOffsetByEvent(evt); - me.fireEvent("beforeselectionchange"); - if (menu) { - menu.destroy(); - } - for (var i = 0, ti, contextItems = []; (ti = items[i]); i++) { - var last; - (function(item) { - if (item == "-") { - if ((last = contextItems[contextItems.length - 1]) && last !== "-") { - contextItems.push("-"); - } - } else if (item.hasOwnProperty("group")) { - for (var j = 0, cj, subMenu = []; (cj = item.subMenu[j]); j++) { - (function(subItem) { - if (subItem == "-") { - if ((last = subMenu[subMenu.length - 1]) && last !== "-") { - subMenu.push("-"); - } else { - subMenu.splice(subMenu.length - 1); - } - } else { - if ( - (me.commands[subItem.cmdName] || - UE.commands[subItem.cmdName] || - subItem.query) && - (subItem.query - ? subItem.query() - : me.queryCommandState(subItem.cmdName)) > -1 - ) { - subMenu.push({ - label: - subItem.label || - me.getLang( - "contextMenu." + - subItem.cmdName + - (subItem.value || "") - ) || - "", - className: - "edui-for-" + - subItem.cmdName + - (subItem.className - ? " edui-for-" + - subItem.cmdName + - "-" + - subItem.className - : ""), - onclick: subItem.exec - ? function() { - subItem.exec.call(me); - } - : function() { - me.execCommand(subItem.cmdName, subItem.value); - } - }); - } - } - })(cj); - } - if (subMenu.length) { - function getLabel() { - switch (item.icon) { - case "table": - return me.getLang("contextMenu.table"); - case "justifyjustify": - return me.getLang("contextMenu.paragraph"); - case "aligntd": - return me.getLang("contextMenu.aligntd"); - case "aligntable": - return me.getLang("contextMenu.aligntable"); - case "tablesort": - return lang.tablesort; - case "borderBack": - return lang.borderbk; - default: - return ""; - } - } - contextItems.push({ - //todo 修正成自动获取方式 - label: getLabel(), - className: "edui-for-" + item.icon, - subMenu: { - items: subMenu, - editor: me - } - }); - } - } else { - //有可能commmand没有加载右键不能出来,或者没有command也想能展示出来添加query方法 - if ( - (me.commands[item.cmdName] || - UE.commands[item.cmdName] || - item.query) && - (item.query - ? item.query.call(me) - : me.queryCommandState(item.cmdName)) > -1 - ) { - contextItems.push({ - label: item.label || me.getLang("contextMenu." + item.cmdName), - className: - "edui-for-" + - (item.icon ? item.icon : item.cmdName + (item.value || "")), - onclick: item.exec - ? function() { - item.exec.call(me); - } - : function() { - me.execCommand(item.cmdName, item.value); - } - }); - } - } - })(ti); - } - if (contextItems[contextItems.length - 1] == "-") { - contextItems.pop(); - } - - menu = new UE.ui.Menu({ - items: contextItems, - className: "edui-contextmenu", - editor: me - }); - menu.render(); - menu.showAt(offset); - - me.fireEvent("aftershowcontextmenu", menu); - - domUtils.preventDefault(evt); - if (browser.ie) { - var ieRange; - try { - ieRange = me.selection.getNative().createRange(); - } catch (e) { - return; - } - if (ieRange.item) { - var range = new dom.Range(me.document); - range.selectNode(ieRange.item(0)).select(true, true); - } - } - }); - - // 添加复制的flash按钮 - me.addListener("aftershowcontextmenu", function(type, menu) { - if (me.zeroclipboard) { - var items = menu.items; - for (var key in items) { - if (items[key].className == "edui-for-copy") { - me.zeroclipboard.clip(items[key].getDom()); - } - } - } - }); - }; - - - // plugins/shortcutmenu.js - ///import core - ///commands 弹出菜单 - // commandsName popupmenu - ///commandsTitle 弹出菜单 - /** - * 弹出菜单 - * @function - * @name baidu.editor.plugins.popupmenu - * @author xuheng - */ - - UE.plugins["shortcutmenu"] = function() { - var me = this, - menu, - items = me.options.shortcutMenu || []; - - if (!items.length) { - return; - } - - me.addListener("contextmenu mouseup", function(type, e) { - var me = this, - customEvt = { - type: type, - target: e.target || e.srcElement, - screenX: e.screenX, - screenY: e.screenY, - clientX: e.clientX, - clientY: e.clientY - }; - - setTimeout(function() { - var rng = me.selection.getRange(); - if (rng.collapsed === false || type == "contextmenu") { - if (!menu) { - menu = new baidu.editor.ui.ShortCutMenu({ - editor: me, - items: items, - theme: me.options.theme, - className: "edui-shortcutmenu" - }); - - menu.render(); - me.fireEvent("afterrendershortcutmenu", menu); - } - - menu.show(customEvt, !!UE.plugins["contextmenu"]); - } - }); - - if (type == "contextmenu") { - domUtils.preventDefault(e); - if (browser.ie9below) { - var ieRange; - try { - ieRange = me.selection.getNative().createRange(); - } catch (e) { - return; - } - if (ieRange.item) { - var range = new dom.Range(me.document); - range.selectNode(ieRange.item(0)).select(true, true); - } - } - } - }); - - me.addListener("keydown", function(type) { - if (type == "keydown") { - menu && !menu.isHidden && menu.hide(); - } - }); - }; - - - // plugins/basestyle.js - /** - * B、I、sub、super命令支持 - * @file - * @since 1.2.6.1 - */ - - UE.plugins["basestyle"] = function() { - /** - * 字体加粗 - * @command bold - * @param { String } cmd 命令字符串 - * @remind 对已加粗的文本内容执行该命令, 将取消加粗 - * @method execCommand - * @example - * ```javascript - * //editor是编辑器实例 - * //对当前选中的文本内容执行加粗操作 - * //第一次执行, 文本内容加粗 - * editor.execCommand( 'bold' ); - * - * //第二次执行, 文本内容取消加粗 - * editor.execCommand( 'bold' ); - * ``` - */ - - /** - * 字体倾斜 - * @command italic - * @method execCommand - * @param { String } cmd 命令字符串 - * @remind 对已倾斜的文本内容执行该命令, 将取消倾斜 - * @example - * ```javascript - * //editor是编辑器实例 - * //对当前选中的文本内容执行斜体操作 - * //第一次操作, 文本内容将变成斜体 - * editor.execCommand( 'italic' ); - * - * //再次对同一文本内容执行, 则文本内容将恢复正常 - * editor.execCommand( 'italic' ); - * ``` - */ - - /** - * 下标文本,与“superscript”命令互斥 - * @command subscript - * @method execCommand - * @remind 把选中的文本内容切换成下标文本, 如果当前选中的文本已经是下标, 则该操作会把文本内容还原成正常文本 - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * //editor是编辑器实例 - * //对当前选中的文本内容执行下标操作 - * //第一次操作, 文本内容将变成下标文本 - * editor.execCommand( 'subscript' ); - * - * //再次对同一文本内容执行, 则文本内容将恢复正常 - * editor.execCommand( 'subscript' ); - * ``` - */ - - /** - * 上标文本,与“subscript”命令互斥 - * @command superscript - * @method execCommand - * @remind 把选中的文本内容切换成上标文本, 如果当前选中的文本已经是上标, 则该操作会把文本内容还原成正常文本 - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * //editor是编辑器实例 - * //对当前选中的文本内容执行上标操作 - * //第一次操作, 文本内容将变成上标文本 - * editor.execCommand( 'superscript' ); - * - * //再次对同一文本内容执行, 则文本内容将恢复正常 - * editor.execCommand( 'superscript' ); - * ``` - */ - var basestyles = { - bold: ["strong", "b"], - italic: ["em", "i"], - subscript: ["sub"], - superscript: ["sup"] - }, - getObj = function(editor, tagNames) { - return domUtils.filterNodeList( - editor.selection.getStartElementPath(), - tagNames - ); - }, - me = this; - //添加快捷键 - me.addshortcutkey({ - Bold: "ctrl+66", //^B - Italic: "ctrl+73", //^I - Underline: "ctrl+85" //^U - }); - me.addInputRule(function(root) { - utils.each(root.getNodesByTagName("b i"), function(node) { - switch (node.tagName) { - case "b": - node.tagName = "strong"; - break; - case "i": - node.tagName = "em"; - } - }); - }); - for (var style in basestyles) { - (function(cmd, tagNames) { - me.commands[cmd] = { - execCommand: function(cmdName) { - var range = me.selection.getRange(), - obj = getObj(this, tagNames); - if (range.collapsed) { - if (obj) { - var tmpText = me.document.createTextNode(""); - range.insertNode(tmpText).removeInlineStyle(tagNames); - range.setStartBefore(tmpText); - domUtils.remove(tmpText); - } else { - var tmpNode = range.document.createElement(tagNames[0]); - if (cmdName == "superscript" || cmdName == "subscript") { - tmpText = me.document.createTextNode(""); - range - .insertNode(tmpText) - .removeInlineStyle(["sub", "sup"]) - .setStartBefore(tmpText) - .collapse(true); - } - range.insertNode(tmpNode).setStart(tmpNode, 0); - } - range.collapse(true); - } else { - if (cmdName == "superscript" || cmdName == "subscript") { - if (!obj || obj.tagName.toLowerCase() != cmdName) { - range.removeInlineStyle(["sub", "sup"]); - } - } - obj - ? range.removeInlineStyle(tagNames) - : range.applyInlineStyle(tagNames[0]); - } - range.select(); - }, - queryCommandState: function() { - return getObj(this, tagNames) ? 1 : 0; - } - }; - })(style, basestyles[style]); - } - }; - - - // plugins/elementpath.js - /** - * 选取路径命令 - * @file - */ - UE.plugins["elementpath"] = function() { - var currentLevel, - tagNames, - me = this; - me.setOpt("elementPathEnabled", true); - if (!me.options.elementPathEnabled) { - return; - } - me.commands["elementpath"] = { - execCommand: function(cmdName, level) { - var start = tagNames[level], - range = me.selection.getRange(); - currentLevel = level * 1; - range.selectNode(start).select(); - }, - queryCommandValue: function() { - //产生一个副本,不能修改原来的startElementPath; - var parents = [].concat(this.selection.getStartElementPath()).reverse(), - names = []; - tagNames = parents; - for (var i = 0, ci; (ci = parents[i]); i++) { - if (ci.nodeType == 3) { - continue; - } - var name = ci.tagName.toLowerCase(); - if (name == "img" && ci.getAttribute("anchorname")) { - name = "anchor"; - } - names[i] = name; - if (currentLevel == i) { - currentLevel = -1; - break; - } - } - return names; - } - }; - }; - - - // plugins/formatmatch.js - /** - * 格式刷,只格式inline的 - * @file - * @since 1.2.6.1 - */ - - /** - * 格式刷 - * @command formatmatch - * @method execCommand - * @remind 该操作不能复制段落格式 - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * //editor是编辑器实例 - * //获取格式刷 - * editor.execCommand( 'formatmatch' ); - * ``` - */ - UE.plugins["formatmatch"] = function() { - var me = this, - list = [], - img, - flag = 0; - - me.addListener("reset", function() { - list = []; - flag = 0; - }); - - function addList(type, evt) { - if (browser.webkit) { - var target = evt.target.tagName == "IMG" ? evt.target : null; - } - - function addFormat(range) { - if (text) { - range.selectNode(text); - } - return range.applyInlineStyle(list[list.length - 1].tagName, null, list); - } - - me.undoManger && me.undoManger.save(); - - var range = me.selection.getRange(), - imgT = target || range.getClosedNode(); - if (img && imgT && imgT.tagName == "IMG") { - //trace:964 - - imgT.style.cssText += - ";float:" + - (img.style.cssFloat || img.style.styleFloat || "none") + - ";display:" + - (img.style.display || "inline"); - - img = null; - } else { - if (!img) { - var collapsed = range.collapsed; - if (collapsed) { - var text = me.document.createTextNode("match"); - range.insertNode(text).select(); - } - me.__hasEnterExecCommand = true; - //不能把block上的属性干掉 - //trace:1553 - var removeFormatAttributes = me.options.removeFormatAttributes; - me.options.removeFormatAttributes = ""; - me.execCommand("removeformat"); - me.options.removeFormatAttributes = removeFormatAttributes; - me.__hasEnterExecCommand = false; - //trace:969 - range = me.selection.getRange(); - if (list.length) { - addFormat(range); - } - if (text) { - range.setStartBefore(text).collapse(true); - } - range.select(); - text && domUtils.remove(text); - } - } - - me.undoManger && me.undoManger.save(); - me.removeListener("mouseup", addList); - flag = 0; - } - - me.commands["formatmatch"] = { - execCommand: function(cmdName) { - if (flag) { - flag = 0; - list = []; - me.removeListener("mouseup", addList); - return; - } - - var range = me.selection.getRange(); - img = range.getClosedNode(); - if (!img || img.tagName != "IMG") { - range.collapse(true).shrinkBoundary(); - var start = range.startContainer; - list = domUtils.findParents(start, true, function(node) { - return !domUtils.isBlockElm(node) && node.nodeType == 1; - }); - //a不能加入格式刷, 并且克隆节点 - for (var i = 0, ci; (ci = list[i]); i++) { - if (ci.tagName == "A") { - list.splice(i, 1); - break; - } - } - } - - me.addListener("mouseup", addList); - flag = 1; - }, - queryCommandState: function() { - return flag; - }, - notNeedUndo: 1 - }; - }; - - - // plugins/searchreplace.js - ///import core - ///commands 查找替换 - ///commandsName SearchReplace - ///commandsTitle 查询替换 - ///commandsDialog dialogs\searchreplace - /** - * @description 查找替换 - * @author zhanyi - */ - - UE.plugin.register("searchreplace", function() { - var me = this; - - var _blockElm = { table: 1, tbody: 1, tr: 1, ol: 1, ul: 1 }; - - var lastRng = null; - - function getText(node) { - var text = node.nodeType == 3 - ? node.nodeValue - : node[browser.ie ? "innerText" : "textContent"]; - return text.replace(domUtils.fillChar, ""); - } - - function findTextInString(textContent, opt, currentIndex) { - var str = opt.searchStr; - - var reg = new RegExp(str, "g" + (opt.casesensitive ? "" : "i")), - match; - - if (opt.dir == -1) { - textContent = textContent.substr(0, currentIndex); - textContent = textContent.split("").reverse().join(""); - str = str.split("").reverse().join(""); - match = reg.exec(textContent); - if (match) { - return currentIndex - match.index - str.length; - } - } else { - textContent = textContent.substr(currentIndex); - match = reg.exec(textContent); - if (match) { - return match.index + currentIndex; - } - } - - return -1; - } - function findTextBlockElm(node, currentIndex, opt) { - var textContent, - index, - methodName = opt.all || opt.dir == 1 ? "getNextDomNode" : "getPreDomNode"; - if (domUtils.isBody(node)) { - node = node.firstChild; - } - var first = 1; - while (node) { - textContent = getText(node); - index = findTextInString(textContent, opt, currentIndex); - first = 0; - if (index != -1) { - return { - node: node, - index: index - }; - } - node = domUtils[methodName](node); - while (node && _blockElm[node.nodeName.toLowerCase()]) { - node = domUtils[methodName](node, true); - } - if (node) { - currentIndex = opt.dir == -1 ? getText(node).length : 0; - } - } - } - function findNTextInBlockElm(node, index, str) { - var currentIndex = 0, - currentNode = node.firstChild, - currentNodeLength = 0, - result; - while (currentNode) { - if (currentNode.nodeType == 3) { - currentNodeLength = getText(currentNode).replace( - /(^[\t\r\n]+)|([\t\r\n]+$)/, - "" - ).length; - currentIndex += currentNodeLength; - if (currentIndex >= index) { - return { - node: currentNode, - index: currentNodeLength - (currentIndex - index) - }; - } - } else if (!dtd.$empty[currentNode.tagName]) { - currentNodeLength = getText(currentNode).replace( - /(^[\t\r\n]+)|([\t\r\n]+$)/, - "" - ).length; - currentIndex += currentNodeLength; - if (currentIndex >= index) { - result = findNTextInBlockElm( - currentNode, - currentNodeLength - (currentIndex - index), - str - ); - if (result) { - return result; - } - } - } - currentNode = domUtils.getNextDomNode(currentNode); - } - } - - function searchReplace(me, opt) { - var rng = lastRng || me.selection.getRange(), - startBlockNode, - searchStr = opt.searchStr, - span = me.document.createElement("span"); - span.innerHTML = "$$ueditor_searchreplace_key$$"; - - rng.shrinkBoundary(true); - - //判断是不是第一次选中 - if (!rng.collapsed) { - rng.select(); - var rngText = me.selection.getText(); - if ( - new RegExp( - "^" + opt.searchStr + "$", - opt.casesensitive ? "" : "i" - ).test(rngText) - ) { - if (opt.replaceStr != undefined) { - replaceText(rng, opt.replaceStr); - rng.select(); - return true; - } else { - rng.collapse(opt.dir == -1); - } - } - } - - rng.insertNode(span); - rng.enlargeToBlockElm(true); - startBlockNode = rng.startContainer; - var currentIndex = getText(startBlockNode).indexOf( - "$$ueditor_searchreplace_key$$" - ); - rng.setStartBefore(span); - domUtils.remove(span); - var result = findTextBlockElm(startBlockNode, currentIndex, opt); - if (result) { - var rngStart = findNTextInBlockElm(result.node, result.index, searchStr); - var rngEnd = findNTextInBlockElm( - result.node, - result.index + searchStr.length, - searchStr - ); - rng - .setStart(rngStart.node, rngStart.index) - .setEnd(rngEnd.node, rngEnd.index); - - if (opt.replaceStr !== undefined) { - replaceText(rng, opt.replaceStr); - } - rng.select(); - return true; - } else { - rng.setCursor(); - } - } - function replaceText(rng, str) { - str = me.document.createTextNode(str); - rng.deleteContents().insertNode(str); - } - return { - commands: { - searchreplace: { - execCommand: function(cmdName, opt) { - utils.extend( - opt, - { - all: false, - casesensitive: false, - dir: 1 - }, - true - ); - var num = 0; - if (opt.all) { - lastRng = null; - var rng = me.selection.getRange(), - first = me.body.firstChild; - if (first && first.nodeType == 1) { - rng.setStart(first, 0); - rng.shrinkBoundary(true); - } else if (first.nodeType == 3) { - rng.setStartBefore(first); - } - rng.collapse(true).select(true); - if (opt.replaceStr !== undefined) { - me.fireEvent("saveScene"); - } - while (searchReplace(this, opt)) { - num++; - lastRng = me.selection.getRange(); - lastRng.collapse(opt.dir == -1); - } - if (num) { - me.fireEvent("saveScene"); - } - } else { - if (opt.replaceStr !== undefined) { - me.fireEvent("saveScene"); - } - if (searchReplace(this, opt)) { - num++; - lastRng = me.selection.getRange(); - lastRng.collapse(opt.dir == -1); - } - if (num) { - me.fireEvent("saveScene"); - } - } - - return num; - }, - notNeedUndo: 1 - } - }, - bindEvents: { - clearlastSearchResult: function() { - lastRng = null; - } - } - }; - }); - - - // plugins/customstyle.js - /** - * 自定义样式 - * @file - * @since 1.2.6.1 - */ - - /** - * 根据config配置文件里“customstyle”选项的值对匹配的标签执行样式替换。 - * @command customstyle - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand( 'customstyle' ); - * ``` - */ - UE.plugins["customstyle"] = function() { - var me = this; - me.setOpt({ - customstyle: [ - { - tag: "h1", - name: "tc", - style: - "font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;" - }, - { - tag: "h1", - name: "tl", - style: - "font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;" - }, - { - tag: "span", - name: "im", - style: - "font-size:16px;font-style:italic;font-weight:bold;line-height:18px;" - }, - { - tag: "span", - name: "hi", - style: - "font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;" - } - ] - }); - me.commands["customstyle"] = { - execCommand: function(cmdName, obj) { - var me = this, - tagName = obj.tag, - node = domUtils.findParent( - me.selection.getStart(), - function(node) { - return node.getAttribute("label"); - }, - true - ), - range, - bk, - tmpObj = {}; - for (var p in obj) { - if (obj[p] !== undefined) tmpObj[p] = obj[p]; - } - delete tmpObj.tag; - if (node && node.getAttribute("label") == obj.label) { - range = this.selection.getRange(); - bk = range.createBookmark(); - if (range.collapsed) { - //trace:1732 删掉自定义标签,要有p来回填站位 - if (dtd.$block[node.tagName]) { - var fillNode = me.document.createElement("p"); - domUtils.moveChild(node, fillNode); - node.parentNode.insertBefore(fillNode, node); - domUtils.remove(node); - } else { - domUtils.remove(node, true); - } - } else { - var common = domUtils.getCommonAncestor(bk.start, bk.end), - nodes = domUtils.getElementsByTagName(common, tagName); - if (new RegExp(tagName, "i").test(common.tagName)) { - nodes.push(common); - } - for (var i = 0, ni; (ni = nodes[i++]); ) { - if (ni.getAttribute("label") == obj.label) { - var ps = domUtils.getPosition(ni, bk.start), - pe = domUtils.getPosition(ni, bk.end); - if ( - (ps & domUtils.POSITION_FOLLOWING || - ps & domUtils.POSITION_CONTAINS) && - (pe & domUtils.POSITION_PRECEDING || - pe & domUtils.POSITION_CONTAINS) - ) - if (dtd.$block[tagName]) { - var fillNode = me.document.createElement("p"); - domUtils.moveChild(ni, fillNode); - ni.parentNode.insertBefore(fillNode, ni); - } - domUtils.remove(ni, true); - } - } - node = domUtils.findParent( - common, - function(node) { - return node.getAttribute("label") == obj.label; - }, - true - ); - if (node) { - domUtils.remove(node, true); - } - } - range.moveToBookmark(bk).select(); - } else { - if (dtd.$block[tagName]) { - this.execCommand("paragraph", tagName, tmpObj, "customstyle"); - range = me.selection.getRange(); - if (!range.collapsed) { - range.collapse(); - node = domUtils.findParent( - me.selection.getStart(), - function(node) { - return node.getAttribute("label") == obj.label; - }, - true - ); - var pNode = me.document.createElement("p"); - domUtils.insertAfter(node, pNode); - domUtils.fillNode(me.document, pNode); - range.setStart(pNode, 0).setCursor(); - } - } else { - range = me.selection.getRange(); - if (range.collapsed) { - node = me.document.createElement(tagName); - domUtils.setAttributes(node, tmpObj); - range.insertNode(node).setStart(node, 0).setCursor(); - - return; - } - - bk = range.createBookmark(); - range.applyInlineStyle(tagName, tmpObj).moveToBookmark(bk).select(); - } - } - }, - queryCommandValue: function() { - var parent = domUtils.filterNodeList( - this.selection.getStartElementPath(), - function(node) { - return node.getAttribute("label"); - } - ); - return parent ? parent.getAttribute("label") : ""; - } - }; - //当去掉customstyle是,如果是块元素,用p代替 - me.addListener("keyup", function(type, evt) { - var keyCode = evt.keyCode || evt.which; - - if (keyCode == 32 || keyCode == 13) { - var range = me.selection.getRange(); - if (range.collapsed) { - var node = domUtils.findParent( - me.selection.getStart(), - function(node) { - return node.getAttribute("label"); - }, - true - ); - if (node && dtd.$block[node.tagName] && domUtils.isEmptyNode(node)) { - var p = me.document.createElement("p"); - domUtils.insertAfter(node, p); - domUtils.fillNode(me.document, p); - domUtils.remove(node); - range.setStart(p, 0).setCursor(); - } - } - } - }); - }; - - - // plugins/catchremoteimage.js - ///import core - ///commands 远程图片抓取 - ///commandsName catchRemoteImage,catchremoteimageenable - ///commandsTitle 远程图片抓取 - /** - * 远程图片抓取,当开启本插件时所有不符合本地域名的图片都将被抓取成为本地服务器上的图片 - */ - UE.plugins["catchremoteimage"] = function() { - var me = this, - ajax = UE.ajax; - - /* 设置默认值 */ - if (me.options.catchRemoteImageEnable === false) return; - me.setOpt({ - catchRemoteImageEnable: false - }); - - me.addListener("afterpaste", function() { - me.fireEvent("catchRemoteImage"); - }); - - me.addListener("catchRemoteImage", function() { - var catcherLocalDomain = me.getOpt("catcherLocalDomain"), - catcherActionUrl = me.getActionUrl(me.getOpt("catcherActionName")), - catcherUrlPrefix = me.getOpt("catcherUrlPrefix"), - catcherFieldName = me.getOpt("catcherFieldName"); - - var remoteImages = [], - loadingIMG = me.options.themePath + me.options.theme + '/images/spacer.gif', - imgs = me.document.querySelectorAll('[style*="url"],img'), - test = function(src, urls) { - if (src.indexOf(location.host) != -1 || /(^\.)|(^\/)/.test(src)) { - return true; - } - if (urls) { - for (var j = 0, url; (url = urls[j++]); ) { - if (src.indexOf(url) !== -1) { - return true; - } - } - } - return false; - }; - - for (var i = 0, ci; (ci = imgs[i++]); ) { - if (ci.getAttribute("word_img")) { - continue; - } - if(ci.nodeName == "IMG"){ - var src = ci.getAttribute("_src") || ci.src || ""; - if (/^(https?|ftp):/i.test(src) && !test(src, catcherLocalDomain)) { - remoteImages.push(src); - // 添加上传时的uploading动画 - domUtils.setAttributes(ci, { - class: "loadingclass", - _src: src, - src: loadingIMG - }) - } - } else { - // 获取背景图片url - var backgroundImageurl = ci.style.cssText.replace(/.*\s?url\([\'\"]?/, '').replace(/[\'\"]?\).*/, ''); - if (/^(https?|ftp):/i.test(backgroundImageurl) && !test(backgroundImageurl, catcherLocalDomain)) { - remoteImages.push(backgroundImageurl); - ci.style.cssText = ci.style.cssText.replace(backgroundImageurl, loadingIMG); - domUtils.setAttributes(ci, { - "data-background": backgroundImageurl - }) - } - } - } - - if (remoteImages.length) { - catchremoteimage(remoteImages, { - //成功抓取 - success: function(r) { - try { - var info = r.state !== undefined - ? r - : eval("(" + r.responseText + ")"); - } catch (e) { - return; - } - - /* 获取源路径和新路径 */ - var i, - j, - ci, - cj, - oldSrc, - newSrc, - list = info.list; - - /* 抓取失败统计 */ - var catchFailList = []; - /* 抓取成功统计 */ - var catchSuccessList = []; - /* 抓取失败时显示的图片 */ - var failIMG = me.options.themePath + me.options.theme + '/images/img-cracked.png'; - - for (i = 0; ci = imgs[i++];) { - oldSrc = ci.getAttribute("_src") || ci.src || ""; - oldBgIMG = ci.getAttribute("data-background") || ""; - for (j = 0; cj = list[j++];) { - if (oldSrc == cj.source && cj.state == "SUCCESS") { - newSrc = catcherUrlPrefix + cj.url; - // 上传成功是删除uploading动画 - domUtils.removeClasses( ci, "loadingclass" ); - domUtils.setAttributes(ci, { - "src": newSrc, - "_src": newSrc, - "data-catchResult":"img_catchSuccess" // 添加catch成功标记 - }); - catchSuccessList.push(ci); - break; - } else if (oldSrc == cj.source && cj.state == "FAIL") { - // 替换成统一的失败图片 - domUtils.removeClasses( ci, "loadingclass" ); - domUtils.setAttributes(ci, { - "src": failIMG, - "_src": failIMG, - "data-catchResult":"img_catchFail" // 添加catch失败标记 - }); - catchFailList.push(ci); - break; - } else if (oldBgIMG == cj.source && cj.state == "SUCCESS") { - newBgIMG = catcherUrlPrefix + cj.url; - ci.style.cssText = ci.style.cssText.replace(loadingIMG, newBgIMG); - domUtils.removeAttributes(ci,"data-background"); - domUtils.setAttributes(ci, { - "data-catchResult":"img_catchSuccess" // 添加catch成功标记 - }); - catchSuccessList.push(ci); - break; - } else if (oldBgIMG == cj.source && cj.state == "FAIL"){ - ci.style.cssText = ci.style.cssText.replace(loadingIMG, failIMG); - domUtils.removeAttributes(ci,"data-background"); - domUtils.setAttributes(ci, { - "data-catchResult":"img_catchFail" // 添加catch失败标记 - }); - catchFailList.push(ci); - break; - } - } - - } - // 监听事件添加成功抓取和抓取失败的dom列表参数 - me.fireEvent('catchremotesuccess',catchSuccessList,catchFailList); - }, - //回调失败,本次请求超时 - error: function() { - me.fireEvent("catchremoteerror"); - } - }); - } - - function catchremoteimage(imgs, callbacks) { - var params = - utils.serializeParam(me.queryCommandValue("serverparam")) || "", - url = utils.formatUrl( - catcherActionUrl + - (catcherActionUrl.indexOf("?") == -1 ? "?" : "&") + - params - ), - isJsonp = utils.isCrossDomainUrl(url), - opt = { - method: "POST", - dataType: isJsonp ? "jsonp" : "", - timeout: 60000, //单位:毫秒,回调请求超时设置。目标用户如果网速不是很快的话此处建议设置一个较大的数值 - onsuccess: callbacks["success"], - onerror: callbacks["error"] - }; - opt[catcherFieldName] = imgs; - ajax.request(url, opt); - } - }); - }; - - - // plugins/snapscreen.js - /** - * 截屏插件,为UEditor提供插入支持 - * @file - * @since 1.4.2 - */ - UE.plugin.register("snapscreen", function() { - var me = this; - var snapplugin; - - function getLocation(url) { - var search, - a = document.createElement("a"), - params = utils.serializeParam(me.queryCommandValue("serverparam")) || ""; - - a.href = url; - if (browser.ie) { - a.href = a.href; - } - - search = a.search; - if (params) { - search = search + (search.indexOf("?") == -1 ? "?" : "&") + params; - search = search.replace(/[&]+/gi, "&"); - } - return { - port: a.port, - hostname: a.hostname, - path: a.pathname + search || +a.hash - }; - } - - return { - commands: { - /** - * 字体背景颜色 - * @command snapscreen - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand('snapscreen'); - * ``` - */ - snapscreen: { - execCommand: function(cmd) { - var url, local, res; - var lang = me.getLang("snapScreen_plugin"); - - if (!snapplugin) { - var container = me.container; - var doc = me.container.ownerDocument || me.container.document; - snapplugin = doc.createElement("object"); - try { - snapplugin.type = "application/x-pluginbaidusnap"; - } catch (e) { - return; - } - snapplugin.style.cssText = - "position:absolute;left:-9999px;width:0;height:0;"; - snapplugin.setAttribute("width", "0"); - snapplugin.setAttribute("height", "0"); - container.appendChild(snapplugin); - } - - function onSuccess(rs) { - try { - rs = eval("(" + rs + ")"); - if (rs.state == "SUCCESS") { - var opt = me.options; - me.execCommand("insertimage", { - src: opt.snapscreenUrlPrefix + rs.url, - _src: opt.snapscreenUrlPrefix + rs.url, - alt: rs.title || "", - floatStyle: opt.snapscreenImgAlign - }); - } else { - alert(rs.state); - } - } catch (e) { - alert(lang.callBackErrorMsg); - } - } - url = me.getActionUrl(me.getOpt("snapscreenActionName")); - local = getLocation(url); - setTimeout(function() { - try { - res = snapplugin.saveSnapshot( - local.hostname, - local.path, - local.port - ); - } catch (e) { - me.ui._dialogs["snapscreenDialog"].open(); - return; - } - - onSuccess(res); - }, 50); - }, - queryCommandState: function() { - return navigator.userAgent.indexOf("Windows", 0) != -1 ? 0 : -1; - } - } - } - }; - }); - - - // plugins/insertparagraph.js - /** - * 插入段落 - * @file - * @since 1.2.6.1 - */ - - /** - * 插入段落 - * @command insertparagraph - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * //editor是编辑器实例 - * editor.execCommand( 'insertparagraph' ); - * ``` - */ - - UE.commands["insertparagraph"] = { - execCommand: function(cmdName, front) { - var me = this, - range = me.selection.getRange(), - start = range.startContainer, - tmpNode; - while (start) { - if (domUtils.isBody(start)) { - break; - } - tmpNode = start; - start = start.parentNode; - } - if (tmpNode) { - var p = me.document.createElement("p"); - if (front) { - tmpNode.parentNode.insertBefore(p, tmpNode); - } else { - tmpNode.parentNode.insertBefore(p, tmpNode.nextSibling); - } - domUtils.fillNode(me.document, p); - range.setStart(p, 0).setCursor(false, true); - } - } - }; - - - // plugins/webapp.js - /** - * 百度应用 - * @file - * @since 1.2.6.1 - */ - - /** - * 插入百度应用 - * @command webapp - * @method execCommand - * @remind 需要百度APPKey - * @remind 百度应用主页: http://app.baidu.com/ - * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度, - * height=>应用容器高度,logo=>应用logo,url=>应用地址 - * @example - * ```javascript - * //editor是编辑器实例 - * //在编辑器里插入一个“植物大战僵尸”的APP - * editor.execCommand( 'webapp' , { - * title: '植物大战僵尸', - * width: 560, - * height: 465, - * logo: '应用展示的图片', - * url: '百度应用的地址' - * } ); - * ``` - */ - - //UE.plugins['webapp'] = function () { - // var me = this; - // function createInsertStr( obj, toIframe, addParagraph ) { - // return !toIframe ? - // (addParagraph ? '

    ' : '') + '' + - // (addParagraph ? '

    ' : '') - // : - // ''; - // } - // - // function switchImgAndIframe( img2frame ) { - // var tmpdiv, - // nodes = domUtils.getElementsByTagName( me.document, !img2frame ? "iframe" : "img" ); - // for ( var i = 0, node; node = nodes[i++]; ) { - // if ( node.className != "edui-faked-webapp" ){ - // continue; - // } - // tmpdiv = me.document.createElement( "div" ); - // tmpdiv.innerHTML = createInsertStr( img2frame ? {url:node.getAttribute( "_url" ), width:node.width, height:node.height,title:node.title,logo:node.style.backgroundImage.replace("url(","").replace(")","")} : {url:node.getAttribute( "src", 2 ),title:node.title, width:node.width, height:node.height,logo:node.getAttribute("logo_url")}, img2frame ? true : false,false ); - // node.parentNode.replaceChild( tmpdiv.firstChild, node ); - // } - // } - // - // me.addListener( "beforegetcontent", function () { - // switchImgAndIframe( true ); - // } ); - // me.addListener( 'aftersetcontent', function () { - // switchImgAndIframe( false ); - // } ); - // me.addListener( 'aftergetcontent', function ( cmdName ) { - // if ( cmdName == 'aftergetcontent' && me.queryCommandState( 'source' ) ){ - // return; - // } - // switchImgAndIframe( false ); - // } ); - // - // me.commands['webapp'] = { - // execCommand:function ( cmd, obj ) { - // me.execCommand( "inserthtml", createInsertStr( obj, false,true ) ); - // } - // }; - //}; - - UE.plugin.register("webapp", function() { - var me = this; - function createInsertStr(obj, toEmbed) { - return !toEmbed - ? '" - : ''; - } - return { - outputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(node) { - var html; - if (node.getAttr("class") == "edui-faked-webapp") { - html = createInsertStr( - { - title: node.getAttr("title"), - width: node.getAttr("width"), - height: node.getAttr("height"), - align: node.getAttr("align"), - cssfloat: node.getStyle("float"), - url: node.getAttr("_url"), - logo: node.getAttr("_logo_url") - }, - true - ); - var embed = UE.uNode.createElement(html); - node.parentNode.replaceChild(embed, node); - } - }); - }, - inputRule: function(root) { - utils.each(root.getNodesByTagName("iframe"), function(node) { - if (node.getAttr("class") == "edui-faked-webapp") { - var img = UE.uNode.createElement( - createInsertStr({ - title: node.getAttr("title"), - width: node.getAttr("width"), - height: node.getAttr("height"), - align: node.getAttr("align"), - cssfloat: node.getStyle("float"), - url: node.getAttr("src"), - logo: node.getAttr("logo_url") - }) - ); - node.parentNode.replaceChild(img, node); - } - }); - }, - commands: { - /** - * 插入百度应用 - * @command webapp - * @method execCommand - * @remind 需要百度APPKey - * @remind 百度应用主页: http://app.baidu.com/ - * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度, - * height=>应用容器高度,logo=>应用logo,url=>应用地址 - * @example - * ```javascript - * //editor是编辑器实例 - * //在编辑器里插入一个“植物大战僵尸”的APP - * editor.execCommand( 'webapp' , { - * title: '植物大战僵尸', - * width: 560, - * height: 465, - * logo: '应用展示的图片', - * url: '百度应用的地址' - * } ); - * ``` - */ - webapp: { - execCommand: function(cmd, obj) { - var me = this, - str = createInsertStr( - utils.extend(obj, { - align: "none" - }), - false - ); - me.execCommand("inserthtml", str); - }, - queryCommandState: function() { - var me = this, - img = me.selection.getRange().getClosedNode(), - flag = img && img.className == "edui-faked-webapp"; - return flag ? 1 : 0; - } - } - } - }; - }); - - - // plugins/template.js - ///import core - ///import plugins\inserthtml.js - ///import plugins\cleardoc.js - ///commands 模板 - ///commandsName template - ///commandsTitle 模板 - ///commandsDialog dialogs\template - UE.plugins["template"] = function() { - UE.commands["template"] = { - execCommand: function(cmd, obj) { - obj.html && this.execCommand("inserthtml", obj.html); - } - }; - this.addListener("click", function(type, evt) { - var el = evt.target || evt.srcElement, - range = this.selection.getRange(); - var tnode = domUtils.findParent( - el, - function(node) { - if (node.className && domUtils.hasClass(node, "ue_t")) { - return node; - } - }, - true - ); - tnode && range.selectNode(tnode).shrinkBoundary().select(); - }); - this.addListener("keydown", function(type, evt) { - var range = this.selection.getRange(); - if (!range.collapsed) { - if (!evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) { - var tnode = domUtils.findParent( - range.startContainer, - function(node) { - if (node.className && domUtils.hasClass(node, "ue_t")) { - return node; - } - }, - true - ); - if (tnode) { - domUtils.removeClasses(tnode, ["ue_t"]); - } - } - } - }); - }; - - - // plugins/music.js - /** - * 插入音乐命令 - * @file - */ - UE.plugin.register("music", function() { - var me = this; - function creatInsertStr(url, width, height, align, cssfloat, toEmbed) { - return !toEmbed - ? "' - : ''; - } - return { - outputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(node) { - var html; - if (node.getAttr("class") == "edui-faked-music") { - var cssfloat = node.getStyle("float"); - var align = node.getAttr("align"); - html = creatInsertStr( - node.getAttr("_url"), - node.getAttr("width"), - node.getAttr("height"), - align, - cssfloat, - true - ); - var embed = UE.uNode.createElement(html); - node.parentNode.replaceChild(embed, node); - } - }); - }, - inputRule: function(root) { - utils.each(root.getNodesByTagName("embed"), function(node) { - if (node.getAttr("class") == "edui-faked-music") { - var cssfloat = node.getStyle("float"); - var align = node.getAttr("align"); - html = creatInsertStr( - node.getAttr("src"), - node.getAttr("width"), - node.getAttr("height"), - align, - cssfloat, - false - ); - var img = UE.uNode.createElement(html); - node.parentNode.replaceChild(img, node); - } - }); - }, - commands: { - /** - * 插入音乐 - * @command music - * @method execCommand - * @param { Object } musicOptions 插入音乐的参数项, 支持的key有: url=>音乐地址; - * width=>音乐容器宽度;height=>音乐容器高度;align=>音乐文件的对齐方式, 可选值有: left, center, right, none - * @example - * ```javascript - * //editor是编辑器实例 - * //在编辑器里插入一个“植物大战僵尸”的APP - * editor.execCommand( 'music' , { - * width: 400, - * height: 95, - * align: "center", - * url: "音乐地址" - * } ); - * ``` - */ - music: { - execCommand: function(cmd, musicObj) { - var me = this, - str = creatInsertStr( - musicObj.url, - musicObj.width || 400, - musicObj.height || 95, - "none", - false - ); - me.execCommand("inserthtml", str); - }, - queryCommandState: function() { - var me = this, - img = me.selection.getRange().getClosedNode(), - flag = img && img.className == "edui-faked-music"; - return flag ? 1 : 0; - } - } - } - }; - }); - - - // plugins/autoupload.js - /** - * @description - * 1.拖放文件到编辑区域,自动上传并插入到选区 - * 2.插入粘贴板的图片,自动上传并插入到选区 - * @author Jinqn - * @date 2013-10-14 - */ - UE.plugin.register("autoupload", function() { - function sendAndInsertFile(file, editor) { - var me = editor; - //模拟数据 - var fieldName, - urlPrefix, - maxSize, - allowFiles, - actionUrl, - loadingHtml, - errorHandler, - successHandler, - filetype = /image\/\w+/i.test(file.type) ? "image" : "file", - loadingId = "loading_" + (+new Date()).toString(36); - - fieldName = me.getOpt(filetype + "FieldName"); - urlPrefix = me.getOpt(filetype + "UrlPrefix"); - maxSize = me.getOpt(filetype + "MaxSize"); - allowFiles = me.getOpt(filetype + "AllowFiles"); - actionUrl = me.getActionUrl(me.getOpt(filetype + "ActionName")); - errorHandler = function(title) { - var loader = me.document.getElementById(loadingId); - loader && domUtils.remove(loader); - me.fireEvent("showmessage", { - id: loadingId, - content: title, - type: "error", - timeout: 4000 - }); - }; - - if (filetype == "image") { - loadingHtml = - ''; - successHandler = function(data) { - var link = urlPrefix + data.url, - loader = me.document.getElementById(loadingId); - if (loader) { - domUtils.removeClasses(loader, "loadingclass"); - loader.setAttribute("src", link); - loader.setAttribute("_src", link); - loader.setAttribute("alt", data.original || ""); - loader.removeAttribute("id"); - me.trigger("contentchange", loader); - } - }; - } else { - loadingHtml = - "

    " + - '' + - "

    "; - successHandler = function(data) { - var link = urlPrefix + data.url, - loader = me.document.getElementById(loadingId); - - var rng = me.selection.getRange(), - bk = rng.createBookmark(); - rng.selectNode(loader).select(); - me.execCommand("insertfile", { url: link }); - rng.moveToBookmark(bk).select(); - }; - } - - /* 插入loading的占位符 */ - me.execCommand("inserthtml", loadingHtml); - /* 判断后端配置是否没有加载成功 */ - if (!me.getOpt(filetype + "ActionName")) { - errorHandler(me.getLang("autoupload.errorLoadConfig")); - return; - } - /* 判断文件大小是否超出限制 */ - if (file.size > maxSize) { - errorHandler(me.getLang("autoupload.exceedSizeError")); - return; - } - /* 判断文件格式是否超出允许 */ - var fileext = file.name ? file.name.substr(file.name.lastIndexOf(".")) : ""; - if ( - (fileext && filetype != "image") || - (allowFiles && - (allowFiles.join("") + ".").indexOf(fileext.toLowerCase() + ".") == -1) - ) { - errorHandler(me.getLang("autoupload.exceedTypeError")); - return; - } - - /* 创建Ajax并提交 */ - var xhr = new XMLHttpRequest(), - fd = new FormData(), - params = utils.serializeParam(me.queryCommandValue("serverparam")) || "", - url = utils.formatUrl( - actionUrl + (actionUrl.indexOf("?") == -1 ? "?" : "&") + params - ); - - fd.append( - fieldName, - file, - file.name || "blob." + file.type.substr("image/".length) - ); - fd.append("type", "ajax"); - xhr.open("post", url, true); - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - xhr.addEventListener("load", function(e) { - try { - var json = new Function("return " + utils.trim(e.target.response))(); - if (json.state == "SUCCESS" && json.url) { - successHandler(json); - } else { - errorHandler(json.state); - } - } catch (er) { - errorHandler(me.getLang("autoupload.loadError")); - } - }); - xhr.send(fd); - } - - function getPasteImage(e) { - return e.clipboardData && - e.clipboardData.items && - e.clipboardData.items.length == 1 && - /^image\//.test(e.clipboardData.items[0].type) - ? e.clipboardData.items - : null; - } - function getDropImage(e) { - return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files : null; - } - - return { - outputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(n) { - if (/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr("class"))) { - n.parentNode.removeChild(n); - } - }); - utils.each(root.getNodesByTagName("p"), function(n) { - if (/\bloadpara\b/.test(n.getAttr("class"))) { - n.parentNode.removeChild(n); - } - }); - }, - bindEvents: { - defaultOptions: { - //默认间隔时间 - enableDragUpload: true, - enablePasteUpload: true - }, - //插入粘贴板的图片,拖放插入图片 - ready: function(e) { - var me = this; - if (window.FormData && window.FileReader) { - var handler = function(e) { - var hasImg = false, - items; - //获取粘贴板文件列表或者拖放文件列表 - items = e.type == "paste" ? getPasteImage(e) : getDropImage(e); - if (items) { - var len = items.length, - file; - while (len--) { - file = items[len]; - if (file.getAsFile) file = file.getAsFile(); - if (file && file.size > 0) { - sendAndInsertFile(file, me); - hasImg = true; - } - } - hasImg && e.preventDefault(); - } - }; - - if (me.getOpt("enablePasteUpload") !== false) { - domUtils.on(me.body, "paste ", handler); - } - if (me.getOpt("enableDragUpload") !== false) { - domUtils.on(me.body, "drop", handler); - //取消拖放图片时出现的文字光标位置提示 - domUtils.on(me.body, "dragover", function(e) { - if (e.dataTransfer.types[0] == "Files") { - e.preventDefault(); - } - }); - } else { - if (browser.gecko) { - domUtils.on(me.body, "drop", function(e) { - if (getDropImage(e)) { - e.preventDefault(); - } - }); - } - } - - //设置loading的样式 - utils.cssRule( - "loading", - ".loadingclass{display:inline-block;cursor:default;background: url('" + - this.options.themePath + - this.options.theme + - "/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-left:1px;height: 22px;width: 22px;}\n" + - ".loaderrorclass{display:inline-block;cursor:default;background: url('" + - this.options.themePath + - this.options.theme + - "/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;" + - "}", - this.document - ); - } - } - } - }; - }); - - - // plugins/autosave.js - UE.plugin.register("autosave", function() { - var me = this, - //无限循环保护 - lastSaveTime = new Date(), - //最小保存间隔时间 - MIN_TIME = 20, - //auto save key - saveKey = null; - - function save(editor) { - var saveData; - - if (new Date() - lastSaveTime < MIN_TIME) { - return; - } - - if (!editor.hasContents()) { - //这里不能调用命令来删除, 会造成事件死循环 - saveKey && me.removePreferences(saveKey); - return; - } - - lastSaveTime = new Date(); - - editor._saveFlag = null; - - saveData = me.body.innerHTML; - - if ( - editor.fireEvent("beforeautosave", { - content: saveData - }) === false - ) { - return; - } - - me.setPreferences(saveKey, saveData); - - editor.fireEvent("afterautosave", { - content: saveData - }); - } - - return { - defaultOptions: { - //默认间隔时间 - saveInterval: 500, - enableAutoSave: true - }, - bindEvents: { - ready: function() { - var _suffix = "-drafts-data", - key = null; - - if (me.key) { - key = me.key + _suffix; - } else { - key = (me.container.parentNode.id || "ue-common") + _suffix; - } - - //页面地址+编辑器ID 保持唯一 - saveKey = - (location.protocol + location.host + location.pathname).replace( - /[.:\/]/g, - "_" - ) + key; - }, - - contentchange: function() { - if (!me.getOpt("enableAutoSave")) { - return; - } - - if (!saveKey) { - return; - } - - if (me._saveFlag) { - window.clearTimeout(me._saveFlag); - } - - if (me.options.saveInterval > 0) { - me._saveFlag = window.setTimeout(function() { - save(me); - }, me.options.saveInterval); - } else { - save(me); - } - } - }, - commands: { - clearlocaldata: { - execCommand: function(cmd, name) { - if (saveKey && me.getPreferences(saveKey)) { - me.removePreferences(saveKey); - } - }, - notNeedUndo: true, - ignoreContentChange: true - }, - - getlocaldata: { - execCommand: function(cmd, name) { - return saveKey ? me.getPreferences(saveKey) || "" : ""; - }, - notNeedUndo: true, - ignoreContentChange: true - }, - - drafts: { - execCommand: function(cmd, name) { - if (saveKey) { - me.body.innerHTML = - me.getPreferences(saveKey) || "

    " + domUtils.fillHtml + "

    "; - me.focus(true); - } - }, - queryCommandState: function() { - return saveKey ? (me.getPreferences(saveKey) === null ? -1 : 0) : -1; - }, - notNeedUndo: true, - ignoreContentChange: true - } - } - }; - }); - - - // plugins/charts.js - UE.plugin.register("charts", function() { - var me = this; - - return { - bindEvents: { - chartserror: function() {} - }, - commands: { - charts: { - execCommand: function(cmd, data) { - var tableNode = domUtils.findParentByTagName( - this.selection.getRange().startContainer, - "table", - true - ), - flagText = [], - config = {}; - - if (!tableNode) { - return false; - } - - if (!validData(tableNode)) { - me.fireEvent("chartserror"); - return false; - } - - config.title = data.title || ""; - config.subTitle = data.subTitle || ""; - config.xTitle = data.xTitle || ""; - config.yTitle = data.yTitle || ""; - config.suffix = data.suffix || ""; - config.tip = data.tip || ""; - //数据对齐方式 - config.dataFormat = data.tableDataFormat || ""; - //图表类型 - config.chartType = data.chartType || 0; - - for (var key in config) { - if (!config.hasOwnProperty(key)) { - continue; - } - - flagText.push(key + ":" + config[key]); - } - - tableNode.setAttribute("data-chart", flagText.join(";")); - domUtils.addClass(tableNode, "edui-charts-table"); - }, - queryCommandState: function(cmd, name) { - var tableNode = domUtils.findParentByTagName( - this.selection.getRange().startContainer, - "table", - true - ); - return tableNode && validData(tableNode) ? 0 : -1; - } - } - }, - inputRule: function(root) { - utils.each(root.getNodesByTagName("table"), function(tableNode) { - if (tableNode.getAttr("data-chart") !== undefined) { - tableNode.setAttr("style"); - } - }); - }, - outputRule: function(root) { - utils.each(root.getNodesByTagName("table"), function(tableNode) { - if (tableNode.getAttr("data-chart") !== undefined) { - tableNode.setAttr("style", "display: none;"); - } - }); - } - }; - - function validData(table) { - var firstRows = null, - cellCount = 0; - - //行数不够 - if (table.rows.length < 2) { - return false; - } - - //列数不够 - if (table.rows[0].cells.length < 2) { - return false; - } - - //第一行所有cell必须是th - firstRows = table.rows[0].cells; - cellCount = firstRows.length; - - for (var i = 0, cell; (cell = firstRows[i]); i++) { - if (cell.tagName.toLowerCase() !== "th") { - return false; - } - } - - for (var i = 1, row; (row = table.rows[i]); i++) { - //每行单元格数不匹配, 返回false - if (row.cells.length != cellCount) { - return false; - } - - //第一列不是th也返回false - if (row.cells[0].tagName.toLowerCase() !== "th") { - return false; - } - - for (var j = 1, cell; (cell = row.cells[j]); j++) { - var value = utils.trim(cell.innerText || cell.textContent || ""); - - value = value - .replace(new RegExp(UE.dom.domUtils.fillChar, "g"), "") - .replace(/^\s+|\s+$/g, ""); - - //必须是数字 - if (!/^\d*\.?\d+$/.test(value)) { - return false; - } - } - } - - return true; - } - }); - - - // plugins/section.js - /** - * 目录大纲支持插件 - * @file - * @since 1.3.0 - */ - UE.plugin.register("section", function() { - /* 目录节点对象 */ - function Section(option) { - this.tag = ""; - (this.level = -1), (this.dom = null); - this.nextSection = null; - this.previousSection = null; - this.parentSection = null; - this.startAddress = []; - this.endAddress = []; - this.children = []; - } - function getSection(option) { - var section = new Section(); - return utils.extend(section, option); - } - function getNodeFromAddress(startAddress, root) { - var current = root; - for (var i = 0; i < startAddress.length; i++) { - if (!current.childNodes) return null; - current = current.childNodes[startAddress[i]]; - } - return current; - } - - var me = this; - - return { - bindMultiEvents: { - type: "aftersetcontent afterscencerestore", - handler: function() { - me.fireEvent("updateSections"); - } - }, - bindEvents: { - /* 初始化、拖拽、粘贴、执行setcontent之后 */ - ready: function() { - me.fireEvent("updateSections"); - domUtils.on(me.body, "drop paste", function() { - me.fireEvent("updateSections"); - }); - }, - /* 执行paragraph命令之后 */ - afterexeccommand: function(type, cmd) { - if (cmd == "paragraph") { - me.fireEvent("updateSections"); - } - }, - /* 部分键盘操作,触发updateSections事件 */ - keyup: function(type, e) { - var me = this, - range = me.selection.getRange(); - if (range.collapsed != true) { - me.fireEvent("updateSections"); - } else { - var keyCode = e.keyCode || e.which; - if (keyCode == 13 || keyCode == 8 || keyCode == 46) { - me.fireEvent("updateSections"); - } - } - } - }, - commands: { - getsections: { - execCommand: function(cmd, levels) { - var levelFn = levels || ["h1", "h2", "h3", "h4", "h5", "h6"]; - - for (var i = 0; i < levelFn.length; i++) { - if (typeof levelFn[i] == "string") { - levelFn[i] = (function(fn) { - return function(node) { - return node.tagName == fn.toUpperCase(); - }; - })(levelFn[i]); - } else if (typeof levelFn[i] != "function") { - levelFn[i] = function(node) { - return null; - }; - } - } - function getSectionLevel(node) { - for (var i = 0; i < levelFn.length; i++) { - if (levelFn[i](node)) return i; - } - return -1; - } - - var me = this, - Directory = getSection({ level: -1, title: "root" }), - previous = Directory; - - function traversal(node, Directory) { - var level, - tmpSection = null, - parent, - child, - children = node.childNodes; - for (var i = 0, len = children.length; i < len; i++) { - child = children[i]; - level = getSectionLevel(child); - if (level >= 0) { - var address = me.selection - .getRange() - .selectNode(child) - .createAddress(true).startAddress, - current = getSection({ - tag: child.tagName, - title: child.innerText || child.textContent || "", - level: level, - dom: child, - startAddress: utils.clone(address, []), - endAddress: utils.clone(address, []), - children: [] - }); - previous.nextSection = current; - current.previousSection = previous; - parent = previous; - while (level <= parent.level) { - parent = parent.parentSection; - } - current.parentSection = parent; - parent.children.push(current); - tmpSection = previous = current; - } else { - child.nodeType === 1 && traversal(child, Directory); - tmpSection && - tmpSection.endAddress[tmpSection.endAddress.length - 1]++; - } - } - } - traversal(me.body, Directory); - return Directory; - }, - notNeedUndo: true - }, - movesection: { - execCommand: function(cmd, sourceSection, targetSection, isAfter) { - var me = this, - targetAddress, - target; - - if (!sourceSection || !targetSection || targetSection.level == -1) - return; - - targetAddress = isAfter - ? targetSection.endAddress - : targetSection.startAddress; - target = getNodeFromAddress(targetAddress, me.body); - - /* 判断目标地址是否被源章节包含 */ - if ( - !targetAddress || - !target || - isContainsAddress( - sourceSection.startAddress, - sourceSection.endAddress, - targetAddress - ) - ) - return; - - var startNode = getNodeFromAddress( - sourceSection.startAddress, - me.body - ), - endNode = getNodeFromAddress(sourceSection.endAddress, me.body), - current, - nextNode; - - if (isAfter) { - current = endNode; - while ( - current && - !( - domUtils.getPosition(startNode, current) & - domUtils.POSITION_FOLLOWING - ) - ) { - nextNode = current.previousSibling; - domUtils.insertAfter(target, current); - if (current == startNode) break; - current = nextNode; - } - } else { - current = startNode; - while ( - current && - !( - domUtils.getPosition(current, endNode) & - domUtils.POSITION_FOLLOWING - ) - ) { - nextNode = current.nextSibling; - target.parentNode.insertBefore(current, target); - if (current == endNode) break; - current = nextNode; - } - } - - me.fireEvent("updateSections"); - - /* 获取地址的包含关系 */ - function isContainsAddress(startAddress, endAddress, addressTarget) { - var isAfterStartAddress = false, - isBeforeEndAddress = false; - for (var i = 0; i < startAddress.length; i++) { - if (i >= addressTarget.length) break; - if (addressTarget[i] > startAddress[i]) { - isAfterStartAddress = true; - break; - } else if (addressTarget[i] < startAddress[i]) { - break; - } - } - for (var i = 0; i < endAddress.length; i++) { - if (i >= addressTarget.length) break; - if (addressTarget[i] < startAddress[i]) { - isBeforeEndAddress = true; - break; - } else if (addressTarget[i] > startAddress[i]) { - break; - } - } - return isAfterStartAddress && isBeforeEndAddress; - } - } - }, - deletesection: { - execCommand: function(cmd, section, keepChildren) { - var me = this; - - if (!section) return; - - function getNodeFromAddress(startAddress) { - var current = me.body; - for (var i = 0; i < startAddress.length; i++) { - if (!current.childNodes) return null; - current = current.childNodes[startAddress[i]]; - } - return current; - } - - var startNode = getNodeFromAddress(section.startAddress), - endNode = getNodeFromAddress(section.endAddress), - current = startNode, - nextNode; - - if (!keepChildren) { - while ( - current && - domUtils.inDoc(endNode, me.document) && - !( - domUtils.getPosition(current, endNode) & - domUtils.POSITION_FOLLOWING - ) - ) { - nextNode = current.nextSibling; - domUtils.remove(current); - current = nextNode; - } - } else { - domUtils.remove(current); - } - - me.fireEvent("updateSections"); - } - }, - selectsection: { - execCommand: function(cmd, section) { - if (!section && !section.dom) return false; - var me = this, - range = me.selection.getRange(), - address = { - startAddress: utils.clone(section.startAddress, []), - endAddress: utils.clone(section.endAddress, []) - }; - address.endAddress[address.endAddress.length - 1]++; - range.moveToAddress(address).select().scrollToView(); - return true; - }, - notNeedUndo: true - }, - scrolltosection: { - execCommand: function(cmd, section) { - if (!section && !section.dom) return false; - var me = this, - range = me.selection.getRange(), - address = { - startAddress: section.startAddress, - endAddress: section.endAddress - }; - address.endAddress[address.endAddress.length - 1]++; - range.moveToAddress(address).scrollToView(); - return true; - }, - notNeedUndo: true - } - } - }; - }); - - - // plugins/simpleupload.js - /** - * @description - * 简单上传:点击按钮,直接选择文件上传 - * @author Jinqn - * @date 2014-03-31 - */ - UE.plugin.register("simpleupload", function() { - var me = this, - isLoaded = false, - containerBtn; - - function initUploadBtn() { - var w = containerBtn.offsetWidth || 20, - h = containerBtn.offsetHeight || 20, - btnIframe = document.createElement("iframe"), - btnStyle = - "display:block;width:" + - w + - "px;height:" + - h + - "px;overflow:hidden;border:0;margin:0;padding:0;position:absolute;top:0;left:0;filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;cursor:pointer;"; - - domUtils.on(btnIframe, "load", function() { - var timestrap = (+new Date()).toString(36), - wrapper, - btnIframeDoc, - btnIframeBody; - - btnIframeDoc = - btnIframe.contentDocument || btnIframe.contentWindow.document; - btnIframeBody = btnIframeDoc.body; - wrapper = btnIframeDoc.createElement("div"); - - wrapper.innerHTML = - '
    ' + - '' + - "
    " + - ''; - - wrapper.className = "edui-" + me.options.theme; - wrapper.id = me.ui.id + "_iframeupload"; - btnIframeBody.style.cssText = btnStyle; - btnIframeBody.style.width = w + "px"; - btnIframeBody.style.height = h + "px"; - btnIframeBody.appendChild(wrapper); - - if (btnIframeBody.parentNode) { - btnIframeBody.parentNode.style.width = w + "px"; - btnIframeBody.parentNode.style.height = w + "px"; - } - - var form = btnIframeDoc.getElementById("edui_form_" + timestrap); - var input = btnIframeDoc.getElementById("edui_input_" + timestrap); - var iframe = btnIframeDoc.getElementById("edui_iframe_" + timestrap); - - domUtils.on(input, "change", function() { - if (!input.value) return; - var loadingId = "loading_" + (+new Date()).toString(36); - var params = - utils.serializeParam(me.queryCommandValue("serverparam")) || ""; - - var imageActionUrl = me.getActionUrl(me.getOpt("imageActionName")); - var allowFiles = me.getOpt("imageAllowFiles"); - - me.focus(); - me.execCommand( - "inserthtml", - '' - ); - - function callback() { - try { - var link, - json, - loader, - body = (iframe.contentDocument || iframe.contentWindow.document) - .body, - result = body.innerText || body.textContent || ""; - json = new Function("return " + result)(); - link = me.options.imageUrlPrefix + json.url; - console.log("🚀 ~ file: ueditor.all.min.js:27359 ~ callback ~ link:", link,me,json) - if (json.state == "SUCCESS" && json.url) { - loader = me.document.getElementById(loadingId); - domUtils.removeClasses(loader, "loadingclass"); - loader.setAttribute("src", link); - loader.setAttribute("_src", link); - loader.setAttribute("alt", json.original || ""); - loader.removeAttribute("id"); - me.fireEvent("contentchange"); - } else { - showErrorLoader && showErrorLoader(json.state); - } - } catch (er) { - showErrorLoader && - showErrorLoader(me.getLang("simpleupload.loadError")); - } - form.reset(); - domUtils.un(iframe, "load", callback); - } - function showErrorLoader(title) { - if (loadingId) { - var loader = me.document.getElementById(loadingId); - loader && domUtils.remove(loader); - me.fireEvent("showmessage", { - id: loadingId, - content: title, - type: "error", - timeout: 4000 - }); - } - } - - /* 判断后端配置是否没有加载成功 */ - if (!me.getOpt("imageActionName")) { - errorHandler(me.getLang("autoupload.errorLoadConfig")); - return; - } - // 判断文件格式是否错误 - var filename = input.value, - fileext = filename ? filename.substr(filename.lastIndexOf(".")) : ""; - if ( - !fileext || - (allowFiles && - (allowFiles.join("") + ".").indexOf(fileext.toLowerCase() + ".") == - -1) - ) { - showErrorLoader(me.getLang("simpleupload.exceedTypeError")); - return; - } - - domUtils.on(iframe, "load", callback); - form.action = utils.formatUrl( - imageActionUrl + - (imageActionUrl.indexOf("?") == -1 ? "?" : "&") + - params - ); - form.submit(); - }); - - var stateTimer; - me.addListener("selectionchange", function() { - clearTimeout(stateTimer); - stateTimer = setTimeout(function() { - var state = me.queryCommandState("simpleupload"); - if (state == -1) { - input.disabled = "disabled"; - } else { - input.disabled = false; - } - }, 400); - }); - isLoaded = true; - }); - - btnIframe.style.cssText = btnStyle; - containerBtn.appendChild(btnIframe); - } - - return { - bindEvents: { - ready: function() { - //设置loading的样式 - utils.cssRule( - "loading", - ".loadingclass{display:inline-block;cursor:default;background: url('" + - this.options.themePath + - this.options.theme + - "/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\n" + - ".loaderrorclass{display:inline-block;cursor:default;background: url('" + - this.options.themePath + - this.options.theme + - "/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;" + - "}", - this.document - ); - }, - /* 初始化简单上传按钮 */ - simpleuploadbtnready: function(type, container) { - containerBtn = container; - me.afterConfigReady(initUploadBtn); - } - }, - outputRule: function(root) { - utils.each(root.getNodesByTagName("img"), function(n) { - if (/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr("class"))) { - n.parentNode.removeChild(n); - } - }); - }, - commands: { - simpleupload: { - queryCommandState: function() { - return isLoaded ? 0 : -1; - } - } - } - }; - }); - - - // plugins/serverparam.js - /** - * 服务器提交的额外参数列表设置插件 - * @file - * @since 1.2.6.1 - */ - UE.plugin.register("serverparam", function() { - var me = this, - serverParam = {}; - - return { - commands: { - /** - * 修改服务器提交的额外参数列表,清除所有项 - * @command serverparam - * @method execCommand - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.execCommand('serverparam'); - * editor.queryCommandValue('serverparam'); //返回空 - * ``` - */ - /** - * 修改服务器提交的额外参数列表,删除指定项 - * @command serverparam - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } key 要清除的属性 - * @example - * ```javascript - * editor.execCommand('serverparam', 'name'); //删除属性name - * ``` - */ - /** - * 修改服务器提交的额外参数列表,使用键值添加项 - * @command serverparam - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { String } key 要添加的属性 - * @param { String } value 要添加属性的值 - * @example - * ```javascript - * editor.execCommand('serverparam', 'name', 'hello'); - * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'} - * ``` - */ - /** - * 修改服务器提交的额外参数列表,传入键值对对象添加多项 - * @command serverparam - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Object } key 传入的键值对对象 - * @example - * ```javascript - * editor.execCommand('serverparam', {'name': 'hello'}); - * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'} - * ``` - */ - /** - * 修改服务器提交的额外参数列表,使用自定义函数添加多项 - * @command serverparam - * @method execCommand - * @param { String } cmd 命令字符串 - * @param { Function } key 自定义获取参数的函数 - * @example - * ```javascript - * editor.execCommand('serverparam', function(editor){ - * return {'key': 'value'}; - * }); - * editor.queryCommandValue('serverparam'); //返回对象 {'key': 'value'} - * ``` - */ - - /** - * 获取服务器提交的额外参数列表 - * @command serverparam - * @method queryCommandValue - * @param { String } cmd 命令字符串 - * @example - * ```javascript - * editor.queryCommandValue( 'serverparam' ); //返回对象 {'key': 'value'} - * ``` - */ - serverparam: { - execCommand: function(cmd, key, value) { - if (key === undefined || key === null) { - //不传参数,清空列表 - serverParam = {}; - } else if (utils.isString(key)) { - //传入键值 - if (value === undefined || value === null) { - delete serverParam[key]; - } else { - serverParam[key] = value; - } - } else if (utils.isObject(key)) { - //传入对象,覆盖列表项 - utils.extend(serverParam, key, false); - } else if (utils.isFunction(key)) { - //传入函数,添加列表项 - utils.extend(serverParam, key(), false); - } - }, - queryCommandValue: function() { - return serverParam || {}; - } - } - } - }; - }); - - - // plugins/insertfile.js - /** - * 插入附件 - */ - UE.plugin.register("insertfile", function() { - var me = this; - - function getFileIcon(url) { - var ext = url.substr(url.lastIndexOf(".") + 1).toLowerCase(), - maps = { - rar: "icon_rar.gif", - zip: "icon_rar.gif", - tar: "icon_rar.gif", - gz: "icon_rar.gif", - bz2: "icon_rar.gif", - doc: "icon_doc.gif", - docx: "icon_doc.gif", - pdf: "icon_pdf.gif", - mp3: "icon_mp3.gif", - xls: "icon_xls.gif", - chm: "icon_chm.gif", - ppt: "icon_ppt.gif", - pptx: "icon_ppt.gif", - avi: "icon_mv.gif", - rmvb: "icon_mv.gif", - wmv: "icon_mv.gif", - flv: "icon_mv.gif", - swf: "icon_mv.gif", - rm: "icon_mv.gif", - exe: "icon_exe.gif", - psd: "icon_psd.gif", - txt: "icon_txt.gif", - jpg: "icon_jpg.gif", - png: "icon_jpg.gif", - jpeg: "icon_jpg.gif", - gif: "icon_jpg.gif", - ico: "icon_jpg.gif", - bmp: "icon_jpg.gif" - }; - return maps[ext] ? maps[ext] : maps["txt"]; - } - - return { - commands: { - insertfile: { - execCommand: function(command, filelist) { - filelist = utils.isArray(filelist) ? filelist : [filelist]; - - if (me.fireEvent("beforeinsertfile", filelist) === true) { - return; - } - - var i, - item, - icon, - title, - html = "", - URL = me.getOpt("UEDITOR_HOME_URL"), - iconDir = - URL + - (URL.substr(URL.length - 1) == "/" ? "" : "/") + - "dialogs/attachment/fileTypeImages/"; - for (i = 0; i < filelist.length; i++) { - item = filelist[i]; - icon = iconDir + getFileIcon(item.url); - title = - item.title || item.url.substr(item.url.lastIndexOf("/") + 1); - html += - '

    ' + - '' + - '' + - title + - "" + - "

    "; - } - me.execCommand("insertHtml", html); - - me.fireEvent("afterinsertfile", filelist); - } - } - } - }; - }); - - - // ui/ui.js - var baidu = baidu || {}; - baidu.editor = baidu.editor || {}; - UE.ui = baidu.editor.ui = {}; - - - // ui/uiutils.js - (function() { - var browser = baidu.editor.browser, - domUtils = baidu.editor.dom.domUtils; - - var magic = "$EDITORUI"; - var root = (window[magic] = {}); - var uidMagic = "ID" + magic; - var uidCount = 0; - - var uiUtils = (baidu.editor.ui.uiUtils = { - uid: function(obj) { - return obj ? obj[uidMagic] || (obj[uidMagic] = ++uidCount) : ++uidCount; - }, - hook: function(fn, callback) { - var dg; - if (fn && fn._callbacks) { - dg = fn; - } else { - dg = function() { - var q; - if (fn) { - q = fn.apply(this, arguments); - } - var callbacks = dg._callbacks; - var k = callbacks.length; - while (k--) { - var r = callbacks[k].apply(this, arguments); - if (q === undefined) { - q = r; - } - } - return q; - }; - dg._callbacks = []; - } - dg._callbacks.push(callback); - return dg; - }, - createElementByHtml: function(html) { - var el = document.createElement("div"); - el.innerHTML = html; - el = el.firstChild; - el.parentNode.removeChild(el); - return el; - }, - getViewportElement: function() { - return browser.ie && browser.quirks - ? document.body - : document.documentElement; - }, - getClientRect: function(element) { - var bcr; - //trace IE6下在控制编辑器显隐时可能会报错,catch一下 - try { - bcr = element.getBoundingClientRect(); - } catch (e) { - bcr = { left: 0, top: 0, height: 0, width: 0 }; - } - var rect = { - left: Math.round(bcr.left), - top: Math.round(bcr.top), - height: Math.round(bcr.bottom - bcr.top), - width: Math.round(bcr.right - bcr.left) - }; - var doc; - while ( - (doc = element.ownerDocument) !== document && - (element = domUtils.getWindow(doc).frameElement) - ) { - bcr = element.getBoundingClientRect(); - rect.left += bcr.left; - rect.top += bcr.top; - } - rect.bottom = rect.top + rect.height; - rect.right = rect.left + rect.width; - return rect; - }, - getViewportRect: function() { - var viewportEl = uiUtils.getViewportElement(); - var width = (window.innerWidth || viewportEl.clientWidth) | 0; - var height = (window.innerHeight || viewportEl.clientHeight) | 0; - return { - left: 0, - top: 0, - height: height, - width: width, - bottom: height, - right: width - }; - }, - setViewportOffset: function(element, offset) { - var rect; - var fixedLayer = uiUtils.getFixedLayer(); - if (element.parentNode === fixedLayer) { - element.style.left = offset.left + "px"; - element.style.top = offset.top + "px"; - } else { - domUtils.setViewportOffset(element, offset); - } - }, - getEventOffset: function(evt) { - var el = evt.target || evt.srcElement; - var rect = uiUtils.getClientRect(el); - var offset = uiUtils.getViewportOffsetByEvent(evt); - return { - left: offset.left - rect.left, - top: offset.top - rect.top - }; - }, - getViewportOffsetByEvent: function(evt) { - var el = evt.target || evt.srcElement; - var frameEl = domUtils.getWindow(el).frameElement; - var offset = { - left: evt.clientX, - top: evt.clientY - }; - if (frameEl && el.ownerDocument !== document) { - var rect = uiUtils.getClientRect(frameEl); - offset.left += rect.left; - offset.top += rect.top; - } - return offset; - }, - setGlobal: function(id, obj) { - root[id] = obj; - return magic + '["' + id + '"]'; - }, - unsetGlobal: function(id) { - delete root[id]; - }, - copyAttributes: function(tgt, src) { - var attributes = src.attributes; - var k = attributes.length; - while (k--) { - var attrNode = attributes[k]; - if ( - attrNode.nodeName != "style" && - attrNode.nodeName != "class" && - (!browser.ie || attrNode.specified) - ) { - tgt.setAttribute(attrNode.nodeName, attrNode.nodeValue); - } - } - if (src.className) { - domUtils.addClass(tgt, src.className); - } - if (src.style.cssText) { - tgt.style.cssText += ";" + src.style.cssText; - } - }, - removeStyle: function(el, styleName) { - if (el.style.removeProperty) { - el.style.removeProperty(styleName); - } else if (el.style.removeAttribute) { - el.style.removeAttribute(styleName); - } else throw ""; - }, - contains: function(elA, elB) { - return ( - elA && - elB && - (elA === elB - ? false - : elA.contains - ? elA.contains(elB) - : elA.compareDocumentPosition(elB) & 16) - ); - }, - startDrag: function(evt, callbacks, doc) { - var doc = doc || document; - var startX = evt.clientX; - var startY = evt.clientY; - function handleMouseMove(evt) { - var x = evt.clientX - startX; - var y = evt.clientY - startY; - callbacks.ondragmove(x, y, evt); - if (evt.stopPropagation) { - evt.stopPropagation(); - } else { - evt.cancelBubble = true; - } - } - if (doc.addEventListener) { - function handleMouseUp(evt) { - doc.removeEventListener("mousemove", handleMouseMove, true); - doc.removeEventListener("mouseup", handleMouseUp, true); - window.removeEventListener("mouseup", handleMouseUp, true); - callbacks.ondragstop(); - } - doc.addEventListener("mousemove", handleMouseMove, true); - doc.addEventListener("mouseup", handleMouseUp, true); - window.addEventListener("mouseup", handleMouseUp, true); - - evt.preventDefault(); - } else { - var elm = evt.srcElement; - elm.setCapture(); - function releaseCaptrue() { - elm.releaseCapture(); - elm.detachEvent("onmousemove", handleMouseMove); - elm.detachEvent("onmouseup", releaseCaptrue); - elm.detachEvent("onlosecaptrue", releaseCaptrue); - callbacks.ondragstop(); - } - elm.attachEvent("onmousemove", handleMouseMove); - elm.attachEvent("onmouseup", releaseCaptrue); - elm.attachEvent("onlosecaptrue", releaseCaptrue); - evt.returnValue = false; - } - callbacks.ondragstart(); - }, - getFixedLayer: function() { - var layer = document.getElementById("edui_fixedlayer"); - if (layer == null) { - layer = document.createElement("div"); - layer.id = "edui_fixedlayer"; - document.body.appendChild(layer); - if (browser.ie && browser.version <= 8) { - layer.style.position = "absolute"; - bindFixedLayer(); - setTimeout(updateFixedOffset); - } else { - layer.style.position = "fixed"; - } - layer.style.left = "0"; - layer.style.top = "0"; - layer.style.width = "0"; - layer.style.height = "0"; - } - return layer; - }, - makeUnselectable: function(element) { - if (browser.opera || (browser.ie && browser.version < 9)) { - element.unselectable = "on"; - if (element.hasChildNodes()) { - for (var i = 0; i < element.childNodes.length; i++) { - if (element.childNodes[i].nodeType == 1) { - uiUtils.makeUnselectable(element.childNodes[i]); - } - } - } - } else { - if (element.style.MozUserSelect !== undefined) { - element.style.MozUserSelect = "none"; - } else if (element.style.WebkitUserSelect !== undefined) { - element.style.WebkitUserSelect = "none"; - } else if (element.style.KhtmlUserSelect !== undefined) { - element.style.KhtmlUserSelect = "none"; - } - } - } - }); - function updateFixedOffset() { - var layer = document.getElementById("edui_fixedlayer"); - uiUtils.setViewportOffset(layer, { - left: 0, - top: 0 - }); - // layer.style.display = 'none'; - // layer.style.display = 'block'; - - //#trace: 1354 - // setTimeout(updateFixedOffset); - } - function bindFixedLayer(adjOffset) { - domUtils.on(window, "scroll", updateFixedOffset); - domUtils.on( - window, - "resize", - baidu.editor.utils.defer(updateFixedOffset, 0, true) - ); - } - })(); - - - // ui/uibase.js - (function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - EventBase = baidu.editor.EventBase, - UIBase = (baidu.editor.ui.UIBase = function() {}); - - UIBase.prototype = { - className: "", - uiName: "", - initOptions: function(options) { - var me = this; - for (var k in options) { - me[k] = options[k]; - } - this.id = this.id || "edui" + uiUtils.uid(); - }, - initUIBase: function() { - this._globalKey = utils.unhtml(uiUtils.setGlobal(this.id, this)); - }, - render: function(holder) { - var html = this.renderHtml(); - var el = uiUtils.createElementByHtml(html); - - //by xuheng 给每个node添加class - var list = domUtils.getElementsByTagName(el, "*"); - var theme = "edui-" + (this.theme || this.editor.options.theme); - var layer = document.getElementById("edui_fixedlayer"); - for (var i = 0, node; (node = list[i++]); ) { - domUtils.addClass(node, theme); - } - domUtils.addClass(el, theme); - if (layer) { - layer.className = ""; - domUtils.addClass(layer, theme); - } - - var seatEl = this.getDom(); - if (seatEl != null) { - seatEl.parentNode.replaceChild(el, seatEl); - uiUtils.copyAttributes(el, seatEl); - } else { - if (typeof holder == "string") { - holder = document.getElementById(holder); - } - holder = holder || uiUtils.getFixedLayer(); - domUtils.addClass(holder, theme); - holder.appendChild(el); - } - this.postRender(); - }, - getDom: function(name) { - if (!name) { - return document.getElementById(this.id); - } else { - return document.getElementById(this.id + "_" + name); - } - }, - postRender: function() { - this.fireEvent("postrender"); - }, - getHtmlTpl: function() { - return ""; - }, - formatHtml: function(tpl) { - var prefix = "edui-" + this.uiName; - return tpl - .replace(/##/g, this.id) - .replace(/%%-/g, this.uiName ? prefix + "-" : "") - .replace(/%%/g, (this.uiName ? prefix : "") + " " + this.className) - .replace(/\$\$/g, this._globalKey); - }, - renderHtml: function() { - return this.formatHtml(this.getHtmlTpl()); - }, - dispose: function() { - var box = this.getDom(); - if (box) baidu.editor.dom.domUtils.remove(box); - uiUtils.unsetGlobal(this.id); - } - }; - utils.inherits(UIBase, EventBase); - })(); - - - // ui/separator.js - (function() { - var utils = baidu.editor.utils, - UIBase = baidu.editor.ui.UIBase, - Separator = (baidu.editor.ui.Separator = function(options) { - this.initOptions(options); - this.initSeparator(); - }); - Separator.prototype = { - uiName: "separator", - initSeparator: function() { - this.initUIBase(); - }, - getHtmlTpl: function() { - return '
    '; - } - }; - utils.inherits(Separator, UIBase); - })(); - - - // ui/mask.js - ///import core - ///import uicore - (function() { - var utils = baidu.editor.utils, - domUtils = baidu.editor.dom.domUtils, - UIBase = baidu.editor.ui.UIBase, - uiUtils = baidu.editor.ui.uiUtils; - - var Mask = (baidu.editor.ui.Mask = function(options) { - this.initOptions(options); - this.initUIBase(); - }); - Mask.prototype = { - getHtmlTpl: function() { - return '
    '; - }, - postRender: function() { - var me = this; - domUtils.on(window, "resize", function() { - setTimeout(function() { - if (!me.isHidden()) { - me._fill(); - } - }); - }); - }, - show: function(zIndex) { - this._fill(); - this.getDom().style.display = ""; - this.getDom().style.zIndex = zIndex; - }, - hide: function() { - this.getDom().style.display = "none"; - this.getDom().style.zIndex = ""; - }, - isHidden: function() { - return this.getDom().style.display == "none"; - }, - _onMouseDown: function() { - return false; - }, - _onClick: function(e, target) { - this.fireEvent("click", e, target); - }, - _fill: function() { - var el = this.getDom(); - var vpRect = uiUtils.getViewportRect(); - el.style.width = vpRect.width + "px"; - el.style.height = vpRect.height + "px"; - } - }; - utils.inherits(Mask, UIBase); - })(); - - - // ui/popup.js - ///import core - ///import uicore - (function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - domUtils = baidu.editor.dom.domUtils, - UIBase = baidu.editor.ui.UIBase, - Popup = (baidu.editor.ui.Popup = function(options) { - this.initOptions(options); - this.initPopup(); - }); - - var allPopups = []; - function closeAllPopup(evt, el) { - for (var i = 0; i < allPopups.length; i++) { - var pop = allPopups[i]; - if (!pop.isHidden()) { - if (pop.queryAutoHide(el) !== false) { - if ( - evt && - /scroll/gi.test(evt.type) && - pop.className == "edui-wordpastepop" - ) - return; - pop.hide(); - } - } - } - - if (allPopups.length) pop.editor.fireEvent("afterhidepop"); - } - - Popup.postHide = closeAllPopup; - - var ANCHOR_CLASSES = [ - "edui-anchor-topleft", - "edui-anchor-topright", - "edui-anchor-bottomleft", - "edui-anchor-bottomright" - ]; - Popup.prototype = { - SHADOW_RADIUS: 5, - content: null, - _hidden: false, - autoRender: true, - canSideLeft: true, - canSideUp: true, - initPopup: function() { - this.initUIBase(); - allPopups.push(this); - }, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ' + - ' ' + - '
    ' + - '
    ' + - this.getContentHtmlTpl() + - "
    " + - "
    " + - "
    " - ); - }, - getContentHtmlTpl: function() { - if (this.content) { - if (typeof this.content == "string") { - return this.content; - } - return this.content.renderHtml(); - } else { - return ""; - } - }, - _UIBase_postRender: UIBase.prototype.postRender, - postRender: function() { - if (this.content instanceof UIBase) { - this.content.postRender(); - } - - //捕获鼠标滚轮 - if (this.captureWheel && !this.captured) { - this.captured = true; - - var winHeight = - (document.documentElement.clientHeight || - document.body.clientHeight) - 80, - _height = this.getDom().offsetHeight, - _top = uiUtils.getClientRect(this.combox.getDom()).top, - content = this.getDom("content"), - ifr = this.getDom("body").getElementsByTagName("iframe"), - me = this; - - ifr.length && (ifr = ifr[0]); - - while (_top + _height > winHeight) { - _height -= 30; - } - content.style.height = _height + "px"; - //同步更改iframe高度 - ifr && (ifr.style.height = _height + "px"); - - //阻止在combox上的鼠标滚轮事件, 防止用户的正常操作被误解 - if (window.XMLHttpRequest) { - domUtils.on( - content, - "onmousewheel" in document.body ? "mousewheel" : "DOMMouseScroll", - function(e) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.returnValue = false; - } - - if (e.wheelDelta) { - content.scrollTop -= e.wheelDelta / 120 * 60; - } else { - content.scrollTop -= e.detail / -3 * 60; - } - } - ); - } else { - //ie6 - domUtils.on(this.getDom(), "mousewheel", function(e) { - e.returnValue = false; - - me.getDom("content").scrollTop -= e.wheelDelta / 120 * 60; - }); - } - } - this.fireEvent("postRenderAfter"); - this.hide(true); - this._UIBase_postRender(); - }, - _doAutoRender: function() { - if (!this.getDom() && this.autoRender) { - this.render(); - } - }, - mesureSize: function() { - var box = this.getDom("content"); - return uiUtils.getClientRect(box); - }, - fitSize: function() { - if (this.captureWheel && this.sized) { - return this.__size; - } - this.sized = true; - var popBodyEl = this.getDom("body"); - popBodyEl.style.width = ""; - popBodyEl.style.height = ""; - var size = this.mesureSize(); - if (this.captureWheel) { - popBodyEl.style.width = -(-20 - size.width) + "px"; - var height = parseInt(this.getDom("content").style.height, 10); - !window.isNaN(height) && (size.height = height); - } else { - popBodyEl.style.width = size.width + "px"; - } - popBodyEl.style.height = size.height + "px"; - this.__size = size; - this.captureWheel && (this.getDom("content").style.overflow = "auto"); - return size; - }, - showAnchor: function(element, hoz) { - this.showAnchorRect(uiUtils.getClientRect(element), hoz); - }, - showAnchorRect: function(rect, hoz, adj) { - this._doAutoRender(); - var vpRect = uiUtils.getViewportRect(); - this.getDom().style.visibility = "hidden"; - this._show(); - var popSize = this.fitSize(); - - var sideLeft, sideUp, left, top; - if (hoz) { - sideLeft = - this.canSideLeft && - (rect.right + popSize.width > vpRect.right && - rect.left > popSize.width); - sideUp = - this.canSideUp && - (rect.top + popSize.height > vpRect.bottom && - rect.bottom > popSize.height); - left = sideLeft ? rect.left - popSize.width : rect.right; - top = sideUp ? rect.bottom - popSize.height : rect.top; - } else { - sideLeft = - this.canSideLeft && - (rect.right + popSize.width > vpRect.right && - rect.left > popSize.width); - sideUp = - this.canSideUp && - (rect.top + popSize.height > vpRect.bottom && - rect.bottom > popSize.height); - left = sideLeft ? rect.right - popSize.width : rect.left; - top = sideUp ? rect.top - popSize.height : rect.bottom; - } - - var popEl = this.getDom(); - uiUtils.setViewportOffset(popEl, { - left: left, - top: top - }); - domUtils.removeClasses(popEl, ANCHOR_CLASSES); - popEl.className += - " " + ANCHOR_CLASSES[(sideUp ? 1 : 0) * 2 + (sideLeft ? 1 : 0)]; - if (this.editor) { - popEl.style.zIndex = this.editor.container.style.zIndex * 1 + 10; - baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = - popEl.style.zIndex - 1; - } - this.getDom().style.visibility = "visible"; - }, - showAt: function(offset) { - var left = offset.left; - var top = offset.top; - var rect = { - left: left, - top: top, - right: left, - bottom: top, - height: 0, - width: 0 - }; - this.showAnchorRect(rect, false, true); - }, - _show: function() { - if (this._hidden) { - var box = this.getDom(); - box.style.display = ""; - this._hidden = false; - // if (box.setActive) { - // box.setActive(); - // } - this.fireEvent("show"); - } - }, - isHidden: function() { - return this._hidden; - }, - show: function() { - this._doAutoRender(); - this._show(); - }, - hide: function(notNofity) { - if (!this._hidden && this.getDom()) { - this.getDom().style.display = "none"; - this._hidden = true; - if (!notNofity) { - this.fireEvent("hide"); - } - } - }, - queryAutoHide: function(el) { - return !el || !uiUtils.contains(this.getDom(), el); - } - }; - utils.inherits(Popup, UIBase); - - domUtils.on(document, "mousedown", function(evt) { - var el = evt.target || evt.srcElement; - closeAllPopup(evt, el); - }); - domUtils.on(window, "scroll", function(evt, el) { - closeAllPopup(evt, el); - }); - })(); - - - // ui/colorpicker.js - ///import core - ///import uicore - (function() { - var utils = baidu.editor.utils, - UIBase = baidu.editor.ui.UIBase, - ColorPicker = (baidu.editor.ui.ColorPicker = function(options) { - this.initOptions(options); - this.noColorText = this.noColorText || this.editor.getLang("clearColor"); - this.initUIBase(); - }); - - ColorPicker.prototype = { - getHtmlTpl: function() { - return genColorPicker(this.noColorText, this.editor); - }, - _onTableClick: function(evt) { - var tgt = evt.target || evt.srcElement; - var color = tgt.getAttribute("data-color"); - if (color) { - this.fireEvent("pickcolor", color); - } - }, - _onTableOver: function(evt) { - var tgt = evt.target || evt.srcElement; - var color = tgt.getAttribute("data-color"); - if (color) { - this.getDom("preview").style.backgroundColor = color; - } - }, - _onTableOut: function() { - this.getDom("preview").style.backgroundColor = ""; - }, - _onPickNoColor: function() { - this.fireEvent("picknocolor"); - } - }; - utils.inherits(ColorPicker, UIBase); - - var COLORS = ("ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646," + - "f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada," + - "d8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5," + - "bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f," + - "a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09," + - "7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806," + - "c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,").split( - "," - ); - - function genColorPicker(noColorText, editor) { - var html = - '
    ' + - '
    ' + - '
    ' + - '
    ' + - noColorText + - "
    " + - "
    " + - '' + - '" + - ''; - for (var i = 0; i < COLORS.length; i++) { - if (i && i % 10 === 0) { - html += - "" + - (i == 60 - ? '" - : "") + - ""; - } - html += i < 70 - ? '" - : ""; - } - html += "
    ' + - editor.getLang("themeColor") + - "
    ' + - editor.getLang("standardColor") + - "
    = 60 - ? "border-width:1px;" - : i >= 10 && i < 20 - ? "border-width:1px 1px 0 1px;" - : "border-width:0 1px 0 1px;") + - '"' + - ">
    "; - return html; - } - })(); - - - // ui/tablepicker.js - ///import core - ///import uicore - (function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - UIBase = baidu.editor.ui.UIBase; - - var TablePicker = (baidu.editor.ui.TablePicker = function(options) { - this.initOptions(options); - this.initTablePicker(); - }); - TablePicker.prototype = { - defaultNumRows: 10, - defaultNumCols: 10, - maxNumRows: 20, - maxNumCols: 20, - numRows: 10, - numCols: 10, - lengthOfCellSide: 22, - initTablePicker: function() { - this.initUIBase(); - }, - getHtmlTpl: function() { - var me = this; - return ( - '
    ' + - '
    ' + - '
    ' + - '' + - "
    " + - '
    " + - '
    ' + - "
    " + - "
    " + - "
    " - ); - }, - _UIBase_render: UIBase.prototype.render, - render: function(holder) { - this._UIBase_render(holder); - this.getDom("label").innerHTML = - "0" + - this.editor.getLang("t_row") + - " x 0" + - this.editor.getLang("t_col"); - }, - _track: function(numCols, numRows) { - var style = this.getDom("overlay").style; - var sideLen = this.lengthOfCellSide; - style.width = numCols * sideLen + "px"; - style.height = numRows * sideLen + "px"; - var label = this.getDom("label"); - label.innerHTML = - numCols + - this.editor.getLang("t_col") + - " x " + - numRows + - this.editor.getLang("t_row"); - this.numCols = numCols; - this.numRows = numRows; - }, - _onMouseOver: function(evt, el) { - var rel = evt.relatedTarget || evt.fromElement; - if (!uiUtils.contains(el, rel) && el !== rel) { - this.getDom("label").innerHTML = - "0" + - this.editor.getLang("t_col") + - " x 0" + - this.editor.getLang("t_row"); - this.getDom("overlay").style.visibility = ""; - } - }, - _onMouseOut: function(evt, el) { - var rel = evt.relatedTarget || evt.toElement; - if (!uiUtils.contains(el, rel) && el !== rel) { - this.getDom("label").innerHTML = - "0" + - this.editor.getLang("t_col") + - " x 0" + - this.editor.getLang("t_row"); - this.getDom("overlay").style.visibility = "hidden"; - } - }, - _onMouseMove: function(evt, el) { - var style = this.getDom("overlay").style; - var offset = uiUtils.getEventOffset(evt); - var sideLen = this.lengthOfCellSide; - var numCols = Math.ceil(offset.left / sideLen); - var numRows = Math.ceil(offset.top / sideLen); - this._track(numCols, numRows); - }, - _onClick: function() { - this.fireEvent("picktable", this.numCols, this.numRows); - } - }; - utils.inherits(TablePicker, UIBase); - })(); - - - // ui/stateful.js - (function() { - var browser = baidu.editor.browser, - domUtils = baidu.editor.dom.domUtils, - uiUtils = baidu.editor.ui.uiUtils; - - var TPL_STATEFUL = - 'onmousedown="$$.Stateful_onMouseDown(event, this);"' + - ' onmouseup="$$.Stateful_onMouseUp(event, this);"' + - (browser.ie - ? ' onmouseenter="$$.Stateful_onMouseEnter(event, this);"' + - ' onmouseleave="$$.Stateful_onMouseLeave(event, this);"' - : ' onmouseover="$$.Stateful_onMouseOver(event, this);"' + - ' onmouseout="$$.Stateful_onMouseOut(event, this);"'); - - baidu.editor.ui.Stateful = { - alwalysHoverable: false, - target: null, //目标元素和this指向dom不一样 - Stateful_init: function() { - this._Stateful_dGetHtmlTpl = this.getHtmlTpl; - this.getHtmlTpl = this.Stateful_getHtmlTpl; - }, - Stateful_getHtmlTpl: function() { - var tpl = this._Stateful_dGetHtmlTpl(); - // 使用function避免$转义 - return tpl.replace(/stateful/g, function() { - return TPL_STATEFUL; - }); - }, - Stateful_onMouseEnter: function(evt, el) { - this.target = el; - if (!this.isDisabled() || this.alwalysHoverable) { - this.addState("hover"); - this.fireEvent("over"); - } - }, - Stateful_onMouseLeave: function(evt, el) { - if (!this.isDisabled() || this.alwalysHoverable) { - this.removeState("hover"); - this.removeState("active"); - this.fireEvent("out"); - } - }, - Stateful_onMouseOver: function(evt, el) { - var rel = evt.relatedTarget; - if (!uiUtils.contains(el, rel) && el !== rel) { - this.Stateful_onMouseEnter(evt, el); - } - }, - Stateful_onMouseOut: function(evt, el) { - var rel = evt.relatedTarget; - if (!uiUtils.contains(el, rel) && el !== rel) { - this.Stateful_onMouseLeave(evt, el); - } - }, - Stateful_onMouseDown: function(evt, el) { - if (!this.isDisabled()) { - this.addState("active"); - } - }, - Stateful_onMouseUp: function(evt, el) { - if (!this.isDisabled()) { - this.removeState("active"); - } - }, - Stateful_postRender: function() { - if (this.disabled && !this.hasState("disabled")) { - this.addState("disabled"); - } - }, - hasState: function(state) { - return domUtils.hasClass(this.getStateDom(), "edui-state-" + state); - }, - addState: function(state) { - if (!this.hasState(state)) { - this.getStateDom().className += " edui-state-" + state; - } - }, - removeState: function(state) { - if (this.hasState(state)) { - domUtils.removeClasses(this.getStateDom(), ["edui-state-" + state]); - } - }, - getStateDom: function() { - return this.getDom("state"); - }, - isChecked: function() { - return this.hasState("checked"); - }, - setChecked: function(checked) { - if (!this.isDisabled() && checked) { - this.addState("checked"); - } else { - this.removeState("checked"); - } - }, - isDisabled: function() { - return this.hasState("disabled"); - }, - setDisabled: function(disabled) { - if (disabled) { - this.removeState("hover"); - this.removeState("checked"); - this.removeState("active"); - this.addState("disabled"); - } else { - this.removeState("disabled"); - } - } - }; - })(); - - - // ui/button.js - ///import core - ///import uicore - ///import ui/stateful.js - (function() { - var utils = baidu.editor.utils, - UIBase = baidu.editor.ui.UIBase, - Stateful = baidu.editor.ui.Stateful, - Button = (baidu.editor.ui.Button = function(options) { - if (options.name) { - var btnName = options.name; - var cssRules = options.cssRules; - if (!options.className) { - options.className = "edui-for-" + btnName; - } - options.cssRules = - ".edui-" + - (options.theme || "default") + - " .edui-toolbar .edui-button.edui-for-" + - btnName + - " .edui-icon {" + - cssRules + - "}"; - } - this.initOptions(options); - this.initButton(); - }); - Button.prototype = { - uiName: "button", - label: "", - title: "", - showIcon: true, - showText: true, - cssRules: "", - initButton: function() { - this.initUIBase(); - this.Stateful_init(); - if (this.cssRules) { - utils.cssRule("edui-customize-" + this.name + "-style", this.cssRules); - } - }, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ' + - '
    ' + - (this.showIcon ? '
    ' : "") + - (this.showText - ? '
    ' + this.label + "
    " - : "") + - "
    " + - "
    " + - "
    " - ); - }, - postRender: function() { - this.Stateful_postRender(); - this.setDisabled(this.disabled); - }, - _onMouseDown: function(e) { - var target = e.target || e.srcElement, - tagName = target && target.tagName && target.tagName.toLowerCase(); - if (tagName == "input" || tagName == "object" || tagName == "object") { - return false; - } - }, - _onClick: function() { - if (!this.isDisabled()) { - this.fireEvent("click"); - } - }, - setTitle: function(text) { - var label = this.getDom("label"); - label.innerHTML = text; - } - }; - utils.inherits(Button, UIBase); - utils.extend(Button.prototype, Stateful); - })(); - - - // ui/splitbutton.js - ///import core - ///import uicore - ///import ui/stateful.js - (function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - domUtils = baidu.editor.dom.domUtils, - UIBase = baidu.editor.ui.UIBase, - Stateful = baidu.editor.ui.Stateful, - SplitButton = (baidu.editor.ui.SplitButton = function(options) { - this.initOptions(options); - this.initSplitButton(); - }); - SplitButton.prototype = { - popup: null, - uiName: "splitbutton", - title: "", - initSplitButton: function() { - this.initUIBase(); - this.Stateful_init(); - var me = this; - if (this.popup != null) { - var popup = this.popup; - this.popup = null; - this.setPopup(popup); - } - }, - _UIBase_postRender: UIBase.prototype.postRender, - postRender: function() { - this.Stateful_postRender(); - this._UIBase_postRender(); - }, - setPopup: function(popup) { - if (this.popup === popup) return; - if (this.popup != null) { - this.popup.dispose(); - } - popup.addListener("show", utils.bind(this._onPopupShow, this)); - popup.addListener("hide", utils.bind(this._onPopupHide, this)); - popup.addListener( - "postrender", - utils.bind(function() { - popup - .getDom("body") - .appendChild( - uiUtils.createElementByHtml( - '
    ' - ) - ); - popup.getDom().className += " " + this.className; - }, this) - ); - this.popup = popup; - }, - _onPopupShow: function() { - this.addState("opened"); - }, - _onPopupHide: function() { - this.removeState("opened"); - }, - getHtmlTpl: function() { - return ( - '
    ' + - "
    ' + - '
    ' + - '
    ' + - "
    " + - '
    ' + - '
    ' + - "
    " - ); - }, - showPopup: function() { - // 当popup往上弹出的时候,做特殊处理 - var rect = uiUtils.getClientRect(this.getDom()); - rect.top -= this.popup.SHADOW_RADIUS; - rect.height += this.popup.SHADOW_RADIUS; - this.popup.showAnchorRect(rect); - }, - _onArrowClick: function(event, el) { - if (!this.isDisabled()) { - this.showPopup(); - } - }, - _onButtonClick: function() { - if (!this.isDisabled()) { - this.fireEvent("buttonclick"); - } - } - }; - utils.inherits(SplitButton, UIBase); - utils.extend(SplitButton.prototype, Stateful, true); - })(); - - - // ui/colorbutton.js - ///import core - ///import uicore - ///import ui/colorpicker.js - ///import ui/popup.js - ///import ui/splitbutton.js - (function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - ColorPicker = baidu.editor.ui.ColorPicker, - Popup = baidu.editor.ui.Popup, - SplitButton = baidu.editor.ui.SplitButton, - ColorButton = (baidu.editor.ui.ColorButton = function(options) { - this.initOptions(options); - this.initColorButton(); - }); - ColorButton.prototype = { - initColorButton: function() { - var me = this; - this.popup = new Popup({ - content: new ColorPicker({ - noColorText: me.editor.getLang("clearColor"), - editor: me.editor, - onpickcolor: function(t, color) { - me._onPickColor(color); - }, - onpicknocolor: function(t, color) { - me._onPickNoColor(color); - } - }), - editor: me.editor - }); - this.initSplitButton(); - }, - _SplitButton_postRender: SplitButton.prototype.postRender, - postRender: function() { - this._SplitButton_postRender(); - this.getDom("button_body").appendChild( - uiUtils.createElementByHtml( - '
    ' - ) - ); - this.getDom().className += " edui-colorbutton"; - }, - setColor: function(color) { - this.getDom("colorlump").style.backgroundColor = color; - this.color = color; - }, - _onPickColor: function(color) { - if (this.fireEvent("pickcolor", color) !== false) { - this.setColor(color); - this.popup.hide(); - } - }, - _onPickNoColor: function(color) { - if (this.fireEvent("picknocolor") !== false) { - this.popup.hide(); - } - } - }; - utils.inherits(ColorButton, SplitButton); - })(); - - - // ui/tablebutton.js - ///import core - ///import uicore - ///import ui/popup.js - ///import ui/tablepicker.js - ///import ui/splitbutton.js - (function() { - var utils = baidu.editor.utils, - Popup = baidu.editor.ui.Popup, - TablePicker = baidu.editor.ui.TablePicker, - SplitButton = baidu.editor.ui.SplitButton, - TableButton = (baidu.editor.ui.TableButton = function(options) { - this.initOptions(options); - this.initTableButton(); - }); - TableButton.prototype = { - initTableButton: function() { - var me = this; - this.popup = new Popup({ - content: new TablePicker({ - editor: me.editor, - onpicktable: function(t, numCols, numRows) { - me._onPickTable(numCols, numRows); - } - }), - editor: me.editor - }); - this.initSplitButton(); - }, - _onPickTable: function(numCols, numRows) { - if (this.fireEvent("picktable", numCols, numRows) !== false) { - this.popup.hide(); - } - } - }; - utils.inherits(TableButton, SplitButton); - })(); - - - // ui/autotypesetpicker.js - ///import core - ///import uicore - (function() { - var utils = baidu.editor.utils, - UIBase = baidu.editor.ui.UIBase; - - var AutoTypeSetPicker = (baidu.editor.ui.AutoTypeSetPicker = function( - options - ) { - this.initOptions(options); - this.initAutoTypeSetPicker(); - }); - AutoTypeSetPicker.prototype = { - initAutoTypeSetPicker: function() { - this.initUIBase(); - }, - getHtmlTpl: function() { - var me = this.editor, - opt = me.options.autotypeset, - lang = me.getLang("autoTypeSet"); - - var textAlignInputName = "textAlignValue" + me.uid, - imageBlockInputName = "imageBlockLineValue" + me.uid, - symbolConverInputName = "symbolConverValue" + me.uid; - - return ( - '
    ' + - '
    ' + - "" + - '" + - '" + - "" + - '" + - '" + - "" + - "" + - '" + - '" + - "" + - '" + - '" + - '" + - "" + - '" + - '" + - '" + - "" + - "
    " + - lang.mergeLine + - '" + - lang.delLine + - "
    " + - lang.removeFormat + - '" + - lang.indent + - "
    " + - lang.alignment + - "' + - '" + - me.getLang("justifyleft") + - '" + - me.getLang("justifycenter") + - '" + - me.getLang("justifyright") + - "
    " + - lang.imageFloat + - "' + - '" + - me.getLang("default") + - '" + - me.getLang("justifyleft") + - '" + - me.getLang("justifycenter") + - '" + - me.getLang("justifyright") + - "
    " + - lang.removeFontsize + - '" + - lang.removeFontFamily + - "
    " + - lang.removeHtml + - "
    " + - lang.pasteFilter + - "
    " + - lang.symbol + - "' + - '" + - lang.bdc2sb + - '" + - lang.tobdc + - "" + - "
    " + - "
    " + - "
    " - ); - }, - _UIBase_render: UIBase.prototype.render - }; - utils.inherits(AutoTypeSetPicker, UIBase); - })(); - - - // ui/autotypesetbutton.js - ///import core - ///import uicore - ///import ui/popup.js - ///import ui/autotypesetpicker.js - ///import ui/splitbutton.js - (function() { - var utils = baidu.editor.utils, - Popup = baidu.editor.ui.Popup, - AutoTypeSetPicker = baidu.editor.ui.AutoTypeSetPicker, - SplitButton = baidu.editor.ui.SplitButton, - AutoTypeSetButton = (baidu.editor.ui.AutoTypeSetButton = function(options) { - this.initOptions(options); - this.initAutoTypeSetButton(); - }); - function getPara(me) { - var opt = {}, - cont = me.getDom(), - editorId = me.editor.uid, - inputType = null, - attrName = null, - ipts = domUtils.getElementsByTagName(cont, "input"); - for (var i = ipts.length - 1, ipt; (ipt = ipts[i--]); ) { - inputType = ipt.getAttribute("type"); - if (inputType == "checkbox") { - attrName = ipt.getAttribute("name"); - opt[attrName] && delete opt[attrName]; - if (ipt.checked) { - var attrValue = document.getElementById( - attrName + "Value" + editorId - ); - if (attrValue) { - if (/input/gi.test(attrValue.tagName)) { - opt[attrName] = attrValue.value; - } else { - var iptChilds = attrValue.getElementsByTagName("input"); - for ( - var j = iptChilds.length - 1, iptchild; - (iptchild = iptChilds[j--]); - - ) { - if (iptchild.checked) { - opt[attrName] = iptchild.value; - break; - } - } - } - } else { - opt[attrName] = true; - } - } else { - opt[attrName] = false; - } - } else { - opt[ipt.getAttribute("value")] = ipt.checked; - } - } - - var selects = domUtils.getElementsByTagName(cont, "select"); - for (var i = 0, si; (si = selects[i++]); ) { - var attr = si.getAttribute("name"); - opt[attr] = opt[attr] ? si.value : ""; - } - - utils.extend(me.editor.options.autotypeset, opt); - - me.editor.setPreferences("autotypeset", opt); - } - - AutoTypeSetButton.prototype = { - initAutoTypeSetButton: function() { - var me = this; - this.popup = new Popup({ - //传入配置参数 - content: new AutoTypeSetPicker({ editor: me.editor }), - editor: me.editor, - hide: function() { - if (!this._hidden && this.getDom()) { - getPara(this); - this.getDom().style.display = "none"; - this._hidden = true; - this.fireEvent("hide"); - } - } - }); - var flag = 0; - this.popup.addListener("postRenderAfter", function() { - var popupUI = this; - if (flag) return; - var cont = this.getDom(), - btn = cont.getElementsByTagName("button")[0]; - - btn.onclick = function() { - getPara(popupUI); - me.editor.execCommand("autotypeset"); - popupUI.hide(); - }; - - domUtils.on(cont, "click", function(e) { - var target = e.target || e.srcElement, - editorId = me.editor.uid; - if (target && target.tagName == "INPUT") { - // 点击图片浮动的checkbox,去除对应的radio - if ( - target.name == "imageBlockLine" || - target.name == "textAlign" || - target.name == "symbolConver" - ) { - var checked = target.checked, - radioTd = document.getElementById( - target.name + "Value" + editorId - ), - radios = radioTd.getElementsByTagName("input"), - defalutSelect = { - imageBlockLine: "none", - textAlign: "left", - symbolConver: "tobdc" - }; - - for (var i = 0; i < radios.length; i++) { - if (checked) { - if (radios[i].value == defalutSelect[target.name]) { - radios[i].checked = "checked"; - } - } else { - radios[i].checked = false; - } - } - } - // 点击radio,选中对应的checkbox - if ( - target.name == "imageBlockLineValue" + editorId || - target.name == "textAlignValue" + editorId || - target.name == "bdc" - ) { - var checkboxs = target.parentNode.previousSibling.getElementsByTagName( - "input" - ); - checkboxs && (checkboxs[0].checked = true); - } - - getPara(popupUI); - } - }); - - flag = 1; - }); - this.initSplitButton(); - } - }; - utils.inherits(AutoTypeSetButton, SplitButton); - })(); - - - // ui/cellalignpicker.js - ///import core - ///import uicore - (function() { - var utils = baidu.editor.utils, - Popup = baidu.editor.ui.Popup, - Stateful = baidu.editor.ui.Stateful, - UIBase = baidu.editor.ui.UIBase; - - /** - * 该参数将新增一个参数: selected, 参数类型为一个Object, 形如{ 'align': 'center', 'valign': 'top' }, 表示单元格的初始 - * 对齐状态为: 竖直居上,水平居中; 其中 align的取值为:'center', 'left', 'right'; valign的取值为: 'top', 'middle', 'bottom' - * @update 2013/4/2 hancong03@baidu.com - */ - var CellAlignPicker = (baidu.editor.ui.CellAlignPicker = function(options) { - this.initOptions(options); - this.initSelected(); - this.initCellAlignPicker(); - }); - CellAlignPicker.prototype = { - //初始化选中状态, 该方法将根据传递进来的参数获取到应该选中的对齐方式图标的索引 - initSelected: function() { - var status = { - valign: { - top: 0, - middle: 1, - bottom: 2 - }, - align: { - left: 0, - center: 1, - right: 2 - }, - count: 3 - }, - result = -1; - - if (this.selected) { - this.selectedIndex = - status.valign[this.selected.valign] * status.count + - status.align[this.selected.align]; - } - }, - initCellAlignPicker: function() { - this.initUIBase(); - this.Stateful_init(); - }, - getHtmlTpl: function() { - var alignType = ["left", "center", "right"], - COUNT = 9, - tempClassName = null, - tempIndex = -1, - tmpl = []; - - for (var i = 0; i < COUNT; i++) { - tempClassName = this.selectedIndex === i - ? ' class="edui-cellalign-selected" ' - : ""; - tempIndex = i % 3; - - tempIndex === 0 && tmpl.push(""); - - tmpl.push( - '
    ' - ); - - tempIndex === 2 && tmpl.push(""); - } - - return ( - '
    ' + - '
    ' + - '' + - tmpl.join("") + - "
    " + - "
    " + - "
    " - ); - }, - getStateDom: function() { - return this.target; - }, - _onClick: function(evt) { - var target = evt.target || evt.srcElement; - if (/icon/.test(target.className)) { - this.items[target.parentNode.getAttribute("index")].onclick(); - Popup.postHide(evt); - } - }, - _UIBase_render: UIBase.prototype.render - }; - utils.inherits(CellAlignPicker, UIBase); - utils.extend(CellAlignPicker.prototype, Stateful, true); - })(); - - - // ui/pastepicker.js - ///import core - ///import uicore - (function() { - var utils = baidu.editor.utils, - Stateful = baidu.editor.ui.Stateful, - uiUtils = baidu.editor.ui.uiUtils, - UIBase = baidu.editor.ui.UIBase; - - var PastePicker = (baidu.editor.ui.PastePicker = function(options) { - this.initOptions(options); - this.initPastePicker(); - }); - PastePicker.prototype = { - initPastePicker: function() { - this.initUIBase(); - this.Stateful_init(); - }, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ' + - '
    ' + - this.editor.getLang("pasteOpt") + - "
    " + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - "
    " + - "
    " + - "
    " - ); - }, - getStateDom: function() { - return this.target; - }, - format: function(param) { - this.editor.ui._isTransfer = true; - this.editor.fireEvent("pasteTransfer", param); - }, - _onClick: function(cur) { - var node = domUtils.getNextDomNode(cur), - screenHt = uiUtils.getViewportRect().height, - subPop = uiUtils.getClientRect(node); - - if (subPop.top + subPop.height > screenHt) - node.style.top = -subPop.height - cur.offsetHeight + "px"; - else node.style.top = ""; - - if (/hidden/gi.test(domUtils.getComputedStyle(node, "visibility"))) { - node.style.visibility = "visible"; - domUtils.addClass(cur, "edui-state-opened"); - } else { - node.style.visibility = "hidden"; - domUtils.removeClasses(cur, "edui-state-opened"); - } - }, - _UIBase_render: UIBase.prototype.render - }; - utils.inherits(PastePicker, UIBase); - utils.extend(PastePicker.prototype, Stateful, true); - })(); - - - // ui/toolbar.js - (function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - UIBase = baidu.editor.ui.UIBase, - Toolbar = (baidu.editor.ui.Toolbar = function(options) { - this.initOptions(options); - this.initToolbar(); - }); - Toolbar.prototype = { - items: null, - initToolbar: function() { - this.items = this.items || []; - this.initUIBase(); - }, - add: function(item, index) { - if (index === undefined) { - this.items.push(item); - } else { - this.items.splice(index, 0, item); - } - }, - getHtmlTpl: function() { - var buff = []; - for (var i = 0; i < this.items.length; i++) { - buff[i] = this.items[i].renderHtml(); - } - return ( - '
    ' + - buff.join("") + - "
    " - ); - }, - postRender: function() { - var box = this.getDom(); - for (var i = 0; i < this.items.length; i++) { - this.items[i].postRender(); - } - uiUtils.makeUnselectable(box); - }, - _onMouseDown: function(e) { - var target = e.target || e.srcElement, - tagName = target && target.tagName && target.tagName.toLowerCase(); - if (tagName == "input" || tagName == "object" || tagName == "object") { - return false; - } - } - }; - utils.inherits(Toolbar, UIBase); - })(); - - - // ui/menu.js - ///import core - ///import uicore - ///import ui\popup.js - ///import ui\stateful.js - (function() { - var utils = baidu.editor.utils, - domUtils = baidu.editor.dom.domUtils, - uiUtils = baidu.editor.ui.uiUtils, - UIBase = baidu.editor.ui.UIBase, - Popup = baidu.editor.ui.Popup, - Stateful = baidu.editor.ui.Stateful, - CellAlignPicker = baidu.editor.ui.CellAlignPicker, - Menu = (baidu.editor.ui.Menu = function(options) { - this.initOptions(options); - this.initMenu(); - }); - - var menuSeparator = { - renderHtml: function() { - return '
    '; - }, - postRender: function() {}, - queryAutoHide: function() { - return true; - } - }; - Menu.prototype = { - items: null, - uiName: "menu", - initMenu: function() { - this.items = this.items || []; - this.initPopup(); - this.initItems(); - }, - initItems: function() { - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - if (item == "-") { - this.items[i] = this.getSeparator(); - } else if (!(item instanceof MenuItem)) { - item.editor = this.editor; - item.theme = this.editor.options.theme; - this.items[i] = this.createItem(item); - } - } - }, - getSeparator: function() { - return menuSeparator; - }, - createItem: function(item) { - //新增一个参数menu, 该参数存储了menuItem所对应的menu引用 - item.menu = this; - return new MenuItem(item); - }, - _Popup_getContentHtmlTpl: Popup.prototype.getContentHtmlTpl, - getContentHtmlTpl: function() { - if (this.items.length == 0) { - return this._Popup_getContentHtmlTpl(); - } - var buff = []; - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - buff[i] = item.renderHtml(); - } - return '
    ' + buff.join("") + "
    "; - }, - _Popup_postRender: Popup.prototype.postRender, - postRender: function() { - var me = this; - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - item.ownerMenu = this; - item.postRender(); - } - domUtils.on(this.getDom(), "mouseover", function(evt) { - evt = evt || event; - var rel = evt.relatedTarget || evt.fromElement; - var el = me.getDom(); - if (!uiUtils.contains(el, rel) && el !== rel) { - me.fireEvent("over"); - } - }); - this._Popup_postRender(); - }, - queryAutoHide: function(el) { - if (el) { - if (uiUtils.contains(this.getDom(), el)) { - return false; - } - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - if (item.queryAutoHide(el) === false) { - return false; - } - } - } - }, - clearItems: function() { - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - clearTimeout(item._showingTimer); - clearTimeout(item._closingTimer); - if (item.subMenu) { - item.subMenu.destroy(); - } - } - this.items = []; - }, - destroy: function() { - if (this.getDom()) { - domUtils.remove(this.getDom()); - } - this.clearItems(); - }, - dispose: function() { - this.destroy(); - } - }; - utils.inherits(Menu, Popup); - - /** - * @update 2013/04/03 hancong03 新增一个参数menu, 该参数存储了menuItem所对应的menu引用 - * @type {Function} - */ - var MenuItem = (baidu.editor.ui.MenuItem = function(options) { - this.initOptions(options); - this.initUIBase(); - this.Stateful_init(); - if (this.subMenu && !(this.subMenu instanceof Menu)) { - if (options.className && options.className.indexOf("aligntd") != -1) { - var me = this; - - //获取单元格对齐初始状态 - this.subMenu.selected = this.editor.queryCommandValue("cellalignment"); - - this.subMenu = new Popup({ - content: new CellAlignPicker(this.subMenu), - parentMenu: me, - editor: me.editor, - destroy: function() { - if (this.getDom()) { - domUtils.remove(this.getDom()); - } - } - }); - this.subMenu.addListener("postRenderAfter", function() { - domUtils.on(this.getDom(), "mouseover", function() { - me.addState("opened"); - }); - }); - } else { - this.subMenu = new Menu(this.subMenu); - } - } - }); - MenuItem.prototype = { - label: "", - subMenu: null, - ownerMenu: null, - uiName: "menuitem", - alwalysHoverable: true, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ' + - this.renderLabelHtml() + - "
    " + - "
    " - ); - }, - postRender: function() { - var me = this; - this.addListener("over", function() { - me.ownerMenu.fireEvent("submenuover", me); - if (me.subMenu) { - me.delayShowSubMenu(); - } - }); - if (this.subMenu) { - this.getDom().className += " edui-hassubmenu"; - this.subMenu.render(); - this.addListener("out", function() { - me.delayHideSubMenu(); - }); - this.subMenu.addListener("over", function() { - clearTimeout(me._closingTimer); - me._closingTimer = null; - me.addState("opened"); - }); - this.ownerMenu.addListener("hide", function() { - me.hideSubMenu(); - }); - this.ownerMenu.addListener("submenuover", function(t, subMenu) { - if (subMenu !== me) { - me.delayHideSubMenu(); - } - }); - this.subMenu._bakQueryAutoHide = this.subMenu.queryAutoHide; - this.subMenu.queryAutoHide = function(el) { - if (el && uiUtils.contains(me.getDom(), el)) { - return false; - } - return this._bakQueryAutoHide(el); - }; - } - this.getDom().style.tabIndex = "-1"; - uiUtils.makeUnselectable(this.getDom()); - this.Stateful_postRender(); - }, - delayShowSubMenu: function() { - var me = this; - if (!me.isDisabled()) { - me.addState("opened"); - clearTimeout(me._showingTimer); - clearTimeout(me._closingTimer); - me._closingTimer = null; - me._showingTimer = setTimeout(function() { - me.showSubMenu(); - }, 250); - } - }, - delayHideSubMenu: function() { - var me = this; - if (!me.isDisabled()) { - me.removeState("opened"); - clearTimeout(me._showingTimer); - if (!me._closingTimer) { - me._closingTimer = setTimeout(function() { - if (!me.hasState("opened")) { - me.hideSubMenu(); - } - me._closingTimer = null; - }, 400); - } - } - }, - renderLabelHtml: function() { - return ( - '
    ' + - '
    ' + - '
    ' + - (this.label || "") + - "
    " - ); - }, - getStateDom: function() { - return this.getDom(); - }, - queryAutoHide: function(el) { - if (this.subMenu && this.hasState("opened")) { - return this.subMenu.queryAutoHide(el); - } - }, - _onClick: function(event, this_) { - if (this.hasState("disabled")) return; - if (this.fireEvent("click", event, this_) !== false) { - if (this.subMenu) { - this.showSubMenu(); - } else { - Popup.postHide(event); - } - } - }, - showSubMenu: function() { - var rect = uiUtils.getClientRect(this.getDom()); - rect.right -= 5; - rect.left += 2; - rect.width -= 7; - rect.top -= 4; - rect.bottom += 4; - rect.height += 8; - this.subMenu.showAnchorRect(rect, true, true); - }, - hideSubMenu: function() { - this.subMenu.hide(); - } - }; - utils.inherits(MenuItem, UIBase); - utils.extend(MenuItem.prototype, Stateful, true); - })(); - - - // ui/combox.js - ///import core - ///import uicore - ///import ui/menu.js - ///import ui/splitbutton.js - (function() { - // todo: menu和item提成通用list - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - Menu = baidu.editor.ui.Menu, - SplitButton = baidu.editor.ui.SplitButton, - Combox = (baidu.editor.ui.Combox = function(options) { - this.initOptions(options); - this.initCombox(); - }); - Combox.prototype = { - uiName: "combox", - onbuttonclick: function() { - this.showPopup(); - }, - initCombox: function() { - var me = this; - this.items = this.items || []; - for (var i = 0; i < this.items.length; i++) { - var item = this.items[i]; - item.uiName = "listitem"; - item.index = i; - item.onclick = function() { - me.selectByIndex(this.index); - }; - } - this.popup = new Menu({ - items: this.items, - uiName: "list", - editor: this.editor, - captureWheel: true, - combox: this - }); - - this.initSplitButton(); - }, - _SplitButton_postRender: SplitButton.prototype.postRender, - postRender: function() { - this._SplitButton_postRender(); - this.setLabel(this.label || ""); - this.setValue(this.initValue || ""); - }, - showPopup: function() { - var rect = uiUtils.getClientRect(this.getDom()); - rect.top += 1; - rect.bottom -= 1; - rect.height -= 2; - this.popup.showAnchorRect(rect); - }, - getValue: function() { - return this.value; - }, - setValue: function(value) { - var index = this.indexByValue(value); - if (index != -1) { - this.selectedIndex = index; - this.setLabel(this.items[index].label); - this.value = this.items[index].value; - } else { - this.selectedIndex = -1; - this.setLabel(this.getLabelForUnknowValue(value)); - this.value = value; - } - }, - setLabel: function(label) { - this.getDom("button_body").innerHTML = label; - this.label = label; - }, - getLabelForUnknowValue: function(value) { - return value; - }, - indexByValue: function(value) { - for (var i = 0; i < this.items.length; i++) { - if (value == this.items[i].value) { - return i; - } - } - return -1; - }, - getItem: function(index) { - return this.items[index]; - }, - selectByIndex: function(index) { - if ( - index < this.items.length && - this.fireEvent("select", index) !== false - ) { - this.selectedIndex = index; - this.value = this.items[index].value; - this.setLabel(this.items[index].label); - } - } - }; - utils.inherits(Combox, SplitButton); - })(); - - - // ui/dialog.js - ///import core - ///import uicore - ///import ui/mask.js - ///import ui/button.js - (function() { - var utils = baidu.editor.utils, - domUtils = baidu.editor.dom.domUtils, - uiUtils = baidu.editor.ui.uiUtils, - Mask = baidu.editor.ui.Mask, - UIBase = baidu.editor.ui.UIBase, - Button = baidu.editor.ui.Button, - Dialog = (baidu.editor.ui.Dialog = function(options) { - if (options.name) { - var name = options.name; - var cssRules = options.cssRules; - if (!options.className) { - options.className = "edui-for-" + name; - } - if (cssRules) { - options.cssRules = - ".edui-for-" + name + " .edui-dialog-content {" + cssRules + "}"; - } - } - this.initOptions( - utils.extend( - { - autoReset: true, - draggable: true, - onok: function() {}, - oncancel: function() {}, - onclose: function(t, ok) { - return ok ? this.onok() : this.oncancel(); - }, - //是否控制dialog中的scroll事件, 默认为不阻止 - holdScroll: false - }, - options - ) - ); - this.initDialog(); - }); - var modalMask; - var dragMask; - var activeDialog; - Dialog.prototype = { - draggable: false, - uiName: "dialog", - initDialog: function() { - var me = this, - theme = this.editor.options.theme; - if (this.cssRules) { - this.cssRules = ".edui-" + theme + " " + this.cssRules; - utils.cssRule("edui-customize-" + this.name + "-style", this.cssRules); - } - this.initUIBase(); - this.modalMask = - modalMask || - (modalMask = new Mask({ - className: "edui-dialog-modalmask", - theme: theme, - onclick: function() { - activeDialog && activeDialog.close(false); - } - })); - this.dragMask = - dragMask || - (dragMask = new Mask({ - className: "edui-dialog-dragmask", - theme: theme - })); - this.closeButton = new Button({ - className: "edui-dialog-closebutton", - title: me.closeDialog, - theme: theme, - onclick: function() { - me.close(false); - } - }); - - this.fullscreen && this.initResizeEvent(); - - if (this.buttons) { - for (var i = 0; i < this.buttons.length; i++) { - if (!(this.buttons[i] instanceof Button)) { - this.buttons[i] = new Button( - utils.extend( - this.buttons[i], - { - editor: this.editor - }, - true - ) - ); - } - } - } - }, - initResizeEvent: function() { - var me = this; - - domUtils.on(window, "resize", function() { - if (me._hidden || me._hidden === undefined) { - return; - } - - if (me.__resizeTimer) { - window.clearTimeout(me.__resizeTimer); - } - - me.__resizeTimer = window.setTimeout(function() { - me.__resizeTimer = null; - - var dialogWrapNode = me.getDom(), - contentNode = me.getDom("content"), - wrapRect = UE.ui.uiUtils.getClientRect(dialogWrapNode), - contentRect = UE.ui.uiUtils.getClientRect(contentNode), - vpRect = uiUtils.getViewportRect(); - - contentNode.style.width = - vpRect.width - wrapRect.width + contentRect.width + "px"; - contentNode.style.height = - vpRect.height - wrapRect.height + contentRect.height + "px"; - - dialogWrapNode.style.width = vpRect.width + "px"; - dialogWrapNode.style.height = vpRect.height + "px"; - - me.fireEvent("resize"); - }, 100); - }); - }, - fitSize: function() { - var popBodyEl = this.getDom("body"); - // if (!(baidu.editor.browser.ie && baidu.editor.browser.version == 7)) { - // uiUtils.removeStyle(popBodyEl, 'width'); - // uiUtils.removeStyle(popBodyEl, 'height'); - // } - var size = this.mesureSize(); - popBodyEl.style.width = size.width + "px"; - popBodyEl.style.height = size.height + "px"; - return size; - }, - safeSetOffset: function(offset) { - var me = this; - var el = me.getDom(); - var vpRect = uiUtils.getViewportRect(); - var rect = uiUtils.getClientRect(el); - var left = offset.left; - if (left + rect.width > vpRect.right) { - left = vpRect.right - rect.width; - } - var top = offset.top; - if (top + rect.height > vpRect.bottom) { - top = vpRect.bottom - rect.height; - } - el.style.left = Math.max(left, 0) + "px"; - el.style.top = Math.max(top, 0) + "px"; - }, - showAtCenter: function() { - var vpRect = uiUtils.getViewportRect(); - - if (!this.fullscreen) { - this.getDom().style.display = ""; - var popSize = this.fitSize(); - var titleHeight = this.getDom("titlebar").offsetHeight | 0; - var left = vpRect.width / 2 - popSize.width / 2; - var top = - vpRect.height / 2 - (popSize.height - titleHeight) / 2 - titleHeight; - var popEl = this.getDom(); - this.safeSetOffset({ - left: Math.max(left | 0, 0), - top: Math.max(top | 0, 0) - }); - if (!domUtils.hasClass(popEl, "edui-state-centered")) { - popEl.className += " edui-state-centered"; - } - } else { - var dialogWrapNode = this.getDom(), - contentNode = this.getDom("content"); - - dialogWrapNode.style.display = "block"; - - var wrapRect = UE.ui.uiUtils.getClientRect(dialogWrapNode), - contentRect = UE.ui.uiUtils.getClientRect(contentNode); - dialogWrapNode.style.left = "-100000px"; - - contentNode.style.width = - vpRect.width - wrapRect.width + contentRect.width + "px"; - contentNode.style.height = - vpRect.height - wrapRect.height + contentRect.height + "px"; - - dialogWrapNode.style.width = vpRect.width + "px"; - dialogWrapNode.style.height = vpRect.height + "px"; - dialogWrapNode.style.left = 0; - - //保存环境的overflow值 - this._originalContext = { - html: { - overflowX: document.documentElement.style.overflowX, - overflowY: document.documentElement.style.overflowY - }, - body: { - overflowX: document.body.style.overflowX, - overflowY: document.body.style.overflowY - } - }; - - document.documentElement.style.overflowX = "hidden"; - document.documentElement.style.overflowY = "hidden"; - document.body.style.overflowX = "hidden"; - document.body.style.overflowY = "hidden"; - } - - this._show(); - }, - getContentHtml: function() { - var contentHtml = ""; - if (typeof this.content == "string") { - contentHtml = this.content; - } else if (this.iframeUrl) { - contentHtml = - ''; - } - return contentHtml; - }, - getHtmlTpl: function() { - var footHtml = ""; - - if (this.buttons) { - var buff = []; - for (var i = 0; i < this.buttons.length; i++) { - buff[i] = this.buttons[i].renderHtml(); - } - footHtml = - '
    ' + - '
    ' + - buff.join("") + - "
    " + - "
    "; - } - - return ( - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '' + - (this.title || "") + - "" + - "
    " + - this.closeButton.renderHtml() + - "
    " + - '
    ' + - (this.autoReset ? "" : this.getContentHtml()) + - "
    " + - footHtml + - "
    " - ); - }, - postRender: function() { - // todo: 保持居中/记住上次关闭位置选项 - if (!this.modalMask.getDom()) { - this.modalMask.render(); - this.modalMask.hide(); - } - if (!this.dragMask.getDom()) { - this.dragMask.render(); - this.dragMask.hide(); - } - var me = this; - this.addListener("show", function() { - me.modalMask.show(this.getDom().style.zIndex - 2); - }); - this.addListener("hide", function() { - me.modalMask.hide(); - }); - if (this.buttons) { - for (var i = 0; i < this.buttons.length; i++) { - this.buttons[i].postRender(); - } - } - domUtils.on(window, "resize", function() { - setTimeout(function() { - if (!me.isHidden()) { - me.safeSetOffset(uiUtils.getClientRect(me.getDom())); - } - }); - }); - - //hold住scroll事件,防止dialog的滚动影响页面 - // if( this.holdScroll ) { - // - // if( !me.iframeUrl ) { - // domUtils.on( document.getElementById( me.id + "_iframe"), !browser.gecko ? "mousewheel" : "DOMMouseScroll", function(e){ - // domUtils.preventDefault(e); - // } ); - // } else { - // me.addListener('dialogafterreset', function(){ - // window.setTimeout(function(){ - // var iframeWindow = document.getElementById( me.id + "_iframe").contentWindow; - // - // if( browser.ie ) { - // - // var timer = window.setInterval(function(){ - // - // if( iframeWindow.document && iframeWindow.document.body ) { - // window.clearInterval( timer ); - // timer = null; - // domUtils.on( iframeWindow.document.body, !browser.gecko ? "mousewheel" : "DOMMouseScroll", function(e){ - // domUtils.preventDefault(e); - // } ); - // } - // - // }, 100); - // - // } else { - // domUtils.on( iframeWindow, !browser.gecko ? "mousewheel" : "DOMMouseScroll", function(e){ - // domUtils.preventDefault(e); - // } ); - // } - // - // }, 1); - // }); - // } - // - // } - this._hide(); - }, - mesureSize: function() { - var body = this.getDom("body"); - var width = uiUtils.getClientRect(this.getDom("content")).width; - var dialogBodyStyle = body.style; - dialogBodyStyle.width = width; - return uiUtils.getClientRect(body); - }, - _onTitlebarMouseDown: function(evt, el) { - if (this.draggable) { - var rect; - var vpRect = uiUtils.getViewportRect(); - var me = this; - uiUtils.startDrag(evt, { - ondragstart: function() { - rect = uiUtils.getClientRect(me.getDom()); - me.getDom("contmask").style.visibility = "visible"; - me.dragMask.show(me.getDom().style.zIndex - 1); - }, - ondragmove: function(x, y) { - var left = rect.left + x; - var top = rect.top + y; - me.safeSetOffset({ - left: left, - top: top - }); - }, - ondragstop: function() { - me.getDom("contmask").style.visibility = "hidden"; - domUtils.removeClasses(me.getDom(), ["edui-state-centered"]); - me.dragMask.hide(); - } - }); - } - }, - reset: function() { - this.getDom("content").innerHTML = this.getContentHtml(); - this.fireEvent("dialogafterreset"); - }, - _show: function() { - if (this._hidden) { - this.getDom().style.display = ""; - - //要高过编辑器的zindxe - this.editor.container.style.zIndex && - (this.getDom().style.zIndex = - this.editor.container.style.zIndex * 1 + 10); - this._hidden = false; - this.fireEvent("show"); - baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = - this.getDom().style.zIndex - 4; - } - }, - isHidden: function() { - return this._hidden; - }, - _hide: function() { - if (!this._hidden) { - var wrapNode = this.getDom(); - wrapNode.style.display = "none"; - wrapNode.style.zIndex = ""; - wrapNode.style.width = ""; - wrapNode.style.height = ""; - this._hidden = true; - this.fireEvent("hide"); - } - }, - open: function() { - if (this.autoReset) { - //有可能还没有渲染 - try { - this.reset(); - } catch (e) { - this.render(); - this.open(); - } - } - this.showAtCenter(); - if (this.iframeUrl) { - try { - this.getDom("iframe").focus(); - } catch (ex) {} - } - activeDialog = this; - }, - _onCloseButtonClick: function(evt, el) { - this.close(false); - }, - close: function(ok) { - if (this.fireEvent("close", ok) !== false) { - //还原环境 - if (this.fullscreen) { - document.documentElement.style.overflowX = this._originalContext.html.overflowX; - document.documentElement.style.overflowY = this._originalContext.html.overflowY; - document.body.style.overflowX = this._originalContext.body.overflowX; - document.body.style.overflowY = this._originalContext.body.overflowY; - delete this._originalContext; - } - this._hide(); - - //销毁content - var content = this.getDom("content"); - var iframe = this.getDom("iframe"); - if (content && iframe) { - var doc = iframe.contentDocument || iframe.contentWindow.document; - doc && (doc.body.innerHTML = ""); - domUtils.remove(content); - } - } - } - }; - utils.inherits(Dialog, UIBase); - })(); - - - // ui/menubutton.js - ///import core - ///import uicore - ///import ui/menu.js - ///import ui/splitbutton.js - (function() { - var utils = baidu.editor.utils, - Menu = baidu.editor.ui.Menu, - SplitButton = baidu.editor.ui.SplitButton, - MenuButton = (baidu.editor.ui.MenuButton = function(options) { - this.initOptions(options); - this.initMenuButton(); - }); - MenuButton.prototype = { - initMenuButton: function() { - var me = this; - this.uiName = "menubutton"; - this.popup = new Menu({ - items: me.items, - className: me.className, - editor: me.editor - }); - this.popup.addListener("show", function() { - var list = this; - for (var i = 0; i < list.items.length; i++) { - list.items[i].removeState("checked"); - if (list.items[i].value == me._value) { - list.items[i].addState("checked"); - this.value = me._value; - } - } - }); - this.initSplitButton(); - }, - setValue: function(value) { - this._value = value; - } - }; - utils.inherits(MenuButton, SplitButton); - })(); - - - // ui/multiMenu.js - ///import core - ///import uicore - ///commands 表情 - (function() { - var utils = baidu.editor.utils, - Popup = baidu.editor.ui.Popup, - SplitButton = baidu.editor.ui.SplitButton, - MultiMenuPop = (baidu.editor.ui.MultiMenuPop = function(options) { - this.initOptions(options); - this.initMultiMenu(); - }); - - MultiMenuPop.prototype = { - initMultiMenu: function() { - var me = this; - this.popup = new Popup({ - content: "", - editor: me.editor, - iframe_rendered: false, - onshow: function() { - if (!this.iframe_rendered) { - this.iframe_rendered = true; - this.getDom("content").innerHTML = - ''; - me.editor.container.style.zIndex && - (this.getDom().style.zIndex = - me.editor.container.style.zIndex * 1 + 1); - } - } - // canSideUp:false, - // canSideLeft:false - }); - this.onbuttonclick = function() { - this.showPopup(); - }; - this.initSplitButton(); - } - }; - - utils.inherits(MultiMenuPop, SplitButton); - })(); - - - // ui/shortcutmenu.js - (function() { - var UI = baidu.editor.ui, - UIBase = UI.UIBase, - uiUtils = UI.uiUtils, - utils = baidu.editor.utils, - domUtils = baidu.editor.dom.domUtils; - - var allMenus = [], //存储所有快捷菜单 - timeID, - isSubMenuShow = false; //是否有子pop显示 - - var ShortCutMenu = (UI.ShortCutMenu = function(options) { - this.initOptions(options); - this.initShortCutMenu(); - }); - - ShortCutMenu.postHide = hideAllMenu; - - ShortCutMenu.prototype = { - isHidden: true, - SPACE: 5, - initShortCutMenu: function() { - this.items = this.items || []; - this.initUIBase(); - this.initItems(); - this.initEvent(); - allMenus.push(this); - }, - initEvent: function() { - var me = this, - doc = me.editor.document; - - domUtils.on(doc, "mousemove", function(e) { - if (me.isHidden === false) { - //有pop显示就不隐藏快捷菜单 - if (me.getSubMenuMark() || me.eventType == "contextmenu") return; - - var flag = true, - el = me.getDom(), - wt = el.offsetWidth, - ht = el.offsetHeight, - distanceX = wt / 2 + me.SPACE, //距离中心X标准 - distanceY = ht / 2, //距离中心Y标准 - x = Math.abs(e.screenX - me.left), //离中心距离横坐标 - y = Math.abs(e.screenY - me.top); //离中心距离纵坐标 - - clearTimeout(timeID); - timeID = setTimeout(function() { - if (y > 0 && y < distanceY) { - me.setOpacity(el, "1"); - } else if (y > distanceY && y < distanceY + 70) { - me.setOpacity(el, "0.5"); - flag = false; - } else if (y > distanceY + 70 && y < distanceY + 140) { - me.hide(); - } - - if (flag && x > 0 && x < distanceX) { - me.setOpacity(el, "1"); - } else if (x > distanceX && x < distanceX + 70) { - me.setOpacity(el, "0.5"); - } else if (x > distanceX + 70 && x < distanceX + 140) { - me.hide(); - } - }); - } - }); - - //ie\ff下 mouseout不准 - if (browser.chrome) { - domUtils.on(doc, "mouseout", function(e) { - var relatedTgt = e.relatedTarget || e.toElement; - - if (relatedTgt == null || relatedTgt.tagName == "HTML") { - me.hide(); - } - }); - } - - me.editor.addListener("afterhidepop", function() { - if (!me.isHidden) { - isSubMenuShow = true; - } - }); - }, - initItems: function() { - if (utils.isArray(this.items)) { - for (var i = 0, len = this.items.length; i < len; i++) { - var item = this.items[i].toLowerCase(); - - if (UI[item]) { - this.items[i] = new UI[item](this.editor); - this.items[i].className += " edui-shortcutsubmenu "; - } - } - } - }, - setOpacity: function(el, value) { - if (browser.ie && browser.version < 9) { - el.style.filter = "alpha(opacity = " + parseFloat(value) * 100 + ");"; - } else { - el.style.opacity = value; - } - }, - getSubMenuMark: function() { - isSubMenuShow = false; - var layerEle = uiUtils.getFixedLayer(); - var list = domUtils.getElementsByTagName(layerEle, "div", function(node) { - return domUtils.hasClass(node, "edui-shortcutsubmenu edui-popup"); - }); - - for (var i = 0, node; (node = list[i++]); ) { - if (node.style.display != "none") { - isSubMenuShow = true; - } - } - return isSubMenuShow; - }, - show: function(e, hasContextmenu) { - var me = this, - offset = {}, - el = this.getDom(), - fixedlayer = uiUtils.getFixedLayer(); - - function setPos(offset) { - if (offset.left < 0) { - offset.left = 0; - } - if (offset.top < 0) { - offset.top = 0; - } - el.style.cssText = - "position:absolute;left:" + - offset.left + - "px;top:" + - offset.top + - "px;"; - } - - function setPosByCxtMenu(menu) { - if (!menu.tagName) { - menu = menu.getDom(); - } - offset.left = parseInt(menu.style.left); - offset.top = parseInt(menu.style.top); - offset.top -= el.offsetHeight + 15; - setPos(offset); - } - - me.eventType = e.type; - el.style.cssText = "display:block;left:-9999px"; - - if (e.type == "contextmenu" && hasContextmenu) { - var menu = domUtils.getElementsByTagName( - fixedlayer, - "div", - "edui-contextmenu" - )[0]; - if (menu) { - setPosByCxtMenu(menu); - } else { - me.editor.addListener("aftershowcontextmenu", function(type, menu) { - setPosByCxtMenu(menu); - }); - } - } else { - offset = uiUtils.getViewportOffsetByEvent(e); - offset.top -= el.offsetHeight + me.SPACE; - offset.left += me.SPACE + 20; - setPos(offset); - me.setOpacity(el, 0.2); - } - - me.isHidden = false; - me.left = e.screenX + el.offsetWidth / 2 - me.SPACE; - me.top = e.screenY - el.offsetHeight / 2 - me.SPACE; - - if (me.editor) { - el.style.zIndex = me.editor.container.style.zIndex * 1 + 10; - fixedlayer.style.zIndex = el.style.zIndex - 1; - } - }, - hide: function() { - if (this.getDom()) { - this.getDom().style.display = "none"; - } - this.isHidden = true; - }, - postRender: function() { - if (utils.isArray(this.items)) { - for (var i = 0, item; (item = this.items[i++]); ) { - item.postRender(); - } - } - }, - getHtmlTpl: function() { - var buff; - if (utils.isArray(this.items)) { - buff = []; - for (var i = 0; i < this.items.length; i++) { - buff[i] = this.items[i].renderHtml(); - } - buff = buff.join(""); - } else { - buff = this.items; - } - - return ( - '
    ' + - buff + - "
    " - ); - } - }; - - utils.inherits(ShortCutMenu, UIBase); - - function hideAllMenu(e) { - var tgt = e.target || e.srcElement, - cur = domUtils.findParent( - tgt, - function(node) { - return ( - domUtils.hasClass(node, "edui-shortcutmenu") || - domUtils.hasClass(node, "edui-popup") - ); - }, - true - ); - - if (!cur) { - for (var i = 0, menu; (menu = allMenus[i++]); ) { - menu.hide(); - } - } - } - - domUtils.on(document, "mousedown", function(e) { - hideAllMenu(e); - }); - - domUtils.on(window, "scroll", function(e) { - hideAllMenu(e); - }); - })(); - - - // ui/breakline.js - (function() { - var utils = baidu.editor.utils, - UIBase = baidu.editor.ui.UIBase, - Breakline = (baidu.editor.ui.Breakline = function(options) { - this.initOptions(options); - this.initSeparator(); - }); - Breakline.prototype = { - uiName: "Breakline", - initSeparator: function() { - this.initUIBase(); - }, - getHtmlTpl: function() { - return "
    "; - } - }; - utils.inherits(Breakline, UIBase); - })(); - - - // ui/message.js - ///import core - ///import uicore - (function() { - var utils = baidu.editor.utils, - domUtils = baidu.editor.dom.domUtils, - UIBase = baidu.editor.ui.UIBase, - Message = (baidu.editor.ui.Message = function(options) { - this.initOptions(options); - this.initMessage(); - }); - - Message.prototype = { - initMessage: function() { - this.initUIBase(); - }, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ×
    ' + - '
    ' + - ' ' + - '
    ' + - '
    ' + - "
    " + - "
    " + - "
    " - ); - }, - reset: function(opt) { - var me = this; - if (!opt.keepshow) { - clearTimeout(this.timer); - me.timer = setTimeout(function() { - me.hide(); - }, opt.timeout || 4000); - } - - opt.content !== undefined && me.setContent(opt.content); - opt.type !== undefined && me.setType(opt.type); - - me.show(); - }, - postRender: function() { - var me = this, - closer = this.getDom("closer"); - closer && - domUtils.on(closer, "click", function() { - me.hide(); - }); - }, - setContent: function(content) { - this.getDom("content").innerHTML = content; - }, - setType: function(type) { - type = type || "info"; - var body = this.getDom("body"); - body.className = body.className.replace( - /edui-message-type-[\w-]+/, - "edui-message-type-" + type - ); - }, - getContent: function() { - return this.getDom("content").innerHTML; - }, - getType: function() { - var arr = this.getDom("body").match(/edui-message-type-([\w-]+)/); - return arr ? arr[1] : ""; - }, - show: function() { - this.getDom().style.display = "block"; - }, - hide: function() { - var dom = this.getDom(); - if (dom) { - dom.style.display = "none"; - dom.parentNode && dom.parentNode.removeChild(dom); - } - } - }; - - utils.inherits(Message, UIBase); - })(); - - - // adapter/editorui.js - //ui跟编辑器的适配層 - //那个按钮弹出是dialog,是下拉筐等都是在这个js中配置 - //自己写的ui也要在这里配置,放到baidu.editor.ui下边,当编辑器实例化的时候会根据ueditor.config中的toolbars找到相应的进行实例化 - (function() { - var utils = baidu.editor.utils; - var editorui = baidu.editor.ui; - var _Dialog = editorui.Dialog; - editorui.buttons = {}; - - editorui.Dialog = function(options) { - var dialog = new _Dialog(options); - dialog.addListener("hide", function() { - if (dialog.editor) { - var editor = dialog.editor; - try { - if (browser.gecko) { - var y = editor.window.scrollY, - x = editor.window.scrollX; - editor.body.focus(); - editor.window.scrollTo(x, y); - } else { - editor.focus(); - } - } catch (ex) {} - } - }); - return dialog; - }; - - var iframeUrlMap = { - anchor: "~/dialogs/anchor/anchor.html", - insertimage: "~/dialogs/image/image.html", - link: "~/dialogs/link/link.html", - spechars: "~/dialogs/spechars/spechars.html", - searchreplace: "~/dialogs/searchreplace/searchreplace.html", - map: "~/dialogs/map/map.html", - gmap: "~/dialogs/gmap/gmap.html", - insertvideo: "~/dialogs/video/video.html", - help: "~/dialogs/help/help.html", - preview: "~/dialogs/preview/preview.html", - emotion: "~/dialogs/emotion/emotion.html", - wordimage: "~/dialogs/wordimage/wordimage.html", - attachment: "~/dialogs/attachment/attachment.html", - insertframe: "~/dialogs/insertframe/insertframe.html", - edittip: "~/dialogs/table/edittip.html", - edittable: "~/dialogs/table/edittable.html", - edittd: "~/dialogs/table/edittd.html", - webapp: "~/dialogs/webapp/webapp.html", - snapscreen: "~/dialogs/snapscreen/snapscreen.html", - scrawl: "~/dialogs/scrawl/scrawl.html", - music: "~/dialogs/music/music.html", - template: "~/dialogs/template/template.html", - background: "~/dialogs/background/background.html", - charts: "~/dialogs/charts/charts.html" - }; - //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起 - var btnCmds = [ - "undo", - "redo", - "formatmatch", - "bold", - "italic", - "underline", - "fontborder", - "touppercase", - "tolowercase", - "strikethrough", - "subscript", - "superscript", - "source", - "indent", - "outdent", - "blockquote", - "pasteplain", - "pagebreak", - "selectall", - "print", - "horizontal", - "removeformat", - "time", - "date", - "unlink", - "insertparagraphbeforetable", - "insertrow", - "insertcol", - "mergeright", - "mergedown", - "deleterow", - "deletecol", - "splittorows", - "splittocols", - "splittocells", - "mergecells", - "deletetable", - "drafts" - ]; - - for (var i = 0, ci; (ci = btnCmds[i++]); ) { - ci = ci.toLowerCase(); - editorui[ci] = (function(cmd) { - return function(editor) { - var ui = new editorui.Button({ - className: "edui-for-" + cmd, - title: - editor.options.labelMap[cmd] || - editor.getLang("labelMap." + cmd) || - "", - onclick: function() { - editor.execCommand(cmd); - }, - theme: editor.options.theme, - showText: false - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function( - type, - causeByUi, - uiReady - ) { - var state = editor.queryCommandState(cmd); - if (state == -1) { - ui.setDisabled(true); - ui.setChecked(false); - } else { - if (!uiReady) { - ui.setDisabled(false); - ui.setChecked(state); - } - } - }); - return ui; - }; - })(ci); - } - - //清除文档 - editorui.cleardoc = function(editor) { - var ui = new editorui.Button({ - className: "edui-for-cleardoc", - title: - editor.options.labelMap.cleardoc || - editor.getLang("labelMap.cleardoc") || - "", - theme: editor.options.theme, - onclick: function() { - if (confirm(editor.getLang("confirmClear"))) { - editor.execCommand("cleardoc"); - } - } - }); - editorui.buttons["cleardoc"] = ui; - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState("cleardoc") == -1); - }); - return ui; - }; - - //排版,图片排版,文字方向 - var typeset = { - justify: ["left", "right", "center", "justify"], - imagefloat: ["none", "left", "center", "right"], - directionality: ["ltr", "rtl"] - }; - - for (var p in typeset) { - (function(cmd, val) { - for (var i = 0, ci; (ci = val[i++]); ) { - (function(cmd2) { - editorui[cmd.replace("float", "") + cmd2] = function(editor) { - var ui = new editorui.Button({ - className: "edui-for-" + cmd.replace("float", "") + cmd2, - title: - editor.options.labelMap[cmd.replace("float", "") + cmd2] || - editor.getLang( - "labelMap." + cmd.replace("float", "") + cmd2 - ) || - "", - theme: editor.options.theme, - onclick: function() { - editor.execCommand(cmd, cmd2); - } - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function( - type, - causeByUi, - uiReady - ) { - ui.setDisabled(editor.queryCommandState(cmd) == -1); - ui.setChecked(editor.queryCommandValue(cmd) == cmd2 && !uiReady); - }); - return ui; - }; - })(ci); - } - })(p, typeset[p]); - } - - //字体颜色和背景颜色 - for (var i = 0, ci; (ci = ["backcolor", "forecolor"][i++]); ) { - editorui[ci] = (function(cmd) { - return function(editor) { - var ui = new editorui.ColorButton({ - className: "edui-for-" + cmd, - color: "default", - title: - editor.options.labelMap[cmd] || - editor.getLang("labelMap." + cmd) || - "", - editor: editor, - onpickcolor: function(t, color) { - editor.execCommand(cmd, color); - }, - onpicknocolor: function() { - editor.execCommand(cmd, "default"); - this.setColor("transparent"); - this.color = "default"; - }, - onbuttonclick: function() { - editor.execCommand(cmd, this.color); - } - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState(cmd) == -1); - }); - return ui; - }; - })(ci); - } - - var dialogBtns = { - noOk: ["searchreplace", "help", "spechars", "webapp", "preview"], - ok: [ - "attachment", - "anchor", - "link", - "insertimage", - "map", - "gmap", - "insertframe", - "wordimage", - "insertvideo", - "insertframe", - "edittip", - "edittable", - "edittd", - "scrawl", - "template", - "music", - "background", - "charts" - ] - }; - - for (var p in dialogBtns) { - (function(type, vals) { - for (var i = 0, ci; (ci = vals[i++]); ) { - //todo opera下存在问题 - if (browser.opera && ci === "searchreplace") { - continue; - } - (function(cmd) { - editorui[cmd] = function(editor, iframeUrl, title) { - iframeUrl = - iframeUrl || - (editor.options.iframeUrlMap || {})[cmd] || - iframeUrlMap[cmd]; - title = - editor.options.labelMap[cmd] || - editor.getLang("labelMap." + cmd) || - ""; - - var dialog; - //没有iframeUrl不创建dialog - if (iframeUrl) { - dialog = new editorui.Dialog( - utils.extend( - { - iframeUrl: editor.ui.mapUrl(iframeUrl), - editor: editor, - className: "edui-for-" + cmd, - title: title, - holdScroll: cmd === "insertimage", - fullscreen: /charts|preview/.test(cmd), - closeDialog: editor.getLang("closeDialog") - }, - type == "ok" - ? { - buttons: [ - { - className: "edui-okbutton", - label: editor.getLang("ok"), - editor: editor, - onclick: function() { - dialog.close(true); - } - }, - { - className: "edui-cancelbutton", - label: editor.getLang("cancel"), - editor: editor, - onclick: function() { - dialog.close(false); - } - } - ] - } - : {} - ) - ); - - editor.ui._dialogs[cmd + "Dialog"] = dialog; - } - - var ui = new editorui.Button({ - className: "edui-for-" + cmd, - title: title, - onclick: function() { - if (dialog) { - switch (cmd) { - case "wordimage": - var images = editor.execCommand("wordimage"); - if (images && images.length) { - dialog.render(); - dialog.open(); - } - break; - case "scrawl": - if (editor.queryCommandState("scrawl") != -1) { - dialog.render(); - dialog.open(); - } - - break; - default: - dialog.render(); - dialog.open(); - } - } - }, - theme: editor.options.theme, - disabled: - (cmd == "scrawl" && editor.queryCommandState("scrawl") == -1) || - cmd == "charts" - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function() { - //只存在于右键菜单而无工具栏按钮的ui不需要检测状态 - var unNeedCheckState = { edittable: 1 }; - if (cmd in unNeedCheckState) return; - - var state = editor.queryCommandState(cmd); - if (ui.getDom()) { - ui.setDisabled(state == -1); - ui.setChecked(state); - } - }); - - return ui; - }; - })(ci.toLowerCase()); - } - })(p, dialogBtns[p]); - } - - editorui.snapscreen = function(editor, iframeUrl, title) { - title = - editor.options.labelMap["snapscreen"] || - editor.getLang("labelMap.snapscreen") || - ""; - var ui = new editorui.Button({ - className: "edui-for-snapscreen", - title: title, - onclick: function() { - editor.execCommand("snapscreen"); - }, - theme: editor.options.theme - }); - editorui.buttons["snapscreen"] = ui; - iframeUrl = - iframeUrl || - (editor.options.iframeUrlMap || {})["snapscreen"] || - iframeUrlMap["snapscreen"]; - if (iframeUrl) { - var dialog = new editorui.Dialog({ - iframeUrl: editor.ui.mapUrl(iframeUrl), - editor: editor, - className: "edui-for-snapscreen", - title: title, - buttons: [ - { - className: "edui-okbutton", - label: editor.getLang("ok"), - editor: editor, - onclick: function() { - dialog.close(true); - } - }, - { - className: "edui-cancelbutton", - label: editor.getLang("cancel"), - editor: editor, - onclick: function() { - dialog.close(false); - } - } - ] - }); - dialog.render(); - editor.ui._dialogs["snapscreenDialog"] = dialog; - } - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState("snapscreen") == -1); - }); - return ui; - }; - - editorui.insertcode = function(editor, list, title) { - list = editor.options["insertcode"] || []; - title = - editor.options.labelMap["insertcode"] || - editor.getLang("labelMap.insertcode") || - ""; - // if (!list.length) return; - var items = []; - utils.each(list, function(key, val) { - items.push({ - label: key, - value: val, - theme: editor.options.theme, - renderLabelHtml: function() { - return ( - '
    ' + (this.label || "") + "
    " - ); - } - }); - }); - - var ui = new editorui.Combox({ - editor: editor, - items: items, - onselect: function(t, index) { - editor.execCommand("insertcode", this.items[index].value); - }, - onbuttonclick: function() { - this.showPopup(); - }, - title: title, - initValue: title, - className: "edui-for-insertcode", - indexByValue: function(value) { - if (value) { - for (var i = 0, ci; (ci = this.items[i]); i++) { - if (ci.value.indexOf(value) != -1) return i; - } - } - - return -1; - } - }); - editorui.buttons["insertcode"] = ui; - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - if (!uiReady) { - var state = editor.queryCommandState("insertcode"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("insertcode"); - if (!value) { - ui.setValue(title); - return; - } - //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号 - value && (value = value.replace(/['"]/g, "").split(",")[0]); - ui.setValue(value); - } - } - }); - return ui; - }; - editorui.fontfamily = function(editor, list, title) { - list = editor.options["fontfamily"] || []; - title = - editor.options.labelMap["fontfamily"] || - editor.getLang("labelMap.fontfamily") || - ""; - if (!list.length) return; - for (var i = 0, ci, items = []; (ci = list[i]); i++) { - var langLabel = editor.getLang("fontfamily")[ci.name] || ""; - (function(key, val) { - items.push({ - label: key, - value: val, - theme: editor.options.theme, - renderLabelHtml: function() { - return ( - '
    ' + - (this.label || "") + - "
    " - ); - } - }); - })(ci.label || langLabel, ci.val); - } - var ui = new editorui.Combox({ - editor: editor, - items: items, - onselect: function(t, index) { - editor.execCommand("FontFamily", this.items[index].value); - }, - onbuttonclick: function() { - this.showPopup(); - }, - title: title, - initValue: title, - className: "edui-for-fontfamily", - indexByValue: function(value) { - if (value) { - for (var i = 0, ci; (ci = this.items[i]); i++) { - if (ci.value.indexOf(value) != -1) return i; - } - } - - return -1; - } - }); - editorui.buttons["fontfamily"] = ui; - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - if (!uiReady) { - var state = editor.queryCommandState("FontFamily"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("FontFamily"); - //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号 - value && (value = value.replace(/['"]/g, "").split(",")[0]); - ui.setValue(value); - } - } - }); - return ui; - }; - - editorui.fontsize = function(editor, list, title) { - title = - editor.options.labelMap["fontsize"] || - editor.getLang("labelMap.fontsize") || - ""; - list = list || editor.options["fontsize"] || []; - if (!list.length) return; - var items = []; - for (var i = 0; i < list.length; i++) { - var size = list[i] + "px"; - items.push({ - label: size, - value: size, - theme: editor.options.theme, - renderLabelHtml: function() { - return ( - '
    ' + - (this.label || "") + - "
    " - ); - } - }); - } - var ui = new editorui.Combox({ - editor: editor, - items: items, - title: title, - initValue: title, - onselect: function(t, index) { - editor.execCommand("FontSize", this.items[index].value); - }, - onbuttonclick: function() { - this.showPopup(); - }, - className: "edui-for-fontsize" - }); - editorui.buttons["fontsize"] = ui; - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - if (!uiReady) { - var state = editor.queryCommandState("FontSize"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - ui.setValue(editor.queryCommandValue("FontSize")); - } - } - }); - return ui; - }; - - editorui.paragraph = function(editor, list, title) { - title = - editor.options.labelMap["paragraph"] || - editor.getLang("labelMap.paragraph") || - ""; - list = editor.options["paragraph"] || []; - if (utils.isEmptyObject(list)) return; - var items = []; - for (var i in list) { - items.push({ - value: i, - label: list[i] || editor.getLang("paragraph")[i], - theme: editor.options.theme, - renderLabelHtml: function() { - return ( - '
    ' + - (this.label || "") + - "
    " - ); - } - }); - } - var ui = new editorui.Combox({ - editor: editor, - items: items, - title: title, - initValue: title, - className: "edui-for-paragraph", - onselect: function(t, index) { - editor.execCommand("Paragraph", this.items[index].value); - }, - onbuttonclick: function() { - this.showPopup(); - } - }); - editorui.buttons["paragraph"] = ui; - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - if (!uiReady) { - var state = editor.queryCommandState("Paragraph"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("Paragraph"); - var index = ui.indexByValue(value); - if (index != -1) { - ui.setValue(value); - } else { - ui.setValue(ui.initValue); - } - } - } - }); - return ui; - }; - - //自定义标题 - editorui.customstyle = function(editor) { - var list = editor.options["customstyle"] || [], - title = - editor.options.labelMap["customstyle"] || - editor.getLang("labelMap.customstyle") || - ""; - if (!list.length) return; - var langCs = editor.getLang("customstyle"); - for (var i = 0, items = [], t; (t = list[i++]); ) { - (function(t) { - var ck = {}; - ck.label = t.label ? t.label : langCs[t.name]; - ck.style = t.style; - ck.className = t.className; - ck.tag = t.tag; - items.push({ - label: ck.label, - value: ck, - theme: editor.options.theme, - renderLabelHtml: function() { - return ( - '
    ' + - "<" + - ck.tag + - " " + - (ck.className ? ' class="' + ck.className + '"' : "") + - (ck.style ? ' style="' + ck.style + '"' : "") + - ">" + - ck.label + - "" + - "
    " - ); - } - }); - })(t); - } - - var ui = new editorui.Combox({ - editor: editor, - items: items, - title: title, - initValue: title, - className: "edui-for-customstyle", - onselect: function(t, index) { - editor.execCommand("customstyle", this.items[index].value); - }, - onbuttonclick: function() { - this.showPopup(); - }, - indexByValue: function(value) { - for (var i = 0, ti; (ti = this.items[i++]); ) { - if (ti.label == value) { - return i - 1; - } - } - return -1; - } - }); - editorui.buttons["customstyle"] = ui; - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - if (!uiReady) { - var state = editor.queryCommandState("customstyle"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("customstyle"); - var index = ui.indexByValue(value); - if (index != -1) { - ui.setValue(value); - } else { - ui.setValue(ui.initValue); - } - } - } - }); - return ui; - }; - editorui.inserttable = function(editor, iframeUrl, title) { - title = - editor.options.labelMap["inserttable"] || - editor.getLang("labelMap.inserttable") || - ""; - var ui = new editorui.TableButton({ - editor: editor, - title: title, - className: "edui-for-inserttable", - onpicktable: function(t, numCols, numRows) { - editor.execCommand("InsertTable", { - numRows: numRows, - numCols: numCols, - border: 1 - }); - }, - onbuttonclick: function() { - this.showPopup(); - } - }); - editorui.buttons["inserttable"] = ui; - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState("inserttable") == -1); - }); - return ui; - }; - - editorui.lineheight = function(editor) { - var val = editor.options.lineheight || []; - if (!val.length) return; - for (var i = 0, ci, items = []; (ci = val[i++]); ) { - items.push({ - //todo:写死了 - label: ci, - value: ci, - theme: editor.options.theme, - onclick: function() { - editor.execCommand("lineheight", this.value); - } - }); - } - var ui = new editorui.MenuButton({ - editor: editor, - className: "edui-for-lineheight", - title: - editor.options.labelMap["lineheight"] || - editor.getLang("labelMap.lineheight") || - "", - items: items, - onbuttonclick: function() { - var value = editor.queryCommandValue("LineHeight") || this.value; - editor.execCommand("LineHeight", value); - } - }); - editorui.buttons["lineheight"] = ui; - editor.addListener("selectionchange", function() { - var state = editor.queryCommandState("LineHeight"); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("LineHeight"); - value && ui.setValue((value + "").replace(/cm/, "")); - ui.setChecked(state); - } - }); - return ui; - }; - - var rowspacings = ["top", "bottom"]; - for (var r = 0, ri; (ri = rowspacings[r++]); ) { - (function(cmd) { - editorui["rowspacing" + cmd] = function(editor) { - var val = editor.options["rowspacing" + cmd] || []; - if (!val.length) return null; - for (var i = 0, ci, items = []; (ci = val[i++]); ) { - items.push({ - label: ci, - value: ci, - theme: editor.options.theme, - onclick: function() { - editor.execCommand("rowspacing", this.value, cmd); - } - }); - } - var ui = new editorui.MenuButton({ - editor: editor, - className: "edui-for-rowspacing" + cmd, - title: - editor.options.labelMap["rowspacing" + cmd] || - editor.getLang("labelMap.rowspacing" + cmd) || - "", - items: items, - onbuttonclick: function() { - var value = - editor.queryCommandValue("rowspacing", cmd) || this.value; - editor.execCommand("rowspacing", value, cmd); - } - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function() { - var state = editor.queryCommandState("rowspacing", cmd); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue("rowspacing", cmd); - value && ui.setValue((value + "").replace(/%/, "")); - ui.setChecked(state); - } - }); - return ui; - }; - })(ri); - } - //有序,无序列表 - var lists = ["insertorderedlist", "insertunorderedlist"]; - for (var l = 0, cl; (cl = lists[l++]); ) { - (function(cmd) { - editorui[cmd] = function(editor) { - var vals = editor.options[cmd], - _onMenuClick = function() { - editor.execCommand(cmd, this.value); - }, - items = []; - for (var i in vals) { - items.push({ - label: vals[i] || editor.getLang()[cmd][i] || "", - value: i, - theme: editor.options.theme, - onclick: _onMenuClick - }); - } - var ui = new editorui.MenuButton({ - editor: editor, - className: "edui-for-" + cmd, - title: editor.getLang("labelMap." + cmd) || "", - items: items, - onbuttonclick: function() { - var value = editor.queryCommandValue(cmd) || this.value; - editor.execCommand(cmd, value); - } - }); - editorui.buttons[cmd] = ui; - editor.addListener("selectionchange", function() { - var state = editor.queryCommandState(cmd); - if (state == -1) { - ui.setDisabled(true); - } else { - ui.setDisabled(false); - var value = editor.queryCommandValue(cmd); - ui.setValue(value); - ui.setChecked(state); - } - }); - return ui; - }; - })(cl); - } - - editorui.fullscreen = function(editor, title) { - title = - editor.options.labelMap["fullscreen"] || - editor.getLang("labelMap.fullscreen") || - ""; - var ui = new editorui.Button({ - className: "edui-for-fullscreen", - title: title, - theme: editor.options.theme, - onclick: function() { - if (editor.ui) { - editor.ui.setFullScreen(!editor.ui.isFullScreen()); - } - this.setChecked(editor.ui.isFullScreen()); - } - }); - editorui.buttons["fullscreen"] = ui; - editor.addListener("selectionchange", function() { - var state = editor.queryCommandState("fullscreen"); - ui.setDisabled(state == -1); - ui.setChecked(editor.ui.isFullScreen()); - }); - return ui; - }; - - // 表情 - editorui["emotion"] = function(editor, iframeUrl) { - var cmd = "emotion"; - var ui = new editorui.MultiMenuPop({ - title: - editor.options.labelMap[cmd] || - editor.getLang("labelMap." + cmd + "") || - "", - editor: editor, - className: "edui-for-" + cmd, - iframeUrl: editor.ui.mapUrl( - iframeUrl || - (editor.options.iframeUrlMap || {})[cmd] || - iframeUrlMap[cmd] - ) - }); - editorui.buttons[cmd] = ui; - - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState(cmd) == -1); - }); - return ui; - }; - - editorui.autotypeset = function(editor) { - var ui = new editorui.AutoTypeSetButton({ - editor: editor, - title: - editor.options.labelMap["autotypeset"] || - editor.getLang("labelMap.autotypeset") || - "", - className: "edui-for-autotypeset", - onbuttonclick: function() { - editor.execCommand("autotypeset"); - } - }); - editorui.buttons["autotypeset"] = ui; - editor.addListener("selectionchange", function() { - ui.setDisabled(editor.queryCommandState("autotypeset") == -1); - }); - return ui; - }; - - /* 简单上传插件 */ - editorui["simpleupload"] = function(editor) { - var name = "simpleupload", - ui = new editorui.Button({ - className: "edui-for-" + name, - title: - editor.options.labelMap[name] || - editor.getLang("labelMap." + name) || - "", - onclick: function() {}, - theme: editor.options.theme, - showText: false - }); - editorui.buttons[name] = ui; - editor.addListener("ready", function() { - var b = ui.getDom("body"), - iconSpan = b.children[0]; - editor.fireEvent("simpleuploadbtnready", iconSpan); - }); - editor.addListener("selectionchange", function(type, causeByUi, uiReady) { - var state = editor.queryCommandState(name); - if (state == -1) { - ui.setDisabled(true); - ui.setChecked(false); - } else { - if (!uiReady) { - ui.setDisabled(false); - ui.setChecked(state); - } - } - }); - return ui; - }; - })(); - - - // adapter/editor.js - ///import core - ///commands 全屏 - ///commandsName FullScreen - ///commandsTitle 全屏 - (function() { - var utils = baidu.editor.utils, - uiUtils = baidu.editor.ui.uiUtils, - UIBase = baidu.editor.ui.UIBase, - domUtils = baidu.editor.dom.domUtils; - var nodeStack = []; - - function EditorUI(options) { - this.initOptions(options); - this.initEditorUI(); - } - - EditorUI.prototype = { - uiName: "editor", - initEditorUI: function() { - this.editor.ui = this; - this._dialogs = {}; - this.initUIBase(); - this._initToolbars(); - var editor = this.editor, - me = this; - - editor.addListener("ready", function() { - //提供getDialog方法 - editor.getDialog = function(name) { - return editor.ui._dialogs[name + "Dialog"]; - }; - domUtils.on(editor.window, "scroll", function(evt) { - baidu.editor.ui.Popup.postHide(evt); - }); - //提供编辑器实时宽高(全屏时宽高不变化) - editor.ui._actualFrameWidth = editor.options.initialFrameWidth; - - UE.browser.ie && - UE.browser.version === 6 && - editor.container.ownerDocument.execCommand( - "BackgroundImageCache", - false, - true - ); - - //display bottom-bar label based on config - if (editor.options.elementPathEnabled) { - editor.ui.getDom("elementpath").innerHTML = - '
    ' + - editor.getLang("elementPathTip") + - ":
    "; - } - if (editor.options.wordCount) { - function countFn() { - setCount(editor, me); - domUtils.un(editor.document, "click", arguments.callee); - } - domUtils.on(editor.document, "click", countFn); - editor.ui.getDom("wordcount").innerHTML = editor.getLang( - "wordCountTip" - ); - } - editor.ui._scale(); - if (editor.options.scaleEnabled) { - if (editor.autoHeightEnabled) { - editor.disableAutoHeight(); - } - me.enableScale(); - } else { - me.disableScale(); - } - if ( - !editor.options.elementPathEnabled && - !editor.options.wordCount && - !editor.options.scaleEnabled - ) { - editor.ui.getDom("elementpath").style.display = "none"; - editor.ui.getDom("wordcount").style.display = "none"; - editor.ui.getDom("scale").style.display = "none"; - } - - if (!editor.selection.isFocus()) return; - editor.fireEvent("selectionchange", false, true); - }); - - editor.addListener("mousedown", function(t, evt) { - var el = evt.target || evt.srcElement; - baidu.editor.ui.Popup.postHide(evt, el); - baidu.editor.ui.ShortCutMenu.postHide(evt); - }); - editor.addListener("delcells", function() { - if (UE.ui["edittip"]) { - new UE.ui["edittip"](editor); - } - editor.getDialog("edittip").open(); - }); - - var pastePop, - isPaste = false, - timer; - editor.addListener("afterpaste", function() { - if (editor.queryCommandState("pasteplain")) return; - if (baidu.editor.ui.PastePicker) { - pastePop = new baidu.editor.ui.Popup({ - content: new baidu.editor.ui.PastePicker({ editor: editor }), - editor: editor, - className: "edui-wordpastepop" - }); - pastePop.render(); - } - isPaste = true; - }); - - editor.addListener("afterinserthtml", function() { - clearTimeout(timer); - timer = setTimeout(function() { - if (pastePop && (isPaste || editor.ui._isTransfer)) { - if (pastePop.isHidden()) { - var span = domUtils.createElement(editor.document, "span", { - style: "line-height:0px;", - innerHTML: "\ufeff" - }), - range = editor.selection.getRange(); - range.insertNode(span); - var tmp = getDomNode(span, "firstChild", "previousSibling"); - tmp && - pastePop.showAnchor(tmp.nodeType == 3 ? tmp.parentNode : tmp); - domUtils.remove(span); - } else { - pastePop.show(); - } - delete editor.ui._isTransfer; - isPaste = false; - } - }, 200); - }); - editor.addListener("contextmenu", function(t, evt) { - baidu.editor.ui.Popup.postHide(evt); - }); - editor.addListener("keydown", function(t, evt) { - if (pastePop) pastePop.dispose(evt); - var keyCode = evt.keyCode || evt.which; - if (evt.altKey && keyCode == 90) { - UE.ui.buttons["fullscreen"].onclick(); - } - }); - editor.addListener("wordcount", function(type) { - setCount(this, me); - }); - function setCount(editor, ui) { - editor.setOpt({ - wordCount: true, - maximumWords: 10000, - wordCountMsg: - editor.options.wordCountMsg || editor.getLang("wordCountMsg"), - wordOverFlowMsg: - editor.options.wordOverFlowMsg || editor.getLang("wordOverFlowMsg") - }); - var opt = editor.options, - max = opt.maximumWords, - msg = opt.wordCountMsg, - errMsg = opt.wordOverFlowMsg, - countDom = ui.getDom("wordcount"); - if (!opt.wordCount) { - return; - } - var count = editor.getContentLength(true); - if (count > max) { - countDom.innerHTML = errMsg; - editor.fireEvent("wordcountoverflow"); - } else { - countDom.innerHTML = msg - .replace("{#leave}", max - count) - .replace("{#count}", count); - } - } - - editor.addListener("selectionchange", function() { - if (editor.options.elementPathEnabled) { - me[ - (editor.queryCommandState("elementpath") == -1 ? "dis" : "en") + - "ableElementPath" - ](); - } - if (editor.options.scaleEnabled) { - me[ - (editor.queryCommandState("scale") == -1 ? "dis" : "en") + - "ableScale" - ](); - } - }); - var popup = new baidu.editor.ui.Popup({ - editor: editor, - content: "", - className: "edui-bubble", - _onEditButtonClick: function() { - this.hide(); - editor.ui._dialogs.linkDialog.open(); - }, - _onImgEditButtonClick: function(name) { - this.hide(); - editor.ui._dialogs[name] && editor.ui._dialogs[name].open(); - }, - _onImgSetFloat: function(value) { - this.hide(); - editor.execCommand("imagefloat", value); - }, - _setIframeAlign: function(value) { - var frame = popup.anchorEl; - var newFrame = frame.cloneNode(true); - switch (value) { - case -2: - newFrame.setAttribute("align", ""); - break; - case -1: - newFrame.setAttribute("align", "left"); - break; - case 1: - newFrame.setAttribute("align", "right"); - break; - } - frame.parentNode.insertBefore(newFrame, frame); - domUtils.remove(frame); - popup.anchorEl = newFrame; - popup.showAnchor(popup.anchorEl); - }, - _updateIframe: function() { - var frame = (editor._iframe = popup.anchorEl); - if (domUtils.hasClass(frame, "ueditor_baidumap")) { - editor.selection.getRange().selectNode(frame).select(); - editor.ui._dialogs.mapDialog.open(); - popup.hide(); - } else { - editor.ui._dialogs.insertframeDialog.open(); - popup.hide(); - } - }, - _onRemoveButtonClick: function(cmdName) { - editor.execCommand(cmdName); - this.hide(); - }, - queryAutoHide: function(el) { - if (el && el.ownerDocument == editor.document) { - if ( - el.tagName.toLowerCase() == "img" || - domUtils.findParentByTagName(el, "a", true) - ) { - return el !== popup.anchorEl; - } - } - return baidu.editor.ui.Popup.prototype.queryAutoHide.call(this, el); - } - }); - popup.render(); - if (editor.options.imagePopup) { - editor.addListener("mouseover", function(t, evt) { - evt = evt || window.event; - var el = evt.target || evt.srcElement; - if ( - editor.ui._dialogs.insertframeDialog && - /iframe/gi.test(el.tagName) - ) { - var html = popup.formatHtml( - "" + - editor.getLang("property") + - ': ' + - editor.getLang("default") + - '  ' + - editor.getLang("justifyleft") + - '  ' + - editor.getLang("justifyright") + - "  " + - ' ' + - editor.getLang("modify") + - "" - ); - if (html) { - popup.getDom("content").innerHTML = html; - popup.anchorEl = el; - popup.showAnchor(popup.anchorEl); - } else { - popup.hide(); - } - } - }); - editor.addListener("selectionchange", function(t, causeByUi) { - if (!causeByUi) return; - var html = "", - str = "", - img = editor.selection.getRange().getClosedNode(), - dialogs = editor.ui._dialogs; - if (img && img.tagName == "IMG") { - var dialogName = "insertimageDialog"; - if ( - img.className.indexOf("edui-faked-video") != -1 || - img.className.indexOf("edui-upload-video") != -1 - ) { - dialogName = "insertvideoDialog"; - } - if (img.className.indexOf("edui-faked-webapp") != -1) { - dialogName = "webappDialog"; - } - if (img.src.indexOf("http://api.map.baidu.com") != -1) { - dialogName = "mapDialog"; - } - if (img.className.indexOf("edui-faked-music") != -1) { - dialogName = "musicDialog"; - } - if ( - img.src.indexOf("http://maps.google.com/maps/api/staticmap") != -1 - ) { - dialogName = "gmapDialog"; - } - if (img.getAttribute("anchorname")) { - dialogName = "anchorDialog"; - html = popup.formatHtml( - "" + - editor.getLang("property") + - ': ' + - editor.getLang("modify") + - "  " + - "" + - editor.getLang("delete") + - "" - ); - } - if (img.getAttribute("word_img")) { - //todo 放到dialog去做查询 - editor.word_img = [img.getAttribute("word_img")]; - dialogName = "wordimageDialog"; - } - if ( - domUtils.hasClass(img, "loadingclass") || - domUtils.hasClass(img, "loaderrorclass") - ) { - dialogName = ""; - } - if (!dialogs[dialogName]) { - return; - } - str = - "" + - editor.getLang("property") + - ": " + - '' + - editor.getLang("default") + - "  " + - '' + - editor.getLang("justifyleft") + - "  " + - '' + - editor.getLang("justifyright") + - "  " + - '' + - editor.getLang("justifycenter") + - "  " + - "' + - editor.getLang("modify") + - ""; - - !html && (html = popup.formatHtml(str)); - } - if (editor.ui._dialogs.linkDialog) { - var link = editor.queryCommandValue("link"); - var url; - if ( - link && - (url = link.getAttribute("_href") || link.getAttribute("href", 2)) - ) { - var txt = url; - if (url.length > 30) { - txt = url.substring(0, 20) + "..."; - } - if (html) { - html += '
    '; - } - html += popup.formatHtml( - "" + - editor.getLang("anthorMsg") + - ': ' + - txt + - "" + - ' ' + - editor.getLang("modify") + - "" + - ' ' + - editor.getLang("clear") + - "" - ); - popup.showAnchor(link); - } - } - - if (html) { - popup.getDom("content").innerHTML = html; - popup.anchorEl = img || link; - popup.showAnchor(popup.anchorEl); - } else { - popup.hide(); - } - }); - } - }, - _initToolbars: function() { - var editor = this.editor; - var toolbars = this.toolbars || []; - var toolbarUis = []; - var extraUIs = []; - for (var i = 0; i < toolbars.length; i++) { - var toolbar = toolbars[i]; - var toolbarUi = new baidu.editor.ui.Toolbar({ - theme: editor.options.theme - }); - for (var j = 0; j < toolbar.length; j++) { - var toolbarItem = toolbar[j]; - var toolbarItemUi = null; - if (typeof toolbarItem == "string") { - toolbarItem = toolbarItem.toLowerCase(); - if (toolbarItem == "|") { - toolbarItem = "Separator"; - } - if (toolbarItem == "||") { - toolbarItem = "Breakline"; - } - var ui = baidu.editor.ui[toolbarItem]; - if (ui) { - if (utils.isFunction(ui)) { - toolbarItemUi = new baidu.editor.ui[toolbarItem](editor); - } else { - if (ui.id && ui.id != editor.key) { - continue; - } - var itemUI = ui.execFn.call(editor, editor, toolbarItem); - if (itemUI) { - if (ui.index === undefined) { - toolbarUi.add(itemUI); - continue; - } else { - extraUIs.push({ - index: ui.index, - itemUI: itemUI - }); - } - } - } - } - //fullscreen这里单独处理一下,放到首行去 - if (toolbarItem == "fullscreen") { - if (toolbarUis && toolbarUis[0]) { - toolbarUis[0].items.splice(0, 0, toolbarItemUi); - } else { - toolbarItemUi && toolbarUi.items.splice(0, 0, toolbarItemUi); - } - continue; - } - } else { - toolbarItemUi = toolbarItem; - } - if (toolbarItemUi && toolbarItemUi.id) { - toolbarUi.add(toolbarItemUi); - } - } - toolbarUis[i] = toolbarUi; - } - - //接受外部定制的UI - - utils.each(extraUIs, function(obj) { - toolbarUi.add(obj.itemUI, obj.index); - }); - this.toolbars = toolbarUis; - }, - getHtmlTpl: function() { - return ( - '
    ' + - '
    ' + - (this.toolbars.length - ? '
    ' + - this.renderToolbarBoxHtml() + - "
    " - : "") + - '" + - '
    ' + - "
    " + - '
    ' + - "
    " + - //modify wdcount by matao - '
    ' + - '' + - '' + - '' + - "
    " + - '
    ' + - "
    " - ); - }, - showWordImageDialog: function() { - this._dialogs["wordimageDialog"].open(); - }, - renderToolbarBoxHtml: function() { - var buff = []; - for (var i = 0; i < this.toolbars.length; i++) { - buff.push(this.toolbars[i].renderHtml()); - } - return buff.join(""); - }, - setFullScreen: function(fullscreen) { - var editor = this.editor, - container = editor.container.parentNode.parentNode; - if (this._fullscreen != fullscreen) { - this._fullscreen = fullscreen; - this.editor.fireEvent("beforefullscreenchange", fullscreen); - if (baidu.editor.browser.gecko) { - var bk = editor.selection.getRange().createBookmark(); - } - if (fullscreen) { - while (container.tagName != "BODY") { - var position = baidu.editor.dom.domUtils.getComputedStyle( - container, - "position" - ); - nodeStack.push(position); - container.style.position = "static"; - container = container.parentNode; - } - this._bakHtmlOverflow = document.documentElement.style.overflow; - this._bakBodyOverflow = document.body.style.overflow; - this._bakAutoHeight = this.editor.autoHeightEnabled; - this._bakScrollTop = Math.max( - document.documentElement.scrollTop, - document.body.scrollTop - ); - - this._bakEditorContaninerWidth = editor.iframe.parentNode.offsetWidth; - if (this._bakAutoHeight) { - //当全屏时不能执行自动长高 - editor.autoHeightEnabled = false; - this.editor.disableAutoHeight(); - } - - document.documentElement.style.overflow = "hidden"; - //修复,滚动条不收起的问题 - - window.scrollTo(0, window.scrollY); - this._bakCssText = this.getDom().style.cssText; - this._bakCssText1 = this.getDom("iframeholder").style.cssText; - editor.iframe.parentNode.style.width = ""; - this._updateFullScreen(); - } else { - while (container.tagName != "BODY") { - container.style.position = nodeStack.shift(); - container = container.parentNode; - } - this.getDom().style.cssText = this._bakCssText; - this.getDom("iframeholder").style.cssText = this._bakCssText1; - if (this._bakAutoHeight) { - editor.autoHeightEnabled = true; - this.editor.enableAutoHeight(); - } - - document.documentElement.style.overflow = this._bakHtmlOverflow; - document.body.style.overflow = this._bakBodyOverflow; - editor.iframe.parentNode.style.width = - this._bakEditorContaninerWidth + "px"; - window.scrollTo(0, this._bakScrollTop); - } - if (browser.gecko && editor.body.contentEditable === "true") { - var input = document.createElement("input"); - document.body.appendChild(input); - editor.body.contentEditable = false; - setTimeout(function() { - input.focus(); - setTimeout(function() { - editor.body.contentEditable = true; - editor.fireEvent("fullscreenchanged", fullscreen); - editor.selection.getRange().moveToBookmark(bk).select(true); - baidu.editor.dom.domUtils.remove(input); - fullscreen && window.scroll(0, 0); - }, 0); - }, 0); - } - - if (editor.body.contentEditable === "true") { - this.editor.fireEvent("fullscreenchanged", fullscreen); - this.triggerLayout(); - } - } - }, - _updateFullScreen: function() { - if (this._fullscreen) { - var vpRect = uiUtils.getViewportRect(); - this.getDom().style.cssText = - "border:0;position:absolute;left:0;top:" + - (this.editor.options.topOffset || 0) + - "px;width:" + - vpRect.width + - "px;height:" + - vpRect.height + - "px;z-index:" + - (this.getDom().style.zIndex * 1 + 100); - uiUtils.setViewportOffset(this.getDom(), { - left: 0, - top: this.editor.options.topOffset || 0 - }); - this.editor.setHeight( - vpRect.height - - this.getDom("toolbarbox").offsetHeight - - this.getDom("bottombar").offsetHeight - - (this.editor.options.topOffset || 0), - true - ); - //不手动调一下,会导致全屏失效 - if (browser.gecko) { - try { - window.onresize(); - } catch (e) {} - } - } - }, - _updateElementPath: function() { - var bottom = this.getDom("elementpath"), - list; - if ( - this.elementPathEnabled && - (list = this.editor.queryCommandValue("elementpath")) - ) { - var buff = []; - for (var i = 0, ci; (ci = list[i]); i++) { - buff[i] = this.formatHtml( - '' + - ci + - "" - ); - } - bottom.innerHTML = - '
    ' + - this.editor.getLang("elementPathTip") + - ": " + - buff.join(" > ") + - "
    "; - } else { - bottom.style.display = "none"; - } - }, - disableElementPath: function() { - var bottom = this.getDom("elementpath"); - bottom.innerHTML = ""; - bottom.style.display = "none"; - this.elementPathEnabled = false; - }, - enableElementPath: function() { - var bottom = this.getDom("elementpath"); - bottom.style.display = ""; - this.elementPathEnabled = true; - this._updateElementPath(); - }, - _scale: function() { - var doc = document, - editor = this.editor, - editorHolder = editor.container, - editorDocument = editor.document, - toolbarBox = this.getDom("toolbarbox"), - bottombar = this.getDom("bottombar"), - scale = this.getDom("scale"), - scalelayer = this.getDom("scalelayer"); - - var isMouseMove = false, - position = null, - minEditorHeight = 0, - minEditorWidth = editor.options.minFrameWidth, - pageX = 0, - pageY = 0, - scaleWidth = 0, - scaleHeight = 0; - - function down() { - position = domUtils.getXY(editorHolder); - - if (!minEditorHeight) { - minEditorHeight = - editor.options.minFrameHeight + - toolbarBox.offsetHeight + - bottombar.offsetHeight; - } - - scalelayer.style.cssText = - "position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:" + - editorHolder.offsetWidth + - "px;height:" + - editorHolder.offsetHeight + - "px;z-index:" + - (editor.options.zIndex + 1); - - domUtils.on(doc, "mousemove", move); - domUtils.on(editorDocument, "mouseup", up); - domUtils.on(doc, "mouseup", up); - } - - var me = this; - //by xuheng 全屏时关掉缩放 - this.editor.addListener("fullscreenchanged", function(e, fullScreen) { - if (fullScreen) { - me.disableScale(); - } else { - if (me.editor.options.scaleEnabled) { - me.enableScale(); - var tmpNode = me.editor.document.createElement("span"); - me.editor.body.appendChild(tmpNode); - me.editor.body.style.height = - Math.max( - domUtils.getXY(tmpNode).y, - me.editor.iframe.offsetHeight - 20 - ) + "px"; - domUtils.remove(tmpNode); - } - } - }); - function move(event) { - clearSelection(); - var e = event || window.event; - pageX = e.pageX || doc.documentElement.scrollLeft + e.clientX; - pageY = e.pageY || doc.documentElement.scrollTop + e.clientY; - scaleWidth = pageX - position.x; - scaleHeight = pageY - position.y; - - if (scaleWidth >= minEditorWidth) { - isMouseMove = true; - scalelayer.style.width = scaleWidth + "px"; - } - if (scaleHeight >= minEditorHeight) { - isMouseMove = true; - scalelayer.style.height = scaleHeight + "px"; - } - } - - function up() { - if (isMouseMove) { - isMouseMove = false; - editor.ui._actualFrameWidth = scalelayer.offsetWidth - 2; - editorHolder.style.width = editor.ui._actualFrameWidth + "px"; - - editor.setHeight( - scalelayer.offsetHeight - - bottombar.offsetHeight - - toolbarBox.offsetHeight - - 2, - true - ); - } - if (scalelayer) { - scalelayer.style.display = "none"; - } - clearSelection(); - domUtils.un(doc, "mousemove", move); - domUtils.un(editorDocument, "mouseup", up); - domUtils.un(doc, "mouseup", up); - } - - function clearSelection() { - if (browser.ie) doc.selection.clear(); - else window.getSelection().removeAllRanges(); - } - - this.enableScale = function() { - //trace:2868 - if (editor.queryCommandState("source") == 1) return; - scale.style.display = ""; - this.scaleEnabled = true; - domUtils.on(scale, "mousedown", down); - }; - this.disableScale = function() { - scale.style.display = "none"; - this.scaleEnabled = false; - domUtils.un(scale, "mousedown", down); - }; - }, - isFullScreen: function() { - return this._fullscreen; - }, - postRender: function() { - UIBase.prototype.postRender.call(this); - for (var i = 0; i < this.toolbars.length; i++) { - this.toolbars[i].postRender(); - } - var me = this; - var timerId, - domUtils = baidu.editor.dom.domUtils, - updateFullScreenTime = function() { - clearTimeout(timerId); - timerId = setTimeout(function() { - me._updateFullScreen(); - }); - }; - domUtils.on(window, "resize", updateFullScreenTime); - - me.addListener("destroy", function() { - domUtils.un(window, "resize", updateFullScreenTime); - clearTimeout(timerId); - }); - }, - showToolbarMsg: function(msg, flag) { - this.getDom("toolbarmsg_label").innerHTML = msg; - this.getDom("toolbarmsg").style.display = ""; - // - if (!flag) { - var w = this.getDom("upload_dialog"); - w.style.display = "none"; - } - }, - hideToolbarMsg: function() { - this.getDom("toolbarmsg").style.display = "none"; - }, - mapUrl: function(url) { - return url - ? url.replace("~/", this.editor.options.UEDITOR_HOME_URL || "") - : ""; - }, - triggerLayout: function() { - var dom = this.getDom(); - if (dom.style.zoom == "1") { - dom.style.zoom = "100%"; - } else { - dom.style.zoom = "1"; - } - } - }; - utils.inherits(EditorUI, baidu.editor.ui.UIBase); - - var instances = {}; - - UE.ui.Editor = function(options) { - var editor = new UE.Editor(options); - editor.options.editor = editor; - utils.loadFile(document, { - href: - editor.options.themePath + editor.options.theme + "/css/ueditor.css", - tag: "link", - type: "text/css", - rel: "stylesheet" - }); - - var oldRender = editor.render; - editor.render = function(holder) { - if (holder.constructor === String) { - editor.key = holder; - instances[holder] = editor; - } - utils.domReady(function() { - editor.langIsReady - ? renderUI() - : editor.addListener("langReady", renderUI); - function renderUI() { - editor.setOpt({ - labelMap: editor.options.labelMap || editor.getLang("labelMap") - }); - new EditorUI(editor.options); - if (holder) { - if (holder.constructor === String) { - holder = document.getElementById(holder); - } - holder && - holder.getAttribute("name") && - (editor.options.textarea = holder.getAttribute("name")); - if (holder && /script|textarea/gi.test(holder.tagName)) { - var newDiv = document.createElement("div"); - holder.parentNode.insertBefore(newDiv, holder); - var cont = holder.value || holder.innerHTML; - editor.options.initialContent = /^[\t\r\n ]*$/.test(cont) - ? editor.options.initialContent - : cont - .replace(/>[\n\r\t]+([ ]{4})+/g, ">") - .replace(/[\n\r\t]+([ ]{4})+[\n\r\t]+<"); - holder.className && (newDiv.className = holder.className); - holder.style.cssText && - (newDiv.style.cssText = holder.style.cssText); - if (/textarea/i.test(holder.tagName)) { - editor.textarea = holder; - editor.textarea.style.display = "none"; - } else { - holder.parentNode.removeChild(holder); - } - if (holder.id) { - newDiv.id = holder.id; - domUtils.removeAttributes(holder, "id"); - } - holder = newDiv; - holder.innerHTML = ""; - } - } - domUtils.addClass(holder, "edui-" + editor.options.theme); - editor.ui.render(holder); - var opt = editor.options; - //给实例添加一个编辑器的容器引用 - editor.container = editor.ui.getDom(); - var parents = domUtils.findParents(holder, true); - var displays = []; - for (var i = 0, ci; (ci = parents[i]); i++) { - displays[i] = ci.style.display; - ci.style.display = "block"; - } - if (opt.initialFrameWidth) { - opt.minFrameWidth = opt.initialFrameWidth; - } else { - opt.minFrameWidth = opt.initialFrameWidth = holder.offsetWidth; - var styleWidth = holder.style.width; - if (/%$/.test(styleWidth)) { - opt.initialFrameWidth = styleWidth; - } - } - if (opt.initialFrameHeight) { - opt.minFrameHeight = opt.initialFrameHeight; - } else { - opt.initialFrameHeight = opt.minFrameHeight = holder.offsetHeight; - } - for (var i = 0, ci; (ci = parents[i]); i++) { - ci.style.display = displays[i]; - } - //编辑器最外容器设置了高度,会导致,编辑器不占位 - //todo 先去掉,没有找到原因 - if (holder.style.height) { - holder.style.height = ""; - } - editor.container.style.width = - opt.initialFrameWidth + - (/%$/.test(opt.initialFrameWidth) ? "" : "px"); - editor.container.style.zIndex = opt.zIndex; - oldRender.call(editor, editor.ui.getDom("iframeholder")); - editor.fireEvent("afteruiready"); - } - }); - }; - return editor; - }; - - /** - * @file - * @name UE - * @short UE - * @desc UEditor的顶部命名空间 - */ - /** - * @name getEditor - * @since 1.2.4+ - * @grammar UE.getEditor(id,[opt]) => Editor实例 - * @desc 提供一个全局的方法得到编辑器实例 - * - * * ''id'' 放置编辑器的容器id, 如果容器下的编辑器已经存在,就直接返回 - * * ''opt'' 编辑器的可选参数 - * @example - * UE.getEditor('containerId',{onready:function(){//创建一个编辑器实例 - * this.setContent('hello') - * }}); - * UE.getEditor('containerId'); //返回刚创建的实例 - * - */ - UE.getEditor = function(id, opt) { - var editor = instances[id]; - if (!editor) { - editor = instances[id] = new UE.ui.Editor(opt); - editor.render(id); - } - return editor; - }; - - UE.delEditor = function(id) { - var editor; - if ((editor = instances[id])) { - editor.key && editor.destroy(); - delete instances[id]; - } - }; - - UE.registerUI = function(uiName, fn, index, editorId) { - utils.each(uiName.split(/\s+/), function(name) { - baidu.editor.ui[name] = { - id: editorId, - execFn: fn, - index: index - }; - }); - }; - })(); - - - // adapter/message.js - UE.registerUI("message", function(editor) { - var editorui = baidu.editor.ui; - var Message = editorui.Message; - var holder; - var _messageItems = []; - var me = editor; - - me.setOpt("enableMessageShow", true); - if (me.getOpt("enableMessageShow") === false) { - return; - } - - me.addListener("ready", function() { - holder = document.getElementById(me.ui.id + "_message_holder"); - updateHolderPos(); - setTimeout(function() { - updateHolderPos(); - }, 500); - }); - - me.addListener("showmessage", function(type, opt) { - opt = utils.isString(opt) - ? { - content: opt - } - : opt; - var message = new Message({ - timeout: opt.timeout, - type: opt.type, - content: opt.content, - keepshow: opt.keepshow, - editor: me - }), - mid = opt.id || "msg_" + (+new Date()).toString(36); - message.render(holder); - _messageItems[mid] = message; - message.reset(opt); - updateHolderPos(); - return mid; - }); - - me.addListener("updatemessage", function(type, id, opt) { - opt = utils.isString(opt) - ? { - content: opt - } - : opt; - var message = _messageItems[id]; - message.render(holder); - message && message.reset(opt); - }); - - me.addListener("hidemessage", function(type, id) { - var message = _messageItems[id]; - message && message.hide(); - }); - - function updateHolderPos() { - if (!holder || !me.ui) return; - var toolbarbox = me.ui.getDom("toolbarbox"); - if (toolbarbox) { - holder.style.top = toolbarbox.offsetHeight + 3 + "px"; - } - holder.style.zIndex = - Math.max(me.options.zIndex, me.iframe.style.zIndex) + 1; - } - }); - - - // adapter/autosave.js - UE.registerUI("autosave", function(editor) { - var timer = null, - uid = null; - editor.on("afterautosave", function() { - clearTimeout(timer); - - timer = setTimeout(function() { - if (uid) { - editor.trigger("hidemessage", uid); - } - uid = editor.trigger("showmessage", { - content: editor.getLang("autosave.success"), - timeout: 2000 - }); - }, 2000); - }); - }); - - - - })(); - \ No newline at end of file diff --git a/public/ueditor/ueditor.config.js b/public/ueditor/ueditor.config.js deleted file mode 100644 index 73de613..0000000 --- a/public/ueditor/ueditor.config.js +++ /dev/null @@ -1,508 +0,0 @@ -/** - * ueditor完整配置项 - * 可以在这里配置整个编辑器的特性 - */ -/**************************提示******************************** - * 所有被注释的配置项均为UEditor默认值。 - * 修改默认配置请首先确保已经完全明确该参数的真实用途。 - * 主要有两种修改方案,一种是取消此处注释,然后修改成对应参数;另一种是在实例化编辑器时传入对应参数。 - * 当升级编辑器时,可直接使用旧版配置文件替换新版配置文件,不用担心旧版配置文件中因缺少新功能所需的参数而导致脚本报错。 - **************************提示********************************/ - -(function() { - /** - * 编辑器资源文件根路径。它所表示的含义是:以编辑器实例化页面为当前路径,指向编辑器资源文件(即dialog等文件夹)的路径。 - * 鉴于很多同学在使用编辑器的时候出现的种种路径问题,此处强烈建议大家使用"相对于网站根目录的相对路径"进行配置。 - * "相对于网站根目录的相对路径"也就是以斜杠开头的形如"/myProject/ueditor/"这样的路径。 - * 如果站点中有多个不在同一层级的页面需要实例化编辑器,且引用了同一UEditor的时候,此处的URL可能不适用于每个页面的编辑器。 - * 因此,UEditor提供了针对不同页面的编辑器可单独配置的根路径,具体来说,在需要实例化编辑器的页面最顶部写上如下代码即可。当然,需要令此处的URL等于对应的配置。 - * window.UEDITOR_HOME_URL = "/xxxx/xxxx/"; - */ - window.UEDITOR_HOME_URL = '/ueditor' - var URL = window.UEDITOR_HOME_URL || getUEBasePath(); - - /** - * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。 - */ - window.UEDITOR_CONFIG = { - //为编辑器实例添加一个路径,这个不能被注释 - UEDITOR_HOME_URL: URL, - - // 服务器统一请求接口路径 - // serverUrl: "http://192.168.31.136:10000/iasf/sysFiles/upload", - - //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义 - toolbars: [ - [ - "fullscreen", - "source", - "|", - "undo", - "redo", - "|", - "bold", - "italic", - "underline", - "fontborder", - "strikethrough", - "superscript", - "subscript", - "removeformat", - "formatmatch", - "autotypeset", - "blockquote", - "pasteplain", - "|", - "forecolor", - "backcolor", - "insertorderedlist", - "insertunorderedlist", - "selectall", - "cleardoc", - "|", - "rowspacingtop", - "rowspacingbottom", - "lineheight", - "|", - "customstyle", - "paragraph", - "fontfamily", - "fontsize", - "|", - "directionalityltr", - "directionalityrtl", - "indent", - "|", - "justifyleft", - "justifycenter", - "justifyright", - "justifyjustify", - "|", - "touppercase", - "tolowercase", - "|", - "link", - "unlink", - "anchor", - "|", - "imagenone", - "imageleft", - "imageright", - "imagecenter", - "|", - "simpleupload", - "insertimage", - "emotion", - "scrawl", - "insertvideo", - "music", - "attachment", - "map", - "gmap", - "insertframe", - "insertcode", - "webapp", - "pagebreak", - "template", - "background", - "|", - "horizontal", - "date", - "time", - "spechars", - "snapscreen", - "wordimage", - "|", - "inserttable", - "deletetable", - "insertparagraphbeforetable", - "insertrow", - "deleterow", - "insertcol", - "deletecol", - "mergecells", - "mergeright", - "mergedown", - "splittocells", - "splittorows", - "splittocols", - "charts", - "|", - "print", - "preview", - "searchreplace", - "drafts", - "help" - ] - ] - //当鼠标放在工具栏上时显示的tooltip提示,留空支持自动多语言配置,否则以配置值为准 - ,labelMap:{ - 'anchor':'', 'undo':'' - } - - //语言配置项,默认是zh-cn。有需要的话也可以使用如下这样的方式来自动多语言切换,当然,前提条件是lang文件夹下存在对应的语言文件: - //lang值也可以通过自动获取 (navigator.language||navigator.browserLanguage ||navigator.userLanguage).toLowerCase() - //,lang:"zh-cn" - //,langPath:URL +"lang/" - - //主题配置项,默认是default。有需要的话也可以使用如下这样的方式来自动多主题切换,当然,前提条件是themes文件夹下存在对应的主题文件: - //现有如下皮肤:default - //,theme:'default' - //,themePath:URL +"themes/" - - //,zIndex : 900 //编辑器层级的基数,默认是900 - - //针对getAllHtml方法,会在对应的head标签中增加该编码设置。 - //,charset:"utf-8" - - //若实例化编辑器的页面手动修改的domain,此处需要设置为true - //,customDomain:false - - //常用配置项目 - //,isShow : true //默认显示编辑器 - - //,textarea:'editorValue' // 提交表单时,服务器获取编辑器提交内容的所用的参数,多实例时可以给容器name属性,会将name给定的值最为每个实例的键值,不用每次实例化的时候都设置这个值 - - //,initialContent:'欢迎使用ueditor!' //初始化编辑器的内容,也可以通过textarea/script给值,看官网例子 - - //,autoClearinitialContent:true //是否自动清除编辑器初始内容,注意:如果focus属性设置为true,这个也为真,那么编辑器一上来就会触发导致初始化的内容看不到了 - - //,focus:false //初始化时,是否让编辑器获得焦点true或false - - //如果自定义,最好给p标签如下的行高,要不输入中文时,会有跳动感 - //,initialStyle:'p{line-height:1em}'//编辑器层级的基数,可以用来改变字体等 - - //,iframeJsUrl: '' //给编辑区域的iframe引入一个js文件 - //,iframeCssUrl: URL + '/themes/iframe.css' //给编辑区域的iframe引入一个css文件 - - //indentValue - //首行缩进距离,默认是2em - //,indentValue:'2em' - - //,initialFrameWidth:1000 //初始化编辑器宽度,默认1000 - //,initialFrameHeight:320 //初始化编辑器高度,默认320 - - //,readonly : false //编辑器初始化结束后,编辑区域是否是只读的,默认是false - - //,autoClearEmptyNode : true //getContent时,是否删除空的inlineElement节点(包括嵌套的情况) - - //启用自动保存 - //,enableAutoSave: true - //自动保存间隔时间, 单位ms - //,saveInterval: 500 - - //启用拖放上传 - ,enableDragUpload: true - //启用粘贴上传 - ,enablePasteUpload: true - - //启用图片拉伸缩放 - ,imageScaleEnabled: true - - //,fullscreen : false //是否开启初始化时即全屏,默认关闭 - - //,imagePopup:true //图片操作的浮层开关,默认打开 - - //,autoSyncData:true //自动同步编辑器要提交的数据 - //,emotionLocalization:false //是否开启表情本地化,默认关闭。若要开启请确保emotion文件夹下包含官网提供的images表情文件夹 - - //粘贴只保留标签,去除标签所有属性 - //,retainOnlyLabelPasted: false - - //,pasteplain:false //是否默认为纯文本粘贴。false为不使用纯文本粘贴,true为使用纯文本粘贴 - //纯文本粘贴模式下的过滤规则 - //'filterTxtRules' : function(){ - // function transP(node){ - // node.tagName = 'p'; - // node.setStyle(); - // } - // return { - // //直接删除及其字节点内容 - // '-' : 'script style object iframe embed input select', - // 'p': {$:{}}, - // 'br':{$:{}}, - // 'div':{'$':{}}, - // 'li':{'$':{}}, - // 'caption':transP, - // 'th':transP, - // 'tr':transP, - // 'h1':transP,'h2':transP,'h3':transP,'h4':transP,'h5':transP,'h6':transP, - // 'td':function(node){ - // //没有内容的td直接删掉 - // var txt = !!node.innerText(); - // if(txt){ - // node.parentNode.insertAfter(UE.uNode.createText('    '),node); - // } - // node.parentNode.removeChild(node,node.innerText()) - // } - // } - //}() - - //,allHtmlEnabled:false //提交到后台的数据是否包含整个html字符串 - - //insertorderedlist - //有序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准 - //,'insertorderedlist':{ - // //自定的样式 - // 'num':'1,2,3...', - // 'num1':'1),2),3)...', - // 'num2':'(1),(2),(3)...', - // 'cn':'一,二,三....', - // 'cn1':'一),二),三)....', - // 'cn2':'(一),(二),(三)....', - // //系统自带 - // 'decimal' : '' , //'1,2,3...' - // 'lower-alpha' : '' , // 'a,b,c...' - // 'lower-roman' : '' , //'i,ii,iii...' - // 'upper-alpha' : '' , lang //'A,B,C' - // 'upper-roman' : '' //'I,II,III...' - //} - - //insertunorderedlist - //无序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准 - //,insertunorderedlist : { //自定的样式 - // 'dash' :'— 破折号', //-破折号 - // 'dot':' 。 小圆圈', //系统自带 - // 'circle' : '', // '○ 小圆圈' - // 'disc' : '', // '● 小圆点' - // 'square' : '' //'■ 小方块' - //} - //,listDefaultPaddingLeft : '30'//默认的左边缩进的基数倍 - //,listiconpath : 'http://bs.baidu.com/listicon/'//自定义标号的路径 - //,maxListLevel : 3 //限制可以tab的级数, 设置-1为不限制 - - //,autoTransWordToList:false //禁止word中粘贴进来的列表自动变成列表标签 - - //fontfamily - //字体设置 label留空支持多语言自动切换,若配置,则以配置值为准 - //,'fontfamily':[ - // { label:'',name:'songti',val:'宋体,SimSun'}, - // { label:'',name:'kaiti',val:'楷体,楷体_GB2312, SimKai'}, - // { label:'',name:'yahei',val:'微软雅黑,Microsoft YaHei'}, - // { label:'',name:'heiti',val:'黑体, SimHei'}, - // { label:'',name:'lishu',val:'隶书, SimLi'}, - // { label:'',name:'andaleMono',val:'andale mono'}, - // { label:'',name:'arial',val:'arial, helvetica,sans-serif'}, - // { label:'',name:'arialBlack',val:'arial black,avant garde'}, - // { label:'',name:'comicSansMs',val:'comic sans ms'}, - // { label:'',name:'impact',val:'impact,chicago'}, - // { label:'',name:'timesNewRoman',val:'times new roman'} - //] - - //fontsize - //字号 - //,'fontsize':[10, 11, 12, 14, 16, 18, 20, 24, 36] - - //paragraph - //段落格式 值留空时支持多语言自动识别,若配置,则以配置值为准 - //,'paragraph':{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''} - - //rowspacingtop - //段间距 值和显示的名字相同 - //,'rowspacingtop':['5', '10', '15', '20', '25'] - - //rowspacingBottom - //段间距 值和显示的名字相同 - //,'rowspacingbottom':['5', '10', '15', '20', '25'] - - //lineheight - //行内间距 值和显示的名字相同 - //,'lineheight':['1', '1.5','1.75','2', '3', '4', '5'] - - //customstyle - //自定义样式,不支持国际化,此处配置值即可最后显示值 - //block的元素是依据设置段落的逻辑设置的,inline的元素依据BIU的逻辑设置 - //尽量使用一些常用的标签 - //参数说明 - //tag 使用的标签名字 - //label 显示的名字也是用来标识不同类型的标识符,注意这个值每个要不同, - //style 添加的样式 - //每一个对象就是一个自定义的样式 - //,'customstyle':[ - // {tag:'h1', name:'tc', label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'}, - // {tag:'h1', name:'tl',label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;margin:0 0 10px 0;'}, - // {tag:'span',name:'im', label:'', style:'font-style:italic;font-weight:bold'}, - // {tag:'span',name:'hi', label:'', style:'font-style:italic;font-weight:bold;color:rgb(51, 153, 204)'} - //] - - //打开右键菜单功能 - //,enableContextMenu: true - //右键菜单的内容,可以参考plugins/contextmenu.js里边的默认菜单的例子,label留空支持国际化,否则以此配置为准 - //,contextMenu:[ - // { - // label:'', //显示的名称 - // cmdName:'selectall',//执行的command命令,当点击这个右键菜单时 - // //exec可选,有了exec就会在点击时执行这个function,优先级高于cmdName - // exec:function () { - // //this是当前编辑器的实例 - // //this.ui._dialogs['inserttableDialog'].open(); - // } - // } - //] - - //快捷菜单 - //,shortcutMenu:["fontfamily", "fontsize", "bold", "italic", "underline", "forecolor", "backcolor", "insertorderedlist", "insertunorderedlist"] - - //elementPathEnabled - //是否启用元素路径,默认是显示 - //,elementPathEnabled : true - - //wordCount - //,wordCount:true //是否开启字数统计 - //,maximumWords:10000 //允许的最大字符数 - //字数统计提示,{#count}代表当前字数,{#leave}代表还可以输入多少字符数,留空支持多语言自动切换,否则按此配置显示 - //,wordCountMsg:'' //当前已输入 {#count} 个字符,您还可以输入{#leave} 个字符 - //超出字数限制提示 留空支持多语言自动切换,否则按此配置显示 - //,wordOverFlowMsg:'' //你输入的字符个数已经超出最大允许值,服务器可能会拒绝保存! - - //tab - //点击tab键时移动的距离,tabSize倍数,tabNode什么字符做为单位 - //,tabSize:4 - //,tabNode:' ' - - //removeFormat - //清除格式时可以删除的标签和属性 - //removeForamtTags标签 - //,removeFormatTags:'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var' - //removeFormatAttributes属性 - //,removeFormatAttributes:'class,style,lang,width,height,align,hspace,valign' - - //undo - //可以最多回退的次数,默认20 - //,maxUndoCount:20 - //当输入的字符数超过该值时,保存一次现场 - //,maxInputCount:1 - - //autoHeightEnabled - // 是否自动长高,默认true - //,autoHeightEnabled:true - - //scaleEnabled - //是否可以拉伸长高,默认true(当开启时,自动长高失效) - //,scaleEnabled:false - //,minFrameWidth:800 //编辑器拖动时最小宽度,默认800 - //,minFrameHeight:220 //编辑器拖动时最小高度,默认220 - - //autoFloatEnabled - //是否保持toolbar的位置不动,默认true - //,autoFloatEnabled:true - //浮动时工具栏距离浏览器顶部的高度,用于某些具有固定头部的页面 - //,topOffset:30 - //编辑器底部距离工具栏高度(如果参数大于等于编辑器高度,则设置无效) - //,toolbarTopOffset:400 - - //设置远程图片是否抓取到本地保存 - //,catchRemoteImageEnable: true //设置是否抓取远程图片 - - //pageBreakTag - //分页标识符,默认是_ueditor_page_break_tag_ - //,pageBreakTag:'_ueditor_page_break_tag_' - - //autotypeset - //自动排版参数 - //,autotypeset: { - // mergeEmptyline: true, //合并空行 - // removeClass: true, //去掉冗余的class - // removeEmptyline: false, //去掉空行 - // textAlign:"left", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版 - // imageBlockLine: 'center', //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版 - // pasteFilter: false, //根据规则过滤没事粘贴进来的内容 - // clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号 - // clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体 - // removeEmptyNode: false, // 去掉空节点 - // //可以去掉的标签 - // removeTagNames: {标签名字:1}, - // indent: false, // 行首缩进 - // indentValue : '2em', //行首缩进的大小 - // bdc2sb: false, - // tobdc: false - //} - - //tableDragable - //表格是否可以拖拽 - //,tableDragable: true - - //sourceEditor - //源码的查看方式,codemirror 是代码高亮,textarea是文本框,默认是codemirror - //注意默认codemirror只能在ie8+和非ie中使用 - //,sourceEditor:"codemirror" - //如果sourceEditor是codemirror,还用配置一下两个参数 - //codeMirrorJsUrl js加载的路径,默认是 URL + "third-party/codemirror/codemirror.js" - //,codeMirrorJsUrl:URL + "third-party/codemirror/codemirror.js" - //codeMirrorCssUrl css加载的路径,默认是 URL + "third-party/codemirror/codemirror.css" - //,codeMirrorCssUrl:URL + "third-party/codemirror/codemirror.css" - //编辑器初始化完成后是否进入源码模式,默认为否。 - //,sourceEditorFirst:false - - //iframeUrlMap - //dialog内容的路径 ~会被替换成URL,垓属性一旦打开,将覆盖所有的dialog的默认路径 - //,iframeUrlMap:{ - // 'anchor':'~/dialogs/anchor/anchor.html', - //} - - //allowLinkProtocol 允许的链接地址,有这些前缀的链接地址不会自动添加http - //, allowLinkProtocols: ['http:', 'https:', '#', '/', 'ftp:', 'mailto:', 'tel:', 'git:', 'svn:'] - - //webAppKey 百度应用的APIkey,每个站长必须首先去百度官网注册一个key后方能正常使用app功能,注册介绍,http://app.baidu.com/static/cms/getapikey.html - //, webAppKey: "" - - //默认过滤规则相关配置项目 - //,disabledTableInTable:true //禁止表格嵌套 - //,allowDivTransToP:true //允许进入编辑器的div标签自动变成p标签 - //,rgb2Hex:true //默认产出的数据中的color自动从rgb格式变成16进制格式 - }; - - function getUEBasePath(docUrl, confUrl) { - return getBasePath( - docUrl || self.document.URL || self.location.href, - confUrl || getConfigFilePath() - ); - } - - function getConfigFilePath() { - var configPath = document.getElementsByTagName("script"); - - return configPath[configPath.length - 1].src; - } - - function getBasePath(docUrl, confUrl) { - var basePath = confUrl; - - if (/^(\/|\\\\)/.test(confUrl)) { - basePath = - /^.+?\w(\/|\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\/|\\\\)/, ""); - } else if (!/^[a-z]+:/i.test(confUrl)) { - docUrl = docUrl.split("#")[0].split("?")[0].replace(/[^\\\/]+$/, ""); - - basePath = docUrl + "" + confUrl; - } - - return optimizationPath(basePath); - } - - function optimizationPath(path) { - var protocol = /^[a-z]+:\/\//.exec(path)[0], - tmp = null, - res = []; - - path = path.replace(protocol, "").split("?")[0].split("#")[0]; - - path = path.replace(/\\/g, "/").split(/\//); - - path[path.length - 1] = ""; - - while (path.length) { - if ((tmp = path.shift()) === "..") { - res.pop(); - } else if (tmp !== ".") { - res.push(tmp); - } - } - - return protocol + res.join("/"); - } - - window.UE = { - getUEBasePath: getUEBasePath - }; -})(); diff --git a/public/ueditor/ueditor.parse.js b/public/ueditor/ueditor.parse.js deleted file mode 100644 index df31a8b..0000000 --- a/public/ueditor/ueditor.parse.js +++ /dev/null @@ -1,1230 +0,0 @@ -/*! - * ueditor parse - * version: 2.0.0 - * build: Fri Aug 11 2023 10:42:30 GMT+0800 (中国标准时间) - */ - -(function(){ - -(function() { - UE = window.UE || {}; - var isIE = !!window.ActiveXObject; - //定义utils工具 - var utils = { - removeLastbs: function(url) { - return url.replace(/\/$/, ""); - }, - extend: function(t, s) { - var a = arguments, - notCover = this.isBoolean(a[a.length - 1]) ? a[a.length - 1] : false, - len = this.isBoolean(a[a.length - 1]) ? a.length - 1 : a.length; - for (var i = 1; i < len; i++) { - var x = a[i]; - for (var k in x) { - if (!notCover || !t.hasOwnProperty(k)) { - t[k] = x[k]; - } - } - } - return t; - }, - isIE: isIE, - cssRule: isIE - ? function(key, style, doc) { - var indexList, index; - doc = doc || document; - if (doc.indexList) { - indexList = doc.indexList; - } else { - indexList = doc.indexList = {}; - } - var sheetStyle; - if (!indexList[key]) { - if (style === undefined) { - return ""; - } - sheetStyle = doc.createStyleSheet( - "", - (index = doc.styleSheets.length) - ); - indexList[key] = index; - } else { - sheetStyle = doc.styleSheets[indexList[key]]; - } - if (style === undefined) { - return sheetStyle.cssText; - } - sheetStyle.cssText = sheetStyle.cssText + "\n" + (style || ""); - } - : function(key, style, doc) { - doc = doc || document; - var head = doc.getElementsByTagName("head")[0], - node; - if (!(node = doc.getElementById(key))) { - if (style === undefined) { - return ""; - } - node = doc.createElement("style"); - node.id = key; - head.appendChild(node); - } - if (style === undefined) { - return node.innerHTML; - } - if (style !== "") { - node.innerHTML = node.innerHTML + "\n" + style; - } else { - head.removeChild(node); - } - }, - domReady: function(onready) { - var doc = window.document; - if (doc.readyState === "complete") { - onready(); - } else { - if (isIE) { - (function() { - if (doc.isReady) return; - try { - doc.documentElement.doScroll("left"); - } catch (error) { - setTimeout(arguments.callee, 0); - return; - } - onready(); - })(); - window.attachEvent("onload", function() { - onready(); - }); - } else { - doc.addEventListener( - "DOMContentLoaded", - function() { - doc.removeEventListener( - "DOMContentLoaded", - arguments.callee, - false - ); - onready(); - }, - false - ); - window.addEventListener( - "load", - function() { - onready(); - }, - false - ); - } - } - }, - each: function(obj, iterator, context) { - if (obj == null) return; - if (obj.length === +obj.length) { - for (var i = 0, l = obj.length; i < l; i++) { - if (iterator.call(context, obj[i], i, obj) === false) return false; - } - } else { - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - if (iterator.call(context, obj[key], key, obj) === false) - return false; - } - } - } - }, - inArray: function(arr, item) { - var index = -1; - this.each(arr, function(v, i) { - if (v === item) { - index = i; - return false; - } - }); - return index; - }, - pushItem: function(arr, item) { - if (this.inArray(arr, item) == -1) { - arr.push(item); - } - }, - trim: function(str) { - return str.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, ""); - }, - indexOf: function(array, item, start) { - var index = -1; - start = this.isNumber(start) ? start : 0; - this.each(array, function(v, i) { - if (i >= start && v === item) { - index = i; - return false; - } - }); - return index; - }, - hasClass: function(element, className) { - className = className - .replace(/(^[ ]+)|([ ]+$)/g, "") - .replace(/[ ]{2,}/g, " ") - .split(" "); - for (var i = 0, ci, cls = element.className; (ci = className[i++]); ) { - if (!new RegExp("\\b" + ci + "\\b", "i").test(cls)) { - return false; - } - } - return i - 1 == className.length; - }, - addClass: function(elm, classNames) { - if (!elm) return; - classNames = this.trim(classNames).replace(/[ ]{2,}/g, " ").split(" "); - for (var i = 0, ci, cls = elm.className; (ci = classNames[i++]); ) { - if (!new RegExp("\\b" + ci + "\\b").test(cls)) { - cls += " " + ci; - } - } - elm.className = utils.trim(cls); - }, - removeClass: function(elm, classNames) { - classNames = this.isArray(classNames) - ? classNames - : this.trim(classNames).replace(/[ ]{2,}/g, " ").split(" "); - for (var i = 0, ci, cls = elm.className; (ci = classNames[i++]); ) { - cls = cls.replace(new RegExp("\\b" + ci + "\\b"), ""); - } - cls = this.trim(cls).replace(/[ ]{2,}/g, " "); - elm.className = cls; - !cls && elm.removeAttribute("className"); - }, - on: function(element, type, handler) { - var types = this.isArray(type) ? type : type.split(/\s+/), - k = types.length; - if (k) - while (k--) { - type = types[k]; - if (element.addEventListener) { - element.addEventListener(type, handler, false); - } else { - if (!handler._d) { - handler._d = { - els: [] - }; - } - var key = type + handler.toString(), - index = utils.indexOf(handler._d.els, element); - if (!handler._d[key] || index == -1) { - if (index == -1) { - handler._d.els.push(element); - } - if (!handler._d[key]) { - handler._d[key] = function(evt) { - return handler.call(evt.srcElement, evt || window.event); - }; - } - - element.attachEvent("on" + type, handler._d[key]); - } - } - } - element = null; - }, - off: function(element, type, handler) { - var types = this.isArray(type) ? type : type.split(/\s+/), - k = types.length; - if (k) - while (k--) { - type = types[k]; - if (element.removeEventListener) { - element.removeEventListener(type, handler, false); - } else { - var key = type + handler.toString(); - try { - element.detachEvent( - "on" + type, - handler._d ? handler._d[key] : handler - ); - } catch (e) {} - if (handler._d && handler._d[key]) { - var index = utils.indexOf(handler._d.els, element); - if (index != -1) { - handler._d.els.splice(index, 1); - } - handler._d.els.length == 0 && delete handler._d[key]; - } - } - } - }, - loadFile: (function() { - var tmpList = []; - function getItem(doc, obj) { - try { - for (var i = 0, ci; (ci = tmpList[i++]); ) { - if (ci.doc === doc && ci.url == (obj.src || obj.href)) { - return ci; - } - } - } catch (e) { - return null; - } - } - return function(doc, obj, fn) { - var item = getItem(doc, obj); - if (item) { - if (item.ready) { - fn && fn(); - } else { - item.funs.push(fn); - } - return; - } - tmpList.push({ - doc: doc, - url: obj.src || obj.href, - funs: [fn] - }); - if (!doc.body) { - var html = []; - for (var p in obj) { - if (p == "tag") continue; - html.push(p + '="' + obj[p] + '"'); - } - doc.write( - "<" + obj.tag + " " + html.join(" ") + " >" - ); - return; - } - if (obj.id && doc.getElementById(obj.id)) { - return; - } - var element = doc.createElement(obj.tag); - delete obj.tag; - for (var p in obj) { - element.setAttribute(p, obj[p]); - } - element.onload = element.onreadystatechange = function() { - if (!this.readyState || /loaded|complete/.test(this.readyState)) { - item = getItem(doc, obj); - if (item.funs.length > 0) { - item.ready = 1; - for (var fi; (fi = item.funs.pop()); ) { - fi(); - } - } - element.onload = element.onreadystatechange = null; - } - }; - element.onerror = function() { - throw Error( - "The load " + (obj.href || obj.src) + " fails,check the url" - ); - }; - doc.getElementsByTagName("head")[0].appendChild(element); - }; - })() - }; - utils.each( - ["String", "Function", "Array", "Number", "RegExp", "Object", "Boolean"], - function(v) { - utils["is" + v] = function(obj) { - return Object.prototype.toString.apply(obj) == "[object " + v + "]"; - }; - } - ); - var parselist = {}; - UE.parse = { - register: function(parseName, fn) { - parselist[parseName] = fn; - }, - load: function(opt) { - utils.each(parselist, function(v) { - v.call(opt, utils); - }); - } - }; - uParse = function(selector, opt) { - utils.domReady(function() { - var contents; - if (document.querySelectorAll) { - contents = document.querySelectorAll(selector); - } else { - if (/^#/.test(selector)) { - contents = [document.getElementById(selector.replace(/^#/, ""))]; - } else if (/^\./.test(selector)) { - var contents = []; - utils.each(document.getElementsByTagName("*"), function(node) { - if ( - node.className && - new RegExp("\\b" + selector.replace(/^\./, "") + "\\b", "i").test( - node.className - ) - ) { - contents.push(node); - } - }); - } else { - contents = document.getElementsByTagName(selector); - } - } - utils.each(contents, function(v) { - UE.parse.load(utils.extend({ root: v, selector: selector }, opt)); - }); - }); - }; -})(); - -UE.parse.register("insertcode", function(utils) { - var pres = this.root.getElementsByTagName("pre"); - if (pres.length) { - if (typeof XRegExp == "undefined") { - var jsurl, cssurl; - if (this.rootPath !== undefined) { - jsurl = - utils.removeLastbs(this.rootPath) + - "/third-party/SyntaxHighlighter/shCore.js"; - cssurl = - utils.removeLastbs(this.rootPath) + - "/third-party/SyntaxHighlighter/shCoreDefault.css"; - } else { - jsurl = this.highlightJsUrl; - cssurl = this.highlightCssUrl; - } - utils.loadFile(document, { - id: "syntaxhighlighter_css", - tag: "link", - rel: "stylesheet", - type: "text/css", - href: cssurl - }); - utils.loadFile( - document, - { - id: "syntaxhighlighter_js", - src: jsurl, - tag: "script", - type: "text/javascript", - defer: "defer" - }, - function() { - utils.each(pres, function(pi) { - if (pi && /brush/i.test(pi.className)) { - SyntaxHighlighter.highlight(pi); - } - }); - } - ); - } else { - utils.each(pres, function(pi) { - if (pi && /brush/i.test(pi.className)) { - SyntaxHighlighter.highlight(pi); - } - }); - } - } -}); - -UE.parse.register("table", function(utils) { - var me = this, - root = this.root, - tables = root.getElementsByTagName("table"); - if (tables.length) { - var selector = this.selector; - //追加默认的表格样式 - utils.cssRule( - "table", - selector + - " table.noBorderTable td," + - selector + - " table.noBorderTable th," + - selector + - " table.noBorderTable caption{border:1px dashed #ddd !important}" + - selector + - " table.sortEnabled tr.firstRow th," + - selector + - " table.sortEnabled tr.firstRow td{padding-right:20px; background-repeat: no-repeat;" + - "background-position: center right; background-image:url(" + - this.rootPath + - "themes/default/images/sortable.png);}" + - selector + - " table.sortEnabled tr.firstRow th:hover," + - selector + - " table.sortEnabled tr.firstRow td:hover{background-color: #EEE;}" + - selector + - " table{margin-bottom:10px;border-collapse:collapse;display:table;}" + - selector + - " td," + - selector + - " th{padding: 5px 10px;border: 1px solid #DDD;}" + - selector + - " caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}" + - selector + - " th{border-top:1px solid #BBB;background:#F7F7F7;}" + - selector + - " table tr.firstRow th{border-top:2px solid #BBB;background:#F7F7F7;}" + - selector + - " tr.ue-table-interlace-color-single td{ background: #fcfcfc; }" + - selector + - " tr.ue-table-interlace-color-double td{ background: #f7faff; }" + - selector + - " td p{margin:0;padding:0;width:auto;height:auto;}", - document - ); - //填充空的单元格 - - utils.each("td th caption".split(" "), function(tag) { - var cells = root.getElementsByTagName(tag); - cells.length && - utils.each(cells, function(node) { - if (!node.firstChild) { - node.innerHTML = " "; - } - }); - }); - - //表格可排序 - var tables = root.getElementsByTagName("table"); - utils.each(tables, function(table) { - if (/\bsortEnabled\b/.test(table.className)) { - utils.on(table, "click", function(e) { - var target = e.target || e.srcElement, - cell = findParentByTagName(target, ["td", "th"]); - var table = findParentByTagName(target, "table"), - colIndex = utils.indexOf(table.rows[0].cells, cell), - sortType = table.getAttribute("data-sort-type"); - if (colIndex != -1) { - sortTable(table, colIndex, me.tableSortCompareFn || sortType); - updateTable(table); - } - }); - } - }); - - //按照标签名查找父节点 - function findParentByTagName(target, tagNames) { - var i, - current = target; - tagNames = utils.isArray(tagNames) ? tagNames : [tagNames]; - while (current) { - for (i = 0; i < tagNames.length; i++) { - if (current.tagName == tagNames[i].toUpperCase()) return current; - } - current = current.parentNode; - } - return null; - } - //表格排序 - function sortTable(table, sortByCellIndex, compareFn) { - var rows = table.rows, - trArray = [], - flag = rows[0].cells[0].tagName === "TH", - lastRowIndex = 0; - - for (var i = 0, len = rows.length; i < len; i++) { - trArray[i] = rows[i]; - } - - var Fn = { - reversecurrent: function(td1, td2) { - return 1; - }, - orderbyasc: function(td1, td2) { - var value1 = td1.innerText || td1.textContent, - value2 = td2.innerText || td2.textContent; - return value1.localeCompare(value2); - }, - reversebyasc: function(td1, td2) { - var value1 = td1.innerHTML, - value2 = td2.innerHTML; - return value2.localeCompare(value1); - }, - orderbynum: function(td1, td2) { - var value1 = td1[utils.isIE ? "innerText" : "textContent"].match( - /\d+/ - ), - value2 = td2[utils.isIE ? "innerText" : "textContent"].match(/\d+/); - if (value1) value1 = +value1[0]; - if (value2) value2 = +value2[0]; - return (value1 || 0) - (value2 || 0); - }, - reversebynum: function(td1, td2) { - var value1 = td1[utils.isIE ? "innerText" : "textContent"].match( - /\d+/ - ), - value2 = td2[utils.isIE ? "innerText" : "textContent"].match(/\d+/); - if (value1) value1 = +value1[0]; - if (value2) value2 = +value2[0]; - return (value2 || 0) - (value1 || 0); - } - }; - - //对表格设置排序的标记data-sort-type - table.setAttribute( - "data-sort-type", - compareFn && typeof compareFn === "string" && Fn[compareFn] - ? compareFn - : "" - ); - - //th不参与排序 - flag && trArray.splice(0, 1); - trArray = sort(trArray, function(tr1, tr2) { - var result; - if (compareFn && typeof compareFn === "function") { - result = compareFn.call( - this, - tr1.cells[sortByCellIndex], - tr2.cells[sortByCellIndex] - ); - } else if (compareFn && typeof compareFn === "number") { - result = 1; - } else if ( - compareFn && - typeof compareFn === "string" && - Fn[compareFn] - ) { - result = Fn[compareFn].call( - this, - tr1.cells[sortByCellIndex], - tr2.cells[sortByCellIndex] - ); - } else { - result = Fn["orderbyasc"].call( - this, - tr1.cells[sortByCellIndex], - tr2.cells[sortByCellIndex] - ); - } - return result; - }); - var fragment = table.ownerDocument.createDocumentFragment(); - for (var j = 0, len = trArray.length; j < len; j++) { - fragment.appendChild(trArray[j]); - } - var tbody = table.getElementsByTagName("tbody")[0]; - if (!lastRowIndex) { - tbody.appendChild(fragment); - } else { - tbody.insertBefore( - fragment, - rows[lastRowIndex - range.endRowIndex + range.beginRowIndex - 1] - ); - } - } - //冒泡排序 - function sort(array, compareFn) { - compareFn = - compareFn || - function(item1, item2) { - return item1.localeCompare(item2); - }; - for (var i = 0, len = array.length; i < len; i++) { - for (var j = i, length = array.length; j < length; j++) { - if (compareFn(array[i], array[j]) > 0) { - var t = array[i]; - array[i] = array[j]; - array[j] = t; - } - } - } - return array; - } - //更新表格 - function updateTable(table) { - //给第一行设置firstRow的样式名称,在排序图标的样式上使用到 - if (!utils.hasClass(table.rows[0], "firstRow")) { - for (var i = 1; i < table.rows.length; i++) { - utils.removeClass(table.rows[i], "firstRow"); - } - utils.addClass(table.rows[0], "firstRow"); - } - } - } -}); - -UE.parse.register("charts", function(utils) { - utils.cssRule( - "chartsContainerHeight", - ".edui-chart-container { height:" + - (this.chartContainerHeight || 300) + - "px}" - ); - var resourceRoot = this.rootPath, - containers = this.root, - sources = null; - - //不存在指定的根路径, 则直接退出 - if (!resourceRoot) { - return; - } - - if ((sources = parseSources())) { - loadResources(); - } - - function parseSources() { - if (!containers) { - return null; - } - - return extractChartData(containers); - } - - /** - * 提取数据 - */ - function extractChartData(rootNode) { - var data = [], - tables = rootNode.getElementsByTagName("table"); - - for (var i = 0, tableNode; (tableNode = tables[i]); i++) { - if (tableNode.getAttribute("data-chart") !== null) { - data.push(formatData(tableNode)); - } - } - - return data.length ? data : null; - } - - function formatData(tableNode) { - var meta = tableNode.getAttribute("data-chart"), - metaConfig = {}, - data = []; - - //提取table数据 - for (var i = 0, row; (row = tableNode.rows[i]); i++) { - var rowData = []; - - for (var j = 0, cell; (cell = row.cells[j]); j++) { - var value = cell.innerText || cell.textContent || ""; - rowData.push(cell.tagName == "TH" ? value : value | 0); - } - - data.push(rowData); - } - - //解析元信息 - meta = meta.split(";"); - for (var i = 0, metaData; (metaData = meta[i]); i++) { - metaData = metaData.split(":"); - metaConfig[metaData[0]] = metaData[1]; - } - - return { - table: tableNode, - meta: metaConfig, - data: data - }; - } - - //加载资源 - function loadResources() { - loadJQuery(); - } - - function loadJQuery() { - //不存在jquery, 则加载jquery - if (!window.jQuery) { - utils.loadFile( - document, - { - src: resourceRoot + "/third-party/jquery-1.10.2.min.js", - tag: "script", - type: "text/javascript", - defer: "defer" - }, - function() { - loadHighcharts(); - } - ); - } else { - loadHighcharts(); - } - } - - function loadHighcharts() { - //不存在Highcharts, 则加载Highcharts - if (!window.Highcharts) { - utils.loadFile( - document, - { - src: resourceRoot + "/third-party/highcharts/highcharts.js", - tag: "script", - type: "text/javascript", - defer: "defer" - }, - function() { - loadTypeConfig(); - } - ); - } else { - loadTypeConfig(); - } - } - - //加载图表差异化配置文件 - function loadTypeConfig() { - utils.loadFile( - document, - { - src: resourceRoot + "/dialogs/charts/chart.config.js", - tag: "script", - type: "text/javascript", - defer: "defer" - }, - function() { - render(); - } - ); - } - - //渲染图表 - function render() { - var config = null, - chartConfig = null, - container = null; - - for (var i = 0, len = sources.length; i < len; i++) { - config = sources[i]; - - chartConfig = analysisConfig(config); - - container = createContainer(config.table); - - renderChart(container, typeConfig[config.meta.chartType], chartConfig); - } - } - - /** - * 渲染图表 - * @param container 图表容器节点对象 - * @param typeConfig 图表类型配置 - * @param config 图表通用配置 - * */ - function renderChart(container, typeConfig, config) { - $(container).highcharts( - $.extend({}, typeConfig, { - credits: { - enabled: false - }, - exporting: { - enabled: false - }, - title: { - text: config.title, - x: -20 //center - }, - subtitle: { - text: config.subTitle, - x: -20 - }, - xAxis: { - title: { - text: config.xTitle - }, - categories: config.categories - }, - yAxis: { - title: { - text: config.yTitle - }, - plotLines: [ - { - value: 0, - width: 1, - color: "#808080" - } - ] - }, - tooltip: { - enabled: true, - valueSuffix: config.suffix - }, - legend: { - layout: "vertical", - align: "right", - verticalAlign: "middle", - borderWidth: 1 - }, - series: config.series - }) - ); - } - - /** - * 创建图表的容器 - * 新创建的容器会替换掉对应的table对象 - * */ - function createContainer(tableNode) { - var container = document.createElement("div"); - container.className = "edui-chart-container"; - - tableNode.parentNode.replaceChild(container, tableNode); - - return container; - } - - //根据config解析出正确的类别和图表数据信息 - function analysisConfig(config) { - var series = [], - //数据类别 - categories = [], - result = [], - data = config.data, - meta = config.meta; - - //数据对齐方式为相反的方式, 需要反转数据 - if (meta.dataFormat != "1") { - for (var i = 0, len = data.length; i < len; i++) { - for (var j = 0, jlen = data[i].length; j < jlen; j++) { - if (!result[j]) { - result[j] = []; - } - - result[j][i] = data[i][j]; - } - } - - data = result; - } - - result = {}; - - //普通图表 - if (meta.chartType != typeConfig.length - 1) { - categories = data[0].slice(1); - - for (var i = 1, curData; (curData = data[i]); i++) { - series.push({ - name: curData[0], - data: curData.slice(1) - }); - } - - result.series = series; - result.categories = categories; - result.title = meta.title; - result.subTitle = meta.subTitle; - result.xTitle = meta.xTitle; - result.yTitle = meta.yTitle; - result.suffix = meta.suffix; - } else { - var curData = []; - - for (var i = 1, len = data[0].length; i < len; i++) { - curData.push([data[0][i], data[1][i] | 0]); - } - - //饼图 - series[0] = { - type: "pie", - name: meta.tip, - data: curData - }; - - result.series = series; - result.title = meta.title; - result.suffix = meta.suffix; - } - - return result; - } -}); - -UE.parse.register("background", function(utils) { - var me = this, - root = me.root, - p = root.getElementsByTagName("p"), - styles; - - for (var i = 0, ci; (ci = p[i++]); ) { - styles = ci.getAttribute("data-background"); - if (styles) { - ci.parentNode.removeChild(ci); - } - } - - //追加默认的表格样式 - styles && - utils.cssRule( - "ueditor_background", - me.selector + "{" + styles + "}", - document - ); -}); - -UE.parse.register("list", function(utils) { - var customCss = [], - customStyle = { - cn: "cn-1-", - cn1: "cn-2-", - cn2: "cn-3-", - num: "num-1-", - num1: "num-2-", - num2: "num-3-", - dash: "dash", - dot: "dot" - }; - - utils.extend(this, { - liiconpath: "http://bs.baidu.com/listicon/", - listDefaultPaddingLeft: "20" - }); - - var root = this.root, - ols = root.getElementsByTagName("ol"), - uls = root.getElementsByTagName("ul"), - selector = this.selector; - - if (ols.length) { - applyStyle.call(this, ols); - } - - if (uls.length) { - applyStyle.call(this, uls); - } - - if (ols.length || uls.length) { - customCss.push(selector + " .list-paddingleft-1{padding-left:0}"); - customCss.push( - selector + - " .list-paddingleft-2{padding-left:" + - this.listDefaultPaddingLeft + - "px}" - ); - customCss.push( - selector + - " .list-paddingleft-3{padding-left:" + - this.listDefaultPaddingLeft * 2 + - "px}" - ); - - utils.cssRule( - "list", - selector + - " ol," + - selector + - " ul{margin:0;padding:0;}\n" + - selector + - " li{clear:both;}\n" + - customCss.join("\n"), - document - ); - } - function applyStyle(nodes) { - var T = this; - utils.each(nodes, function(list) { - if (list.className && /custom_/i.test(list.className)) { - var listStyle = list.className.match(/custom_(\w+)/)[1]; - if (listStyle == "dash" || listStyle == "dot") { - utils.pushItem( - customCss, - selector + - " li.list-" + - customStyle[listStyle] + - "{background-image:url(" + - T.liiconpath + - customStyle[listStyle] + - ".gif)}" - ); - utils.pushItem( - customCss, - selector + - " ul.custom_" + - listStyle + - "{list-style:none;} " + - selector + - " ul.custom_" + - listStyle + - " li{background-position:0 3px;background-repeat:no-repeat}" - ); - } else { - var index = 1; - utils.each(list.childNodes, function(li) { - if (li.tagName == "LI") { - utils.pushItem( - customCss, - selector + - " li.list-" + - customStyle[listStyle] + - index + - "{background-image:url(" + - T.liiconpath + - "list-" + - customStyle[listStyle] + - index + - ".gif)}" - ); - index++; - } - }); - utils.pushItem( - customCss, - selector + - " ol.custom_" + - listStyle + - "{list-style:none;}" + - selector + - " ol.custom_" + - listStyle + - " li{background-position:0 3px;background-repeat:no-repeat}" - ); - } - switch (listStyle) { - case "cn": - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-1{padding-left:25px}" - ); - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-2{padding-left:40px}" - ); - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-3{padding-left:55px}" - ); - break; - case "cn1": - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-1{padding-left:30px}" - ); - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-2{padding-left:40px}" - ); - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-3{padding-left:55px}" - ); - break; - case "cn2": - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-1{padding-left:40px}" - ); - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-2{padding-left:55px}" - ); - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-3{padding-left:68px}" - ); - break; - case "num": - case "num1": - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-1{padding-left:25px}" - ); - break; - case "num2": - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-1{padding-left:35px}" - ); - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft-2{padding-left:40px}" - ); - break; - case "dash": - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft{padding-left:35px}" - ); - break; - case "dot": - utils.pushItem( - customCss, - selector + - " li.list-" + - listStyle + - "-paddingleft{padding-left:20px}" - ); - } - } - }); - } -}); - -UE.parse.register("vedio", function(utils) { - var video = this.root.getElementsByTagName("video"), - audio = this.root.getElementsByTagName("audio"); - - document.createElement("video"); - document.createElement("audio"); - if (video.length || audio.length) { - var sourcePath = utils.removeLastbs(this.rootPath), - jsurl = sourcePath + "/third-party/video-js/video.js", - cssurl = sourcePath + "/third-party/video-js/video-js.min.css", - swfUrl = sourcePath + "/third-party/video-js/video-js.swf"; - - if (window.videojs) { - videojs.autoSetup(); - } else { - utils.loadFile(document, { - id: "video_css", - tag: "link", - rel: "stylesheet", - type: "text/css", - href: cssurl - }); - utils.loadFile( - document, - { - id: "video_js", - src: jsurl, - tag: "script", - type: "text/javascript" - }, - function() { - videojs.options.flash.swf = swfUrl; - videojs.autoSetup(); - } - ); - } - } -}); - - -})(); diff --git a/public/ueditor/ueditor.parse.min.js b/public/ueditor/ueditor.parse.min.js deleted file mode 100644 index 9ca59fb..0000000 --- a/public/ueditor/ueditor.parse.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * ueditor parse - * version: 2.0.0 - * build: Fri Aug 11 2023 10:42:33 GMT+0800 (中国标准时间) - */!function(){!function(){UE=window.UE||{};var a=!!window.ActiveXObject,b={removeLastbs:function(a){return a.replace(/\/$/,"")},extend:function(a,b){for(var c=arguments,d=!!this.isBoolean(c[c.length-1])&&c[c.length-1],e=this.isBoolean(c[c.length-1])?c.length-1:c.length,f=1;f=c&&a===b)return d=e,!1}),d},hasClass:function(a,b){b=b.replace(/(^[ ]+)|([ ]+$)/g,"").replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)if(!new RegExp("\\b"+c+"\\b","i").test(e))return!1;return d-1==b.length},addClass:function(a,c){if(a){c=this.trim(c).replace(/[ ]{2,}/g," ").split(" ");for(var d,e=0,f=a.className;d=c[e++];)new RegExp("\\b"+d+"\\b").test(f)||(f+=" "+d);a.className=b.trim(f)}},removeClass:function(a,b){b=this.isArray(b)?b:this.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)e=e.replace(new RegExp("\\b"+c+"\\b"),"");e=this.trim(e).replace(/[ ]{2,}/g," "),a.className=e,!e&&a.removeAttribute("className")},on:function(a,c,d){var e=this.isArray(c)?c:c.split(/\s+/),f=e.length;if(f)for(;f--;)if(c=e[f],a.addEventListener)a.addEventListener(c,d,!1);else{d._d||(d._d={els:[]});var g=c+d.toString(),h=b.indexOf(d._d.els,a);d._d[g]&&h!=-1||(h==-1&&d._d.els.push(a),d._d[g]||(d._d[g]=function(a){return d.call(a.srcElement,a||window.event)}),a.attachEvent("on"+c,d._d[g]))}a=null},off:function(a,c,d){var e=this.isArray(c)?c:c.split(/\s+/),f=e.length;if(f)for(;f--;)if(c=e[f],a.removeEventListener)a.removeEventListener(c,d,!1);else{var g=c+d.toString();try{a.detachEvent("on"+c,d._d?d._d[g]:d)}catch(h){}if(d._d&&d._d[g]){var i=b.indexOf(d._d.els,a);i!=-1&&d._d.els.splice(i,1),0==d._d.els.length&&delete d._d[g]}}},loadFile:function(){function a(a,c){try{for(var d,e=0;d=b[e++];)if(d.doc===a&&d.url==(c.src||c.href))return d}catch(f){return null}}var b=[];return function(c,d,e){var f=a(c,d);if(f)return void(f.ready?e&&e():f.funs.push(e));if(b.push({doc:c,url:d.src||d.href,funs:[e]}),!c.body){var g=[];for(var h in d)"tag"!=h&&g.push(h+'="'+d[h]+'"');return void c.write("<"+d.tag+" "+g.join(" ")+" >")}if(!d.id||!c.getElementById(d.id)){var i=c.createElement(d.tag);delete d.tag;for(var h in d)i.setAttribute(h,d[h]);i.onload=i.onreadystatechange=function(){if(!this.readyState||/loaded|complete/.test(this.readyState)){if(f=a(c,d),f.funs.length>0){f.ready=1;for(var b;b=f.funs.pop();)b()}i.onload=i.onreadystatechange=null}},i.onerror=function(){throw Error("The load "+(d.href||d.src)+" fails,check the url")},c.getElementsByTagName("head")[0].appendChild(i)}}}()};b.each(["String","Function","Array","Number","RegExp","Object","Boolean"],function(a){b["is"+a]=function(b){return Object.prototype.toString.apply(b)=="[object "+a+"]"}});var c={};UE.parse={register:function(a,b){c[a]=b},load:function(a){b.each(c,function(c){c.call(a,b)})}},uParse=function(a,c){b.domReady(function(){var d;if(document.querySelectorAll)d=document.querySelectorAll(a);else if(/^#/.test(a))d=[document.getElementById(a.replace(/^#/,""))];else if(/^\./.test(a)){var d=[];b.each(document.getElementsByTagName("*"),function(b){b.className&&new RegExp("\\b"+a.replace(/^\./,"")+"\\b","i").test(b.className)&&d.push(b)})}else d=document.getElementsByTagName(a);b.each(d,function(d){UE.parse.load(b.extend({root:d,selector:a},c))})})}}(),UE.parse.register("insertcode",function(a){var b=this.root.getElementsByTagName("pre");if(b.length)if("undefined"==typeof XRegExp){var c,d;void 0!==this.rootPath?(c=a.removeLastbs(this.rootPath)+"/third-party/SyntaxHighlighter/shCore.js",d=a.removeLastbs(this.rootPath)+"/third-party/SyntaxHighlighter/shCoreDefault.css"):(c=this.highlightJsUrl,d=this.highlightCssUrl),a.loadFile(document,{id:"syntaxhighlighter_css",tag:"link",rel:"stylesheet",type:"text/css",href:d}),a.loadFile(document,{id:"syntaxhighlighter_js",src:c,tag:"script",type:"text/javascript",defer:"defer"},function(){a.each(b,function(a){a&&/brush/i.test(a.className)&&SyntaxHighlighter.highlight(a)})})}else a.each(b,function(a){a&&/brush/i.test(a.className)&&SyntaxHighlighter.highlight(a)})}),UE.parse.register("table",function(a){function b(b,c){var d,e=b;for(c=a.isArray(c)?c:[c];e;){for(d=0;d0){var g=a[c];a[c]=a[e],a[e]=g}return a}function e(b){if(!a.hasClass(b.rows[0],"firstRow")){for(var c=1;cx$D$h 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
  • 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%0A<_6j{w9i&X!aRcN54jW)fXIrE(i`N`@2J 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�C^lZ2$y8AV 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⁢RFDW8XYjzeCK|OO3&`^E1EWqIdqkzOH73B& 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 z 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ͿBEvpSh(6WLl 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ඏYfLN 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

    -ZnNu?#)x^pvN^a`Y6Ro3A7y6A~dZPs4b5`p(}J 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΅LyAnVhHFHD7NPtO2=Urj>KwFK&g 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⁡zpK_V_jlSs|kuAE8H~A)-N@LDzPD$PB#F>y#mtVQ-b<$&H z!q%T;uEb2x;MmP)u7Oz7xWp7^fc~`isIu)nch(W+h`K0izom_{k zLv__i~f~HC8MXQC{H zB|?+LoVX+tKRog+go~d?;|^T{_M!M7Nm`n;LI8Nd($fGSoL`a5t-FuVo_)Ltpk;J7 zYYCqEL1>x)fh^*V@Ju7bk#6L*Y0|(3rx17#n3t5LqZ?P^5|^1XBTsJ~3*H z=ou*}lG(_ec_9(8j17)-LO2msaCEX*A!D6i^PQG8aFGQgfR^wuhX*alcB7rly8>tg zqrk4v%G#h!Y`MF!d_@?o>r44ci*TR=FCk+>%m~EokXAmz^z;Ue&6{In(|)Us57+ZC zz#K{;r-9c%i{qP{35fWT1g|WNr{m|(Um$x{&AC4Ni5MPK5vgA57E}jV?bJNi>VJ1F}n&FBJfip)rO* zfVc;7LaC;7A`ApPNrF`P#0ESw%z2t=DM=K2Fmx6v4>f>a`|6xRktQ0-Bj0Brjj~EP z8T=UhkDkrXp8xLoQkpkZs<$bSdLf^*y{ak(6!W%Zz(R36LKiLlVn0uw4&tI1C;f zpWaaMr)QI|HlwBbyqI8C<_{izyVDttx1Tsk6%$7?=_XX4A+;xp$Vrtt+g&$uHl(6E z@_j{ggslPH8wm9H;ch%!(f<`dM@p*2d zc$SD#Qo}TfjSdnHUR2A2Te2`nJI95->D-|hSmy*qg=bh7@?e6RJD=$Fz^S@pc#@QW zwdUMOM{Mf|u}C@^4ZvqD*V_xe_`!$^JiZnSNuWX6zReL_(->XI5A}rd08YEwveea5 zaMjA?NrEOkk^2kDZLUhb5B_EOdX?H&unW9}YjGoio#$49U&5np_8CoIb-b05hICL) z_IndF6@*c1-fAmMVq6c};W*=n+d2Ay3`2T3US^la@@PQ*Oz_jVK4ks*-v>5mwCL=y z5nElGK!0^THapJVnF|aJcR0FPul)2u8-thwD?GGucFXe;Y$lW@{gb`H38b_nY!3D&+@(y^BvM z^B^snWm)E(G=)>ltt{>My+@>9O2=|UhjGj;PxQ*H^sq#)(QXy82ma`Lq`+^70*?ad z-%eXU*7Se^S@5{VV8UU($GO%=cIiBUZYF!K?Q(OenicY}mJvHeKFC(KlYVtA;$4wO@48h`~NO2;GLhbBJ?=@HiLcwrmK^L&0f zny3nDsew)$QGLa)*%l9pAwpZG!Z1VEGm#+R>lRn*;}Ky zF4=6!+)<CUW)XI>EDJ8I?Tv#GP2RnmG zyfBBXLwHQqEq0h2)`pC>TaC#Ao2x54SM`W$koEcqtD)WqwY1r6Aqa67yOn0|*4NjF zlaVAo}WI!C@deGM6H{KrD|$G4|kKzWICUM)OT;b zlN0i;fU;@nM&E`q+WKG%QM4V8$ET+=w5mf$MWVb)zz<6sMJ|mtUtVEeh*y~tc zFHugGvPTe)0Rfn_i5(T*AMQW~iqjN`$xlY}DY6*&0uhRK%^~z;GUSkKy@ENZEZhm( zB4vR@h@?T1f#Uqbd!)};byb2Thw@)^P*R^--0*o--+w^Z6wx#FQTU^?AB1Q}qth9> zjbMLybwTaV=BM_9pTK2PK=rW`j!cP;Vfk>7n!IunBc&?K^i7

    hc%Ocn-IdjB_lh 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 gdss7T#f@#W()+y*^^MK* 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

    { zb@iyL$&uo;-j0`01~I^V{8n)`t(@L8ZX7 zdfVB$B`8E*mFzXYAPn#V|H1qBzW?xpfAepDi9-)c_Su(@KDfW%-0z?fcPvQ<{St^m z&zAxv#4DGCt|dFSFiu5I}7s?fR~<25xxnB5>6c08#vt1V+s>hJ>8wW zSmC$xZ`G{zh3!5>d` zx}@G3Jy#YZDF%XswP`WzJ82R0_CT|1V`!p1+v~xp5P-hdk%C8C8)0^z*iovqjgkzl z5?g7o6F}dH5{o2=H!OZ4!g+9kYy0$#dR^uL=VNXFqXm(IaN3E@o_@z{^b715r49*d z*c&Lm@l#crxd(HxSM{h`%)u)4q8tDzX@tC^xj?bFkS^f}Z}fg#I2+P~52s0Y92>?c z_EFA5Bg8z{lYsr^FUnH*lb`EXP_`_DBU)W)rqi?>7F`__acKYvQ6H9(4k|-81|BY`FbLVLI;K4ild+kR1 zxBv9pK04C#{@KL^gVOxo-P+Swx!yk;e(e7d)yqt~{T7ZiI^|D^;s&}?s zdSrm@<$Q5@KDey)7qurZYM0OKyXnZ8LNqrIu`F&icj{Y*2m9TfU3{AD;@2N{CA}`f znkOaTkvfAVtl%m~+5~;Lopx1XGAhJ|ie3^L-c`<&Wf^aMZ?Ov-!GaO@458;BG9;v5 zk;llu6dCDA#tt8jM3j?D4bVJupY}?`)CHiEkI!6|&TwUv@Bq6nKL7mJKm6nef zTZr5r{pRau?7{oa`|q+B6}>+_UWWxJN3=P}aCByvmi4a8&L9yxIp8{a8>BdhLGK2_ zBnUS_3JO3M=z1C?Fk4D0eae+GrW)9;VFLhyfm4zu{&fNiZhc*qA=#90lB|%Ib=QyURNN2<(*|3r zQE~I-s{kZkc-yxr`ODE{?24FT9hg<7rD46C;P&~J0{`h#;8p?spMD+RmhiO{Ky+n_ z!m!`1Z{vcEAxg)lN?*tobDZuWH!@}*8!)kMF%fZ^fi!_suiD5NO=c2|B8*JDV4y+{ zW^lomTesQ1dvJ$vJaXW`->Qy) z3$PTBnGE?j@SA|K)ZrB5kyi;;qH-SKTS|%Af+pz!rQ6}9?A3|?wm>R1hRCHCKLNtSQ_z#_UbfWySXv2GB zNOw8HSy0GGUWE~4jGI@c7_k6}`iE3l-dJ0ZR)8^*Z zWHLQJ8;nj*#+)Z}a^7fpqz?oepK%7;U^47~{@G`=n>+8kyK{J;R<6~&+iFvyZm)~g zE!zn=k%<Q9?6Kgo%0e~n55>PmJT&N zaSuZgSBDIaxXzuIZFYr*YfF}jgw7>ZaONTsk2J;E#&~FL>v7thn@mHgl2Hy*v2 z%%SAcYFK4%`Enrv(%ERBK9uDoGk2!5dRPuOqw{9kuF9A?%DgzVv(mk!znxwb3N#HX zvh?LJvki?YCy_Mj3VrDW$wZz{J2EX=g!EzPqowYR%ja+;8WyJNOj_+@)mul)K$UaD z$bn)21p!TmNiHsETJ`1_j{u~mm>`i_$d?GcoXL$G6CdPMTFGsaWl_Tq_Qm=6$uVZB z1B}SFw|cuRy@neh4B>D^hmAs~>G4zGj00eH(9AD5A9g)D8xPEVD>VvgJFAAI!TKm78ulZ$?%v44DW{?+5>cMd+HVlW1kHfi8D ziS+wDL2-CNV!d*e+Ic1T|A&AyZ}TlT1u^bliy{3;h7U^Qhh{}II3dhHah-}YGO_Mr zu^k=!vCGh8a%*0vOT<0&)`Xz|FGxxq@CzRmoCqQ4r36Lph(dmqR$vblNCinXP(`^w zo3kmFG>kRroLmMbMKtDs0%6RrIfHdM!+Y%l&ozw>2L?{@JFpyYE(f0Kh4rsJp*X;p zX?ye!1hL3I-@*t}ZRQ-MFxzoZHg90f=)$S<9(I4!Q7+N}Iy}Pv$buHcvl(5bUrsmC z2XD^sX&v5X)U&66zqx@Xcu2=*2d)uNPBAjFXro(QPt)aaKss-P2~%*y0XfiPxc*Fw+!^umHGsw0O99YYPbVE7;2v)Ai`tS|#2<9AG1hbeSTdr$NP0YIv~Azm zZM59?a#{Q2!w*~0O|vLMfvGiQataM6lK>`!C~D2FU3n#MCoJ*IrHaE(?yr)RN59qP z8BeC!)PHiVvs*hjR3UbBL|xXJ&FS8qUyjH3cJ~i|`kx~Y{p6#Els~GV*)Ooym)r^laEL9+2a@INDrU?@-xnR*xK9O>~&|q`L*&Nm*}(U3^g=# zqiGP4fgipIn`97-+-lS%Zp}uEN7x2TFKg#7YQI4-%~leb3~v;g>mny{yiBLL*KOa~ z=^gI$*u&Iwr)39Mfj!Q+(U^ew4E$9a!a~qDRIiqnp!;Hu!Ja6V zfTr`>E?(LZTBetG_qzYh&wsGjZL+LEvqnN?u)=bg_Qc3brxdt>Uux4#$VptpCPZTf zK$0JR^dZZyJ2*zJgK-Afv?B3u?uU{1Ym07L;4;1o^CT0tNc#TU)l5c*r` z$4a)l^SDddQgR!9Ms>$CULlR7np4psW8$u8RDMG_>EyelDg>A4HXeVyx;Bm)aV z>b#=364J*4tw1W@mb=i+vJnYI%G$XRg4fsybFyb75z1Ia@{WSy>x@Qpu-e*J9; z5d8X;f`b>3UT z7#UH_mwpf*7o7#u{n-dzD?X){cu5HJz&ZG>WHP#eb{S(WX8p~xwjK#^#8GdeHh_^h ziHOx8_zdN%bg|WnC$F4xN4A71r3^t8i7KK<9dlxhM5i=pG2~u98X=<@NAEge*Ybp& z<+>GSdP_#6U@9+*s1UJ1qBwvWTu^!4CdrTbp-qF5)#B`sD4}LWYC^?}e_+~-)G%aj zUJygA0DVCMt2O3Zu7{}_vQ?FK6*^j~R4&X~YzAQog2>KpsmjZra&LHbT{R-H58a@i z(bBYOvyjkk&Nf{b$XBd4*t|JWsWt|~&8-)YA3s4UdFRd@?4VISymSAZqoYG&qU8kd zRd#RkR|gpojLHMAYN`T!2xGH=h|tufu*C+OSFFi+J>nbp&lD>Y5mZH4g$rHiT`RiS z_V{4ms3TlJUPj4JiK$C7ghc%5UKTRh2&qE(qN1-vS21DF?Oc>v0yCo#sxdu;*fbFE412vD*nr-MOx8q9zUwF9J3y@KHY{Z9gc!M8t?y#o_yHV(8~9Xx|@HQFej+x2#r zz<3JK5{t63V9DVISm$xP8~)bW)dO?eodK7Uv2H;pK^E*;I6u31JbK<~bl|e1!$Ycr zJ=v_Z(m7RUx6#Vv<{%G&3xTSV@M9}q6-!pN4ld{K-9LKw-TQy{>2Em55o^^io;-W- z;2w@RAi|0YS0KLWZdIM7(Y_ojfIx@vYZQMu)_+9LE7p32gs;WX<}YC>CJ9Rkp`Oan zlstVIM(rS`bK!XBktCZ&s$&L4$Mj)ck@lJm=ChLJd+4 zuhUg{tm14$JHiN>4hGd2%?F1%sGs#&?|PCCDEQPu}2b0wmK^|i-}lX*p8ItIVJ&*hK3Ex+YkY!ca6@Bvf>nd7f}_~ps7 zAAR)j;}70@a{Rn^XMoH4!|y!ACHi;n-5FdifBTakefCfPG&?!19iO=DgJ%zNWkUcz zt8*)Ypp7X5I5;9oG;J&OhHj}RN+I@?V9a60H8u&%&quS`>5!(Vl|0>b;Vh;f+x5Lh z{cfkTkBtgvA@+KB^w`~L?jmO4LV9v~Z%3)jx&j`grr^NHNEhlSL@Vl6LJJq;sU?jv*22C(`WjgI4^wJ3$|okM9#Lu;H5kqn)zU49|}*IAWed-yq9t$Wdm#XL3FKjohcASR^Zb%|8n=mAAr`n4z*MveV0M&87@lBPB}y zLK)-Hu1kTdu=0+ez$15wrj(T}!m?x}0PCQnC`=btB}{s)AaUyjgmSaKFGMX#)^Ar3 zswCHnvre5?z*~uM>lYFrSqqteaHfi1(>GQ{HCFJpbk|zV8sP2CEd|~l3fwB7-=4a@ zE$Iyk=m(6M&TKI}KUKHIScRgBVX?_{!rf~Op$PG$VLWETr>Y7B3Wa9||0M@evAkcI z#W|3u!QtZ8`IQqlrB(tOY}VAqL5m|(BHG}}Pdh{u9MvG?1cOyxg%HBa5E}za1~=6p ze1u$G;F^IIsRf?~*;!X1Rr-YV*bN{=qHJK=H6&nFqBnkmt>%UreKuw2{`)i*>dnlWKiMAiyM5nItuN0hv{ zoU!BC>`_KfvFAby+`_LP-VvBxKoI6CSlrWAu>8W@N-wfZ9VU2(rU7kh94#+x^qO5X z2Dk;p*&%Bs7Z(G(4D$+o0xSeompFOe;9Q;2`30_IhWkf%9(=dU@2%T*6%E^enusur^&`vcwGbGNLv-q8Mm`KtYhdzZ# ze<%$7tY4{@`3gm?x4=hwieb^(Pey~mxPO7~2*^MWq^3f>hMEeZt@uNuL^O-o{kTr% z#F7s^77dpu)-jj7VzoKt^DQ{R^}^tVEu45LT$u2OomAiw7lZ?#Xm&}B@&cf^?$$5< z#>Rw$p>QLF1r=wU!Wjqqhd=-6&!0Ye`qfuoot>PWpPifKo4%+rm>2rfF;WPdA_e5K zbHWanDq#l0rffe2y0y{2I7yC-Ji=vZ%vW=+lUf!K@B)w$U+ZySjP&==5}Jh?Wr)>-FXH zr>EFV_qq=bT3wjYK1bgpwh5S)Qk073Hzl(5ferT-C@jxyuiJe1-4A~G`B$`MH26<1 z29M7Aoa2klyt{L)kQ*1=aO3$~KO`L$OoEp{erphKE@COgD}^(I5=eyg+gBqeMCw+3 zL`no@!xk$nEvhA5)q=tZ{Kb+2&5hXt+8Xw@uy{Zx*kVOb!?a6AQ+)%`IkB07Mwl@u z>QV3ID)?>-dt%o-v>=SAVOPm86L00JWa;&2llEw|ZeF7PS)yR$-W6lDs_wGEpqFE4 zXY)2EV`5{^!V^}$dWzN?5S=>b@Oe%x9X#?7E)MAJ=un%CRBQy}lGX71442cQX~nFs zGGNRy)_C$Px=?87nSg0=VruJxp=mk%^S}*hCEFBTcg{)N9MAikV-lk)LA#{02pUk+ z(?M9=X|=VI=29ii0fxk3C{RgF8>3Z`Ez7z}Sd3okqs<#yP!UK{^v-ITVMQoMd@G2~ z+`=eID&c{%_ny7TRy)^ss1!=CHkx5R-GcGo&lC9b! ztJ4uBD5`&yklIMkta6WMtI62vu-T^w#oTEJD5}Zvp{_l1jT7+(Lmg#2Kd#-qOIdh_i@isqF}uJv?!R|& zxp97ShQ_qE(cs9u&!*E~KYzM~`}^7atIxjto6jHZ;uzv`;gph!2DeC@HcT2u|g{I^^YpI zfaM~fT$T-0JE#^mAr(V`q)QBMZU7EPnUps&k#C_re_B98Yq^)nH~p`?S=xB{PRw1ckH<;t8d&y(~ch8CHmw?0~o~OGQYc8K)}sI-lH-lP^o@^RS}M&3NWh znuZyad>PZY1Kr!}mI7}l1#T74Z)d&VmKrS!+t@f72}?1Y-@ZU7z&UMq{}7R*-DW?R zVhi#iMl$-wtHg0!f9^2IavgV&NnQiDhAvldeDal!k59B zxguho37PL4^{G4Ul<}l zJWHs>z$wbC9|wszM!{P)+7RkOfdDlnI>=3CkC_Z3)Dy}TQ4jEvD^w*E6ifZB(6%_r zJBc2I3n2s`J$zc0aLRt1d_SOei;7H5?hs{zQVb)%-m%I<7B#2GsJUrs#3r|4oZ={rZ++}LgHO_r{hjApYZ zj~+cge!=Nz?|Q#M>GgFb_P1Z3F2O-B>SUNg1%xPNkX_Trci z+uEr;eee1n6w1(Si$de<344=?ZhLddPvu(Qp^IG!3ROl#Ck^+x+McoLnvOO*B1Uo?|NOxvG=tJNNJZ&2eUx74g0knG{f z;bJyvZnp01ckb@j+RZVV1p8ns6s*+_mHu-BPoCTRJKa%tKm&rESRP3sK|1vZFY`>r zPzm-zuel5d+_g9KvFOBL6V@p#=oSYn(PSV+C=+I&VksPPoTH%|=2$GWi85ZT)nV&4 zPIPFO+C@`3T!#$?W# zkEFi5{P_DHeDJ~DF6L@rLAOjBMMEx4QVpmmX=_!9WM1i-$8@?<2#S30{=0j7yU(AT zg5CLG`sBs=2k+d0h>VJ*2dDsiiys+AzF+0}N|L-Uag6xN`~RQ;VEYoP>&NxYt8rdM z@!Q0qutcMdC_I%#XA-#su4mCoXJK$Np5t-%-(BG8NRPv4faxL2y~{zcfUaz5rcqC0 zzvzlmngJbnG|>>$51auwx2&tNfsts@EP6Ef##uOkIJ%7vR z9^V}(VH?_?GD2}A8b#K(F%+OLqHX9U1iCY%+sgzSextHgd>{@=c3KSg3^H_Fl#T~V zG;d%x%>ApC{{}+ji(F9gIyizE3F#l{IxwP?#%ayOf_OA>8IMSOIPp!lbPjpIqSD1% zt(TXwqiWSM64R?}VGL{9s=u?&;1ywK=bf)K;P*952N-in-@z})0Lsl+MJ~!{5xjk| zDgb>8Nlaz(a3xg;3U;O}Kld?vAJ>MX+Oy*#U;EARyx;xa^2xJWvsIh$%A4u-PVHn+ z+dt&U%-Zq!^6t)Pb9?mFNo_R#@{41gLGv*qS=uqEhIuvS@w6}*(-1#I2uk4MRW$wu zFG`-_fh{QL#N}YIPIOZ7DrVHGu!(YXWVSp6m6%KY< z5C*n{kezWT`dDzc30Yp772%}^kTJp=G~TVv-gGp0IvTuxr?=l}aV9cW0HM&vcr>ZC zw{;CPWBo;-a{&vuSB0{})i@Z54%Z)B5EFC`kjL@|-Y`Utgk= zDmE8+Lv}W2F4vsD;kpLll^FCPfoLHd^3(BL#VSkLgo~7tiB!&Ovu8!Kz=nFrNGUyC z0P*Be=m!Dwq0#ZcrO^k^&ClEt!-Lk!`IAX(@ZjoQM)h zidYv#o-kKx%wl<2OB!P&CS5M=sD{g;Ijk;k3Me2FIS&MSalb}y^|E9~8ELB&FV*c0 zD@lbLgPjH7oe(H51C(e6;2O^D%`FAq9tzwlpx>UlzAfnu3aCNgAAuCztK$h$DpMc^ zATRA&bWiE{io`<1r5jQU1b!6S7-kex977BzfM_@K$neULO1MKWG0iGNPR7Q>E~EF& zl)__}b96GN@|Y;)i@X@z&~$KqGwv9dm?PnW5P2ToZVFfqa}j>P)PbAPUFkFu0uTZO zpp1tI1U!jb73?6N{48_{nLfRVDf$cDADH|Y)VG=s=n2k|l z@Xz7bogOX%sG)YZtH~Ju z56Kj?A!ta+JM-bb5Lj3k?M;R{Fs2D#LLZ}s|AHv(3e@msswJBgOmigrZ@Mf-KI=GD z+*PF(9K;nY#Mj@Xv1}qn7Sh5iXo3K5kd@Jo*U-<8Pft$J%RGJh^xb#g#ZmX&J9obL zqLcV<{7ZEBlPaJrXM>2nF)}^XfMQ9mayz^yD58jhnT!t+)q$!zB0jv89t&Po8(;^_ zYKrZgcsiLDvTFyJMP|On#FGaOE7JuBX2fb9U<>9EEGSMlblo$>#MqG`2ns$k8RF1S zf*4D3Yzt_#=IzGg;l=RTxCi&nb!kGTXw+QwqPMAU;Cgb3lkpasDLgGVQJcYE+Dw%> zAB+wr)PyKn9hUvtWo4zp`Hrq24OqJ|bUyI1s#s=Ir8-MG0F};6twD`bwR-ooG>v|N z4aZE$Jf)3&^3&mvqp#TJ(&%AjrRjv2WG334M38ao)tG9 z`1lx{_t_`G@rDHUIj`Uh*ld=##OfN71B)52N;I=~_+nJGTwy`_glpVe6`odcbhP*0 zyZ0V{`IH64jmh%a@!4py=(35yah9~#3r(tZv#TKdVLui1UIzY$0sFmEK@%Bab#Y&) zv6nD-6)4mUowZGjZ2-26*x}jdfeBYk002M$NklS1S!j$oZ%L0x2?~r1l5op9j8RRuQIyDaOkLf#ZswK_0UX z8m$EPg4(NwPaJ#bO}wwjC&IK;>$C>tg28P0={kf$t#O~xE**k=1)LJ0BsZrrOp8g$ znlNd~gIy;_O>Aw$KIXX@K(=FOjY#f*Y7u5upzX9@(RZ8Pf*ZXb~y*6 z-sXs4<{BhIj>7z9jBho}x%Cden9P^M+2Z*00{l26QGexds~npa1U0FbEV0805TBI= ze%VjPaDyNOE7OG72uCLYew|j6gB6co{Or z9BZG2RazcTX3AL4TAA6TCCXrO1acoSB)^(R&Nrc*K?cV)gS=oczwDF*RRV?29UMXj z#S0;?Uh*P62T{D_A=#P;I9@oS3ga}Stg9;<;qy(Q0(w?eGICGDMO8^B$W^8edaO- zn4=FGU0iUo+lZ09$MM%_?0P-SC(G(G1p;4u9wJjRMMA1Y?qhhZ^jHN9pcow~LU2w- zB@Z(vCK)*-Z*u4dvINMe)c`IVP=ZFDL3S)L>RK0E*ZZeMkr_#gmF2Mp|Eq1bvhPsz9UPxFU&b!#Lo?x%r~cj$OsmNNRdK zz)A#zJ`u%sBAaJ5TC!lNHLKKu0Y6!+@_}v0Goi_w`zq2JcTxly%9&ae5CV$C@U~n< z1aW(Lu5~$xlN=H%HY9_hri>KEFY{*O@S^YrNHd|9Qt@&Ls8!4=LSSA0s_;lgAc;;{ z7Gd6j4iC7fwL~3^6Alk!dxq$a(vK=9F?2_KXYm7LNtDZ%%MNXcGm)T|QZP=0Cu8i? zFy93yEWJ2Vrqk+lT3rl(nddCd&S-8>fL3>Kbb!5ae>8sb{6&8_JU@Pc9W;lPee{Fx zKlsi=I9qG6hBi=~^Q6a5W}BELfgi#h7wBkV$=51{zsQPW7s)LRrSX?J=5P z4XC4mgo<3GV>dVO11SuvGArk!8fBo02HvH`8KYRM@>CG(P(37pixr-!``Q`J16?Iuv#stsf@&By%m+_MG ziHINLapT$m(&gDMXgq-k2zRi^GJvPG-~d`PehmHzlu+=!3LIKMDo}N{q=L0%BlfoY zkyK=6Bk_w{`-tF|k;KFL&Ig0}Y%p$bUG{cq8#Ed$AosU+obnQL13yX27H*d5x4Yfb z2EKLAsyT6~1$zKX?jO<1!WVkfWV8_3DWH`(F~;3SH6Y8z3as zOXz$<)IT=ZPT=}gFuWe}P4_RwEQKPFEBEF5n^OPoaNy7?xljwlfwPN^tVhzUY@2C4 z@E$&r`ND^jR?!O_HE+_t*6C*FoAf5Ci|xGSVLpzrX;4(Q?2|etBLnk7R^wJxi!~f7OYV1ZP$AZKD3o4H_hfYUMCpzVk(VUw98C(S9Dxb z!*)Vn4(amCx5$yd?FYQlV~3Ez;*EZls(BUUx&_ho+Cw=eTWee-0Z)+TpFlzd;&4k$ zuJSg0qeH2QgrVR~7sm26YDeQJvZpf?MlM3RN-hNu31N^bg0aF#!J#DK+kCHG71@FZ zU%muEMr}5}pgyKoA!|pY@*z9W$uo6{4wsE07N?mh0uu}@fk);w9#=V15IgDc2j5@? zyATq_4^P>Ej6kWi$4nOHCjkS5Z*n9fha2x*!IK$F^ARQ&ku9zy^c67;FIg)T8X*!% zUL-Bqq7~n+-QDYa^1-{bS)L(4@~uV=V9?5S`n6mRINWwbR}F>P5YyT0G}>4UBtOc{ z>CWBV1LjR^TXTU}o~Kd4|Fjb7zz!av-C8X5j8uXea}$P_sVUbx_ZolxFaK<-yYu|? z{OiY0fAY}>xOc{(&Hi`qD|@0-mQwgc89e&>>-YCR;;?AW@xjp*BY&C{Z6g7Qh z$}0=OT*z4w9hK|_3po5|Pz=GuOgTD%)Qr4UlZ#(3Ka-((mk*2`G;V4w2S5TCViNW~#=Y+$*FEki^Dy zg(1)leC4t{tMK429u>iOPKoksLF5Z7%p{3cfg=UNPu0&8W+A);yaEn3jz!{9E;C+B z?G%BFjEoj3h3~2Ws|2^dw-k7LC~&KQetYWrwxl;GfQ1XDe2jZr8_nYIQq2WY4Fb+& zIvE6Q4Xp9<80=VH7^ApDvBRb4+pPXD~XY?t^Pdhy2J64z;a|{kN(|Ovp z0G#%C34>=Z!jX%dk41cNz@|{di|}9!rhEnoK`ho+DSJ_O5~vWcerFa*<dC#*s}vW5_R1)v73!N-z_PQU?3sKhmrm}&`CmC=_G zh13NZ!HYnnD#v(Tp;=_OWLjeKO@w?`0gBQ$FY+@|#8uu%-qmHWG7a*XL7^el&aE0` zez?!0LEa{5DG4RWOQVLJ z?jG#zGE1rV`y;#~PT0pe{^c(|J?)?G?(Y5I`#Oqj+Uqn zp)lK}QL900^}(YtZ34A;EMH+5=E>HLl^?3ZT=FfGHk+QGvan&Ff<{Ku(0+e#Hf5S> z9Z?&6Qokxg?T185*V@|mYG1@N99=38)UWe^m1sRC*f%N3>gn3Ar7e#(Zi`7C%G?I? zzxuV`V}d19f^Uh2Y2n~<2pQ2C{^HY5508$%``zz;@8j=X1OMi3!G+u*X<8IG&@(yT zL*0{AHET0IyeIv^jJm*|5}GZVhn_T49PpF2LZ@RXRFJVCrx{iXj)oNQoH~S^p@uik zIjA=>qWVdBi6?WL6ttmG&e-(|NiP_;G(s+aA+fCX-L9a+M}OiZT$SYTnP>E)cw9>W5p=Yam^25>v*WNhYy7#8eo z0$65?1K(7Zy*x{#SYDz)frjR4cu8&qn}^0ltwv9;0ZzD=^YP{L)6sCm+R$W(M)%?r zOXv?DzW>P&KJM*wWd=1|dML`N0cOQxoGzfv*1k_GRAA{eM?*KV-)L?gymN5$;axzI zFN;sp@o==5;aD7_f3)0m!=QuTb-n&Ns<5s^Ij#5<8hartfXjOGVmaXwHw6#w-96gd zefs2#Gg9Y++3Ab^;+=brO2kaOKj6y}+7SL@ysWjSI+^X}XiF_|vMi+O$CXfbTK+f6t6xY(ur;nste zrlB9$(6z;eTGMS?I0g!QqQr!y;bw$Dl;w0VY$-@Bz-8RpS2z^X$1C`-c8!Gs49ft= zb_Q$AK4^(A8@bXBz6Ml^XkSA=zpUZZX*6CArw*+24r~!(J+rlmC!9J*8kX-?a|<6G zoCTWW4e{-+ZxD5|+Gf*sv`&R+WTb5B9(iDcG5J9#Y4*mib=BX5Y;`4sx=NSGKo(UC z4}|AkiNLq~48CdUH^Ho+B#ld4C`Tzj-2(8a>v9zw%qbTGv`mv`vPQ4mR5e!pRLS|_ zZHaIdl)D6)IUre-hE*L)5cUy(HIwBPN+ytDF^(w&lK@uas?Ip(%%QqPT$O|yU{whT z&sa?aJ2!bbA&P2(VhAIz@Oa*ar658nDAlW;+NefG@Bk$ljMv~$q5&!*q?sle(c-v2 zS=he@8LKBDrX}0E#JR)DTu%+5DkP5j1GF$vBnsRJz?QQ~fQIn;Y zwA_u2`$xOGT^w1}!))TCgrriBX2A$bZkA5}g3eyNFWg~^p&1efZ8qJ+bZUj^2gP;- zX2b-VL`oS8lkk}21}PL0ga5Ex$Rg#{Wy8>X*^Q-s0!xU2D#=zE_{Qg}pYrhgeS-j? z0bXHiHX=;$A96w4D(Pz*W(7Ru{+-|p-Cl`CndO4CprD!<43v%bt~Re=PSides` zZp>v}6G`!MjN9j13cQ^ZxK%*Eo%McOYDEnXfk8-8qH*ZSAi?mYg$jG)3D{tp8Eymg zDNxC4)exm162aO?Za{KWiwuxKQSu6{+L5)Ub{T!jm{q>luhuujagpGtK*-z#5lzblM{{GVZ?fn_&EQ+c zQ*%{X6PUMJ{{bZPO6N%kc<5`ANzwt#xt!vbS40H|=7i^_0v?3;;#w7|JQNlK`c9N5X zNxURyI5R!dOKrKvzUg^hoD&h5mDSzTT|<%GiOPyNfde=k4hP_HI2=PRJ*TiEt_qys zrhCP4{foD6(ZF6^Uvcb{CZhS36=?}=T|<&M11z-j6KyXDSE~TNLnyw`I&3I$GMI>tHnYgS3_1D0=kgkkAIlYL1HvwutzyDs;U7!CXLRrhV$TRyciXPo}zuCDfkDE z6g`R>5hF9q1R0!^qK2D|uDOE<^*x#jYegcPneGZx0G>*qGC^Mhd2m(&7=wTkgkmkNb&gP&k z+-Ot>ZIk$#^}R3A7p2py&w;im6=3fM4mq%kMnSa_7V1u1hw3Q?Q!cm~#V#yhQvf>W zLiu3(hu@Tfu8JAK)T`5z<6nIG>9EscHUW1Xe7DvdTbV5;P}8L}#*7_YhV}-W3K$M3 z5_ie)w3-z0Oxwxp4y)iLZ`lqB{(vTU41iC)d?}6RwkR)PA-r><$`#d=12aJqwp+|B z8U23w^40(KxBm$fe1Fi$nhmnk%9_9R;Pm+P;e!V!pFDp02>rOM2m*T2U-X-ORLmgH zIdClhync`#feM<2X|86AS^B7nr(XEE-66Lc>N=U>1Y|s{z*#gf<1hi5=s3AXrez$U85rdx{=Za5E4=zp9-W=Lz^`TY~wuR(1pPaR^_K# z7)Xf8#V4VNv9x@(fS|w2C{9#lP}vDQTF(yP^EL=1&NNEXnx(jbrr?03+kvgK9WnWn z`~l)1PLpKg#u!TUAWIO7*uxL|o>e8XRD~{m_c0&1v@V#|P5s5pV7B$k7G05X+e zwikDibkudSmlUF|Q9+qRtxW#O%npxL4@d zFxEq?OVUzG>Q*9>AN-Y0?0?cF07_RW=>?Hce!^02U)_g$3j8D~aIb*=NjCd^r5lao z;Sk}SxeMXZqnqBs!3u>LM~P`Z;_N714G$ikoZ_G}%L3LexUtX=xvHLUoP#2QWDa(++X~|Kyp~C=G)Ke*9!u^lT`U&iOan#cY;=7w*=F%}esytv zevT(r6nWT`dG}xs6PXSRm1&VJD~ZRuHIgQ)z_>L;ww-kgF(6F^qXSQ!k4ko=g4slnxRJ@suAx z&xI4^eSop5q!$~(RpltBr62$bJrHWhH6~=| z5fm#(DJQwYah8d@0P2nv5Gqh5_c>>jxruGP=H_?&)(-j)4u`YJl(YQf`3%JszFF{J zNf%OyfDYAvjj7IU*I4qRQpVo%_!!RvJ(kP|ZG5)2a4^AE%9}T@N7FI-r{f0?2E#*6 zA-_I9pUmgy9Q9l-C!_I~U;F`@bEtnX=tpaas{o2(?bSh@i`^Olg7_6_6^Rv!*h5)k zU~9IT$>)vD)g@Nfm)H|TXeV+%O)9+kSl>jDUS+hm>u7W4bl1plk zY#V|~c$jS)dN=J35XQ>s;_a`0`_GI*u>Hp`KHg^dfDdW7f(w;JbL&t7nsA{*uWEUY zsm$1)AYil0E0Z}ErJ6KIsjQheoIxcW8uZ=la#{Mg5oM&@RLBG6S!rUp%WBB#Iz~k$ z4Taz^T4b?AFRg_qJqmm>CP;c>VmR+(`(Su_yqe5ky*<~U?4WURaXp#f1iHl_{pjcr zlSi11L0cRSTA2Pne*92t?%CoG>px<9EEB^nU@PZ>L>U!g)mSx^ZD~{4bfAKk1O0{m zF|0f_s(K%T-0IhH2soVA08h)d-43q)8_HfF+Q3xv7~!CxVLfNtQQUp!O;>6 zEVf>t!>FKi$-krEvN*y7~U032$uanxJku!&h^J%f|&!N_=?cyjK+^94Jh zO)NMYXvfh{YoN`x7KdBr><>=i-U*j%a0lz035JVcL8NwTN2gLkO#6P@I>fDLGmsNQTC$h63!5Z+vXTo9qjdKE!G|lJUBsZrr9bcoEP$Zbjv89F zi@2y%4#0@MRTT<8e4+)*B*|L|%w}v=+Phz&PSCB>fQm|X0)5n4Qj@X+1(r;u1!qVh zW{PGR1jLHu&S~~p`hF6FH1AovP>~gL1l?)S?IQlLW;w#cQe@K6c=q>y_&v!!`|KBx zh(5boaW{!$s$xoul$caxm$FXg_cj?n-VK5*a8pc5s8ay-JXMt`2s`9>-CKkg~;uag4z3g~~G?Q)ORpPd4#QQazL8uCA)27-PI zTNF=tBST>C$w~^Xw`S^j^@!e4BDLR77B|-`wWLQ4>%v)qbs2m zcIlLcNgIclX+_sn#;YrFtGFvv+3yVo6EDemltPT+2e(nXe;pC&UiEBemgrO zh2h>9EqP6vC`LF{ z^(Jhcot;fF-(D_XzkF5a`;gz35q-B>@AOAkG@uFh@GnRBbuiB6hBu6{uSAa0d*I}( zD#>L8xm?Hlo;9bVy(jk>#BB6*Y1TxhvHM?EUbl} zbMH}HO-3_Z%(ijF%%O6|jc6*44hO&b0`m0=I9l8u$j^wc@0=b5+)=F$m|2o z*lXf+AHIeNBw&wGzYGrZK;n`(W+JuEbRRk|H4E2S(<?NBYyI2`9< z^cDCG@EHYQpzM_~g2QI;Nng#d!#Dn-ojw^MJOP3JR`d|y*hoWR4Qgf2G?U2&#WP|9 zM|0TW8c*2gLKV%FVG__$uxK;8srqHSRh|O0!w3I)gqIyHLkX!MTiSFAojfs8&@~Z3 zJJtm~yPIJiDsl^*^uZRTxI;O(yZ=XDqq{TSXtCY&21m!Q<|Ly%SrqL!vWF!C(`O&| z9b9nAGneE28A2#6+#Bp@F9jzmUo=6xf*FAw$0MW45F{X>a%AbdQuVsEL ziwl{8E*Yf+sHB64g1`-h+C1cysic9(LvH8S5S%zC%;bYO&a%nxhdclrq6Ef_LPB~b zn^OlT!yY}1#g;pmg4F}oXuafqUwm4z@L|XCi?7eFu18;d`I6Gw+~(Qo91eRAPEHizfP~2#3C!9JS%tnU8U=A$kovkHVyniXNedENLxkhCifSoL(zmT`g0wI&nvhHr zT@r;nL{@3G#H$~6uS$w7-3my_01R5@=8Fp4cm0Bf2ES~E>Sy98A=rHf_*S2^4vk>ilo zve`zDruo7u#8v^ARh`J{lM+M*1_&y8MCFa27Rg6VnBYT(5^GLl0>q^Gzs=4sqxiFu z!U^;w^O1bz9YzDpNF`B;H|u^V2m^z_x_XPxewzE|dkXv%D6rF+{1j??U&nh2Y$>3C z&)A=TMVXhW2g6N7P6Q&XXIM^qg$9dh&s8&@F-NfkVwudsm;+->q)c;!B0QQP)6?D@ zM;XjbCduSgmrhYkyuRASIG0s8F)1;PMX%+1mrN9a#gC?uD?M~#EQk8f^@g4|l$PkBCHt<06LnsJsv96j>7~SRP6~02J9MC2TY8Lol&&aqyFrUV!x(A4%Qg_*F!_qiLo@nt)9(D=( z-2vKz0otoBhSK^5MYTm&#dZy!008WuUS?fSKg`ky;Oro=RJTM6_Jhu=P^x$*Vq z9h5|ai!Z^HZ6~^#!Y+5fbGQL?!oQ(bP)^0PiKjQP#8bkBrAUOJj9&vwlFsQ>$du^> zf;X8t!ffEEg*=RiicU4UW_I3pMM4vWOVO}!ksBE`)^WW=Css>N*(Rxi4Y~VO$L_w< zl%+|xd3JBBC*G9ak>3)lu)sSB%XvT3||^OpPT@6PkXVp$rpR#j=m zpDPy0#L&wY!_<@Vi_r)lMC18%fj*Vt4{EV|w5_EcY9QilWd0jT?O35ZuI7oQG0G3t zI#h;+OE-~q!@;HLKwkpsPQZr7c#}MU!e$w!1vfefT|o61>3~rNndWBL={)H7CYyt= z{-C4VrmkCin7Cs>iFW{4x{IM(h{Ku+rGcgQyNAcU?rD!(YTul_nU6*c+i)+q!JFKC zlYx%mi#|yVwW-WLSyWpMmWi^YDC4Z$!OqPX_F43f&i=>f;`*O{{cFa)zx=DeeD?8k zGzBdBqN+^C1g7Ck>g6rN7F+#cJ~W*~6z#pR!7)qQCnsI`x+yfBbRl zF}S#xXOjxbf`Hh1TVqq*H*R(0SsDu^q5YG*Tq;USJUV`G_4@6b&%gZm$>ZV4A>9cM zfBO9K!-t2{`IN+cbOtt@w8!RbD zWmkxu2FD)9VM0-$Ve<n8v4KCL7*qW$>m%!CPLWQg-8&UPDXW~E&>W;i3$62%TzNGdF@wsBY0yqbf zkPjRGb3x}{8kqOPuz>ijT(dte(>)0MP+KyLN2#aIe z!;zbWHYA@Z+H%S>u4IVn4}HsnC06*EQqE;cQ7HATuZUr@u8WO{HPC{dokQM~>{2Xn zNGZ>zT%JpGe)>Kri52PjnRrmOf1uc9K!w$!k#!~sK#S&&nTaidNXOFB+;vDj`5^g? zcu*+6cNzE%1}VErEJB58Ef1!pv3!EwX{Xc=WX$9w!UI%cq8#*ae06}2Gm<))c)I{% z;Q_vA@Iv$8_?MH#W{Nq%a`nrf|Ke&oJHNQTyykEG>h<|=+Xu(P{)=Z1KmGX0$&okH zg1$RZ?kLl5ES)kz!19z=St&I-v~u|;WklO-HFu@5avHD7wuu#y0gXvCX??H~7U3tM zyxPX+rzn)SHj)6gKkMi}$G0u9#p|02C{+Tn{Ij`ys6vG*z^eDOXQ29<`MP>8b*yp~ zx+OiVm>vmb+))GQ7P1BG{}3Jmn1LN?&u!6aaMZiObiTYhgu**aZqk5E)hn9v{V?u^ z{0*@+p+T+YiKG_QnyGjod;^gCSN9b75mVq^0sSLx-21A169rJ9tuRf92*T8bh(l2M zgCvA_&s3!9XN7C!^^D@o zleuO)$MD-Jm2?R=@iQ;~fyF$Fxvs)7*hH{aXl%7m`rz*L)tlE7*6Qunqlb?lJ$lsd z_cb)oVkn100iha!bv++etB69_ivlncxduDpsF>x{>#Cq&#oSI@0D(Y$zl|HT@ZvMh zyelp%asvZHA;mJ4K}4Dw0Fepwq8hDF1%*YFrb?Eh;9((tkzR48#Q38`+nUB?fs5xky`Xz=aKwE{2#c6H;!^^Dny?=YkK(G^g+(cr%@T~oV9T@1D;!U7 z0{Y3Ofh7y4>kc_H-EPC)+*^3@=Irv~VsLr+^rMgP#c_0aaxma}!-IKabHR0UtM%ym z3e!xi*A~+Skm-hlW}jA&LljcsdeFub0Q*P$apxp~1O7`64P0DYfF3xc=JXiuYQqOJ z*zt#J^(nf=qvIn!<%h+*EQ;oO|&0hMapvMec%I}I5eAH`bT%WI_D_H zhY$LAj3FbGEtRHVMl>zhxk_|AySy4*@ioOeC&b0F88Sei)YIxptc+B=wa$#hMp6ft z!KNz-R08wUu1No;>ry{RTIwvlc)^&%gdl@~60T#th>}*Gp$P&@9XSbWgOZD_${w9T zzt8Muxblszn2W_4-6qC~Z7e*eoWDP457}(+@V;$gO%EEUhuy#W?31%Ezns1~A6<>G z3w6w(bAoQsD7foU)~g{2TP9W!tF<ERKtmTl;NgjVl2 zzx(ayzyBjBd31n2L*LO%iN&GS$8W|8+Td-&9;hpW*#xiq_$Fd{YO}F)b$t#0b(`I< zzk2<}KmGRa4|?=%_-8sB{msAsZ~x}s|2w)8PF+wVaH{8!GYxTV%Yl_xNkRsvQk&9g zOG8-H-KURFU%Ytw`R~4Dz{T7R9mMtZ3?~Gt6m7b12~~gimQ?@$yrzA^df&D5{q*VP z-=Y2$Y?km;wO5s zW~&LMv)k*Qyk|^mw&@>0o-jMhho?tgGXKc6q~)WKM!FDR!U zJ1YM$UB(kMJw)ZQgNO=FW?D+My8@9BgDoWE@JX#PCeaedan?bW{VL?M)K8OPr=HXc zP3vh>MOMwB9F>=mg4(<3|fe@I?E@hIoG`&US6`ug06xGxY#n$4LW=yCN!u|zX6AXU+{g`!r1GCYRtt+55ggC$tTUa%T_<<)QY3o3B}eK(eOr4H#e zb?!UAX}6?JddVVsH;U#bfni9bByshYXYlp~-*SSb@@IlV-$bNlNty(vu>X}}$w}$9 zg{{ZP?Z6mkMB*VYR+KPd6}AZEH}T*DJU>ec3lquem4Ff~zBG}m4X$u#oJT&@&GzzinNg^{E#(6~(Sba{o&4NEt) z&s<;?pBqkWPS}{H;<7U!S-+z+Sx`;%SC$_029jAhr`Vm0X)#v7*y_K;@GpTnxByVc zrX0YZlWmYJ+Go-!q12+9b><%hq@a8hNFkGjSnnz-UxT+mxOQu$}$U5A@nVkC(@6asE z&KoIqKV$}}0bM1(B3nf)8da)E*(|%a%ieS{JUZ?4`$vzSJbLgDzQb7u>-`1JDmaXc zeil8%V5#a2CmmQU0Sz?)Eg|Q$)I+e8S7BwK)+n~X3q3lzV%i^NLsN&qiaS~yr(b{9CcJ$!uB?F|5<>)Yi_MY9&ca)>JznMJV_9VfcR z)dFqX_4UQs?CN?s(A_ZV<_{f%9qS?a}|85e&vZOZeQ^LNx~Y|ppK^#p+$Fx3;!Eb7B-0%Wc&VuJzxQi z?!wheTCSj~MhOiR-c%-w@wJ@7RtMae5zQKBY{T~}q-QiTnkQ{&c?o%`5&BbBn!W;>DIj0A~cG#`awhWI9)ID6Us!!5= zz>7zxOcZF+9uE6Q__*MtKPoV^3yT%bSRgB$X7RSGLpRFa-ow*hee&_=|Mj1zqibku z6~x&V1S6OPn%fK0FsYO^DQqC4Sxb|mJf_)k95Crm*!Y=^7hreL>V5si>;L_K`#(5O z{>d+X4m55K`0Ic7-@#cpnSzf z*~QtY(?9T307s5CV^SWj`)Kr0IpW@fP6tl3Lxy08kxj|X20itQkDjp?OLrW!P(Y6^ zE+&so`!+1BUx$4LuH$~p-!Or^AlGce9W*FhloveSkzkwoLp{ixgeXi!4o)t-EekqJ z5^3M92b?WVbOH`sus6q8xay(>Wm=YW-+@+PZ zoojf*5CIt=Oa?6cbVxF02}U732>F)j2qHNTI57v9hdUq!QwfVYvN#--aiS)sU_M+Z z%mcijSHsQl%Vj_l9}6pJn1R4>=kMU*?BTpYc`24$b%H5FR;S-!qIa5R#4d_j z++Spe*~x=C*BSXqIqc6<@zc{r57CHb5t~5wms`{7ppz1;;8QplSNWK$x5t&&4hw>D zvPkE;R*FUk?Wd*ze!@ulfQ~t~M6z;1Cu4!^1Oj8jas@rg6;mDIWD4{*EF)R6Cj&X0 z>%L3aC+RMIq2%uO?ujA*PFdy4LQ4A>RRxiwp%CF5z|-`ZgsTKZapn!_9TfS;r<1$Q zrf_A>b_*vd_T$uuUgced6vR&eYW1wJrC3$9dc)&3fCznD+tlnJ(}@^=qDm2hEG=wA zV)+V7iR@j$cBpW_>-8?~eE@bTz}mr*a`JHtYOvTQ<|Ti3qqI%*zK3^FscI3Lo682X z{1V|aES8u8bDPjKVo_lN zEeQfZGj0ow=TbCfCQD5aN>!E)T1k;C1)f=8lNHt^%9^0R1yu%`IT~%t`Z`p`c#RC zNev0|l7dTe@+4bgs}CbmR(WGe@k1pCB^5nYB3S{IW+em)ZwV#0dT^ilR>&ZiFQT{- zw!o4)AD|Z2@kh$4unQ6;p>zptDst{J-}O{rmrsD~6-DYaCXv42IWKRfC?Hduk71&u z4qfg{n=I9vQeyc5x`hv=M&v-=^2dh>c#0C=TE&2xII~zz9^OrjElIO4J|ddCSf_+?Et?yZ=wj+gEXs+j;3p*$66948C7Qs z!6TCZ)6D=HEYt$5BQ!MgUNjg82nej;MsM95upOWUos6qix!dic6r%&c4b+AV`r?(M z*+pQ_W{yv4G}&nS^z}>=M>v*c84xgV3qLK$0tA-DVgWC1n z-W*#{bZ_$+dcCB8G=77ul$Pui;FrIwr7O;gnMg+}f0(+2-BTU2dl}HT67UlsRU}`x zo~oZUENPf7K)Sp#uc+ya9$f&NIGPUq8G^e(X_i7u2!V456gtotKjNb)XF(t*-k;S% zK%mlL3)%P4aZy=F>;p7)>8(v+XbDR=wAqcr0KBFF`9sfbJ=Gi7-c~y+|3-r|F6@2du~r5La4Wcijx&|a;2=g~EP^yD1H7J9VNLd3P|@H|W9^}YUZ0{+ z)5F6!p5e+W{Go&H<=gAO``iE68yvs*^kX(wuSRc2Q!YqE2?kOU2%N)|`jDQ_M}uDf z@zdw8U%&nQ4_|NtA^P?)zQ66j_I;6p0D2LSj;NUj+>wS_q|vy%n8kLVKF1r!-XrX) z2S;wvF$}=wX!b0t{lyor|MqYH!}AwUo;-hecsQh2W8Th%rCfxF-pPAM>Gi1DXaOL} z7LcG#rRkZ^KYD)j;P~SFnwt^1Gw$V^vrnF%bO!cAaQMlFu(MoS+O%{ce)2#IZ{P0G zM>b241O5eqOz%KqC?$(-L9|9CFVp$LWb`++izr~Z3Y1O7E*#%vJCh3lmPyg07*naRD308i^_h&oq{kdU7g)Zj_ve%^bal~Y~eM$&+etB z{B$Ta*TCbb4T2V<9Fr7>78c{pIGD02$pHw)e0q%D0Q&v)sh3ofl<|lilraVZS7Uqu zTwRT>&#zEU!^ulE;7bn0Fb&Wj*aVGE>!6{_D0U5(+W9k-5Z{g?0I35#=$D~^8;cA@ z*~w-zoe{(c#{o4nwr3fhNvwcCQna4VfHiFco3V@RuM-SAh^%#8_5*fTRgj1+nD57bp1i*TLk^>{d#`?U`T{n8@ z;?PPj%m~74WXxcb5sKI&Tn! zA|OL)IguR>>p&&8ffw6f(s!?gBp%6)s**r)Km#YN2^@GZL2#0plrXWs9LVKWNK&2o z5{PU;e*cjqj;XDF1`A_KPSQEug~aT(B5xwFks}nfqX0wWbRkeGxzo@z0PP|@f&o7y ze1*GdsJZ-rY%LEcDdx+?hUJptkbN}2(3kSR2&liRv!rP8hz;mj;eg_^V! zoxOF^igU>t>=i9QkvfZB;P^U8U<}4G3{wiLRGo;Qj+wLuyyW^zwvkX)hF@?3;KYEP z2W;F^M`4!|Olmp%M6*iipcI@Iw?;st47yx6)aDj`F!aglrP%!7L-4*8P>$dE!Z^MJ zm;A=nLF)LggaTPxpMr6n>i+wl0zVxJ+$*4eI&FPl(;E~(N<|022Qmi24Ely@8qDQLJP*+hUba#@d?Y0&hbgVgCL90%1g6jFXJ3Wl=GiOBx^O-AT@ zRx*&4KTXS$n`q|6)rz}t&Mz)dL9>84IX*r*Izj8BFqf1iTqUjKlDH<|lJmiRG>!^p!-$TOFa4!lO z1p$MG!%V->Kyy;(dH^en_*c)hCXB#AWGa`p0pKj2gpoxkK_ZrlBfAI=c~)T{36q89 zT0}fh&J=VVN)g&IC*F4oELgNoq27FfkuIJXx!?q&BG#d3Z=ek#TUVhcQjw<+o1BCU zFDMmr-H$li#4K)7d|jIAL#qWz5qi+5ETTffISX+SZ^%dVrE5DC=-UkbRw`r&YRdVGopjKOLEOJ9%2a57BKV!P9uK#XP$D8g8pa7IBzg1W+EZY$(?{^oi#VnKUFxfs;I?{hGcDyYG!50Ed< zFRkQi{p`sz6mWETL}Mhyt1B+On@W%6>V%=7-Ff=_8LkVk#T$SAIVZ!d3yViw7hrZe zM>Vcqk8=}{2ItmiFTZ~I#UEaM`G?u{NL7eyR~HOv3O=#8(~w#qX(OpiSqWKo_)KT6 zn4!Gb`-Ei$7yh?p^XwXG7x+=4w+|F=6Y?)FOzm$24Ca$BtI*_9Ngf$6pe+xed$U{A z34ic6Xj@WNFcb(Su#Ba2JcV=q9n*PS24i0<&LN-l2}2gr5zQ-r@XsZvwb+LAB3nEx z%(f!!kZd$T;HA4VAljZT5ZJ(wuv{Jp6CPove>7lcMW>_Km^oAe-KO@`ws0wwjSGBF z3Xp&H6~7rK@D-aP1j~R7576uM*)l~(1)LVvlmfE5i4^-6!IP276VPTcw8sbYo*Esf4SgOf617N&-_2&QnkN@T5;iK+g$cECpV9jX3?j^QS9G>PceNg< zv?Burbns7uh7QX6TY9cn4a6Je4;9qq2C{+FgBx+qgWBB6emx*aabW9G8gE*~<*ae*N&Xl7&d(OBhQUS3U5 zOyfctbu?R$oV20qGee<^M(m=Ob7%ui=W5RM6{CXG*$zVg*E|!Ap60G=@2UkOwy_jS zoaB1E)OUb6YC6&z@f+{2eALk&^t<#)KyDubz9@VW8+6!`&b`12TaH1QoXJxDb|~M8 zn{8$ZHe%!L+qa9xg8gS29-1lHCZOfii4_~wv>YRt?ctE6Ai$s@490JyV8lyf%7_Yp z>@oV534&LAkcQDF`HZ(UnFCtQ5f6PVpgWk~>q(ghR{_e^>UqH=hpBuBTZl50M>-y! zh&qwB6Ut)u>9lFaqM1m1e3?uEN*yt+I6O)WUXTO4fuh;@!)kP?y%UmJY0Rr}Jw6}{ z(gt~>TUXcbpeTgZyi#g2H^~Y3LGLu?4$e}Osu5R_&tByef*Lzh7%z?4hHc6^ro4n} z_fzo_Kp_B-pdlNwfWx;Ks547Yq8qB^pO8X!U%=hPIf39Zq41d@-;Ti?YNGw3X#Z%2 zO&zwfB>*G+#DbFSQ|96a@!RaYw>BWeL+A>^z?PlzuPP@AOjOeHP~IBhvoe*+>~9a0 zQo@ZI?B(MZS8%?*$x!#00;ppX>m?x4GfBqfQBNIfE(AZ@@f?C1ok zy%MU&|u9-$pWv?2pjPObb!Y*^H@|8^=SK{b>8DKm|;pw>7M9GU4*1mo#Ib=!0b%7Y;W z&;#!tBp`Vs=2c1!WZE3+*F0#$>1pOze1ft_0uPc=Rpb{O^dc21ovYB004}xE$?}6G zy$WcSTKqC#tk*{7*XRTwPP+xI%=E%jPGCJ?HIWc9FINd8msl5RoWKh}*1v9lE1ZA< z>V_>HlNG6jJP?Blh#@}|N{mF$K?qtmpzTCD>!sX2L6?d6O-<*KiD^6(D1bwkC{j@{ z1y?a9K#{ywI95JJ=&a-#fYb7+hpR0Z#p+WEq@m%&%K#}Lv7n)%4dRNiyxQ_d^^>~n z%h&o?0a;Ux1nx8h2$C-k{wz2E zALQ*BinzdJ4TmbgtRa|70o`Y+gKA>m1@pkE^EoQlqPJ2Dg(~@aL=QqiFhp^;Ky}wu z2_W%NAfPrQ+w#@fo9poicN$z`jEAwPvpbCBkNn&jHrwP>S9`bE(C`?yS4)qPPTUFV?nmQk5{7ibk6f z1tQK9jAo&C(87!jeE}Xh*v_GyQ5dkag3PEqfYTT?-hBP)==c;k=-$=(#a4rqiqeu4 z9fqEg=i~A8`s)16>&vsV>x)b36_p_CCc8Nlmb#=aYe?I(3Otc0Z~53h)DiD|7Y<3g z-*^Y<>Z(@pHl2T^=o0C3;S(QNT)Q^krEndea64a#{m`E_4K;@OSWl~cUQf9cPeP8a z$JevToCSyGZLCqLUf4S*fOEA1fr!LNwbIJ(U}ynZ>D%5`wXUE%UxkvLwxQFF$K&&} z^W($8AzLJI)kN#4{tys|aua~}#PX?Si#F2?iFg2T3nbvc6!Zw-YnNn#A)Tr%l)A3b z50=+l(rFqdm*`4l5_pwGubo~TOR&>A6j51O(oq;Z=%6gqCi4l(7%+i*P;9gN=pesZ zqx&KqDE$66pMUc6-~Hu(^H)cM0cw5ffQMYRP3SxHtid7O7G7_mHUl~tzx?Veoa(^+ z8(ccg(eI(TJJ8XMBQtDb?bBlr*mE<2Zgj4=pz&{kGFiH(-@3D^hwr>YP0N4!^ z3W)7b;=TvaZ!7ff_Y`EgI=SLo##c2VtHF`Y{zex@-mK|N!sjM#VpqDxaYTld*E6i0 zQLx$FOlEg?YRd?{!pvX}wj^g2n*~@P5h5w^)otUxyxqmp{~>Opxk_Y3;;DOPW4)(cP0rrDJ%9Zc7t&K)*-DJHLl{72U{hMTo&gSWcRM+X!p0d*&}I*S zMnJ66pqgQgF%(7b8ow^=fk){KopGjwp*jlX%^8cGHiP1K zyU}GZjQMk`tGA6+HVMIVu1hn)9&^=Ugk3Xp0b(xrWkARM`DP%5*+g4uVo*a5+deO; zmYcz9r8!cjV1dAjE01|&flOL#tGOSb*T5~4rWWB53iXfS8pP5h99hFlvh8}{equtY zjACvb6aam$zVc}P@*V+LpfGEs7G^tNn8PB7bL$}Ok{GLKKNKi>YTuhT=$J|L{AK)J z5GFIFg~I;e9MCDzy@@h+8z+GLuQR8{lt#1>MKchzyrxA9EQbfpFCzPp)r5#8GYT_l1k*Up?2*0*yk=#P| zp#qKdMGPEB=Rt&IbDiqQ*lLYA?nbjJ<1ny>D+?}l0mfTI{m&|tWTvy$3Q;AGMU!|- zNZy(`Xy;*vTJ^IayN7bgpLPKj&FG>iLvbMicnZ~;ma=ysOV##%-#^|{;HO7{dj<4Q zug&jkTqsaYB$*$aunf_CX2!|{;fh{S6e&)hfZnWzsY0fdh&P!CnVk#@ehHaxGBpK; zbKV`Hq`LD(g;)g#%vg#eVx!k%l|@0Ujacg-LX$$pL@6Fn)PmO~dsFAslpG=q6O@Ni^6feiTmEjp zxa)V&w@DKGuAWn5o_Q*9AkSa*-t?t5$w|DlPz0q?WTDm=>``$n?~p+h6nLN9RJF)Y zEM*c;tdc`?(8)|X1qh_Vltx>ZoB~K%UulnwPNha-53gX9rZF;*DkSSKGS&I^qUy); zO%2m+t^7845ZzWg{*M);#^9v zas?T>Ud)a`wtXwK1_q@r&t?otqNfSktUA;vANOg3~P92y`N;~F6rR2otNskL@x z%5o1Y>?;hXs3vtmC8?soE>pFF?W2Af^Eoc5n$E@}KJAzU&1&htp)C|EIHV;)R`q%X zOqv`ttB^+ajsNZpB?WlwhonvWQ*?q~{I7m(2mGwzQy_yb zH$|eZ8P671qwzI&SYC4p=E9}3y_hfc96U+0dT67cr!`Du>zd5Oe1tDZZ~LU{+D!X_ z^l*lpoKSM}iNfQOaCNktqxzxKN~QJO(`JB^?A z4N>I@mg49?g9p=sQKp;(}97E4A3m!(4L?{ zU>%E285>M?baWQbU10JL*U`#-A1| zTzs1X?|pGQA)I&{#I2ZHKi>gxBciIE^}7-7#!_aXGpbZdyKb{NWz+fDIPAiV8{Fc+ zi`b7gagu|b@O0T`0|u8d^F`wd(`Dy=OlFavyfl{6`*toMGhygz1BcG@&Gi(WCc4MN z!`|@_r!fj#YJuBWMzghI2h%c|n>M|xfGL6tH#vDWxx&%LY89#G=XBTf@UtD79k5Zaz4e*15kB%ibB51oy7i6k}!PUIr5z3i` zE1{X9HZ%5d+|%4}9DsSL%NaE$C`ibV<#0tGm)EtBzCqUy{KEQDJ3t&+JTz4$F%0EAG$Ta7P8~OhzRExd50zU_j=~5)vciy3#?pDN#VHEQT!H zJ?K$I_Bgl-mQ!M&-sl~wWp0jjJdHmM{BJOCcxVJ|^^#M2nnjQcjWdQ77-h4;314DT zO)f`d(v#T5g9*T`+r{0PM%l_danM0OA!LS9Pkn%6C~(z%Qqddx)|{EO$`8rBi>=~F zQ#U1*5NnV$%8XPDxypK`E$ySk`)7ck*~XQOq$e8#dNt*i_W{FWmAs1N%ej=w0H4-? z7i%2ln;>J3cXI9W-*`#;DCP1g)(P8(>L*{k$xC@AwYd{~8NP01H+K!W0NjD|olGDR zSgtwD-3jBr{dx=6(Q_2iZc3ZGPBlv?)@F_;joR#vwT zTW{`v-c#VmO@Vs_^pCrJ?`!v73OJ)MA24TuTmpa{?H1 zEfyYXt}@YN64bsGD2hG_nRT3#GC2v;z&HQu$%Yass!X%hL>ClDsMMT^&?zvwP7d$m zsQ@JcOCS!2K6vm5W3@nJfr3?!B?Fl$4y^c(+c=g>bHu*&dV++?I)#IO$d;)S%N!8S z6)75lCJ2B@(j}O$wAUjsaF32y+G8f-O5ZY&$0^3iv{)CJ2GJU~6Y8!5pS4nzA`%FR z3wigY0rS5fu$C5>Fs zrAG4Rw+xdC?W&pt+n=fTexAZUyZ5}?5~OCd{q)td6-!&v!juWZmdv6g$je6&yj+;+ zd`2~!gd~ZT!17ABzdn|%zLO2;8Z3G`#4cIN%r{t?b1d17k0vg2`&cgbhht9sFP2va zczD&TjMojKIl=@Tz5@64`f_x2dU`tKKEp#!>+7r;KQrDsh-zRyUd_Gq{IZEIY=Mj0 z!v_!Wj)C)yao0Nl`MbIvPujTmVw%>QbAr{)BkK-V(Il9BQngJh zmys6Q(AG-3{BXMkd2x;oOuy^1{%nda096EDKG0ks4RgYPj`Hh&{PppJhbZ}2nhu7C z*Y(HXA0vyDVGY>D*-*9Y8c z_@DmnKmX<*|MBOa{o=((Paixu{`jLOkDojw&ul)GCc2PXVlxUhs01ILp5WN}u-jvN z9(H@5K6>`z^ugzsUn~cGI@DyWdk-Bf*+f*r!olpmo1$+J5eAD*h!ggn4a*K z#3#NoUSEv9I==)asZNFil+lOyAI2?>=igxPW_NIKc;qH1y#=)=9d0slqj54_PR=ea zlmyfu()C&v}4ex_Q()e0ccy+3_!a^${KLdNjMZ7`=JJ6mfa}_5x)zhdibn z+F}yIx)X0zl%4!l*#O5Kjjo#Y3RG#;D^Q5 zRDTyrX_peO7o$vuj*;&s{q`7InU==)QKy3i2=t(Z14xFovEgL}Egw-mGa&Lvd!jBT zKnGf%)-??db}gPC^F?GxOV>Ff*te}i6w_D8VMb2Xn- zD590*G2A^_^5V)EzLtlY$1} z+szY%A8!8GcmfS}1$MN|CW4Yx112AWw{zaEfC9Vvv|tccINxHBSC(XypT60>&CeS^ z-uDB*LI8Lc56bFwC{^QCO4tWqr{Ft%3;ecp*n1~~-5I~1X8##X9PfcCt2r9;>pO)c zRD_pOA0PznfC`ZV@fKugObqP^veh6>J4Cv%RqCEuqKGIh{M(25zUO4U@p4P=JXo;0fz&1C-AKIuqaYIE*L4$_ zZR-cKWDv4TLvbcz3wB%dKG^%`dkXv%C~&WU{wcKbeI4(n06XWrU{c)5V*F-u;C3y9 zQ`Xch(DAI`8b4Q{v-Ie72Pl7CfFOf1hh#Qo-NO0~Cl$%PD=V*^90^X8&N@E1hDu;A zG7WQ5`R$Zv5C;S^EkiNoSdJ%Slwe41#{(=Rdc&hbWxOUhVR}hoAgUHYh~{8F$oPM= z?r^JH0YwFgoQ}a+v^}q94vkJV1=4m;BU2PT6d0vEHa#9H=b|1CqoQ3?g7;XLy1Kmp zw$M;PO}wpD!GHJLX#YUhS2wfoLAvvi)RAxY#g-(LW+g`eQkOda_JJB^1&=hRE`n2) z9+-#RsDxq~qG2p+RPruJ5DtJ`GzXY!++q=&9(NTG87Giaa6Txq!UB6L0JB&G6x4%^ z656EU9HAM=RVYzW z@FfK}%P*>ySu9qPY^efCFh?X0D;aEcfj~+=3mIJ3@P{8>XpM0WnkraG3b0IO0n%an zgM-abC#GE9G{_-XeoVXbVfYR2$xUoC(IifA@ysFD&co9OPo6(J!Ig9F-a+ns*zXMv z57{%p7YA+^VB_xUh}urucq&-*@hW@By=7bvBS7T6M7X^c~v23$B;siCeX#F18 zOHd5uy11gi;?KTjV# z7!LcW>@RWbIU2R6b1-4SNt))7+HGomz=evo?|Qtz3F!G(UwwIb{ste?;B|C(f-H)v z^6VT>)Z&>YB5@kTTqR=nS+xkn&#V3Sw1{p0-2(hsCFG%grn-f_Zow#E!O*l-8ng4$ zv5T1Pa`INrAN-SIXa&squw|R9v8-QRW72y)8KIz=OwdPm7~??1T@tGyd-IP?JFAl4 zBDf17V3=6VzoBH|fiB>xkB4-Gs=gTseTHQ4xeH-B0D~ouFcSwJif3p@kiaM^AHh&I z2lTO{h)w?S$hSs5aECbp5_3%k8M;xT=mP-dO_+yc`=No3hCo5>x8(qaAy)|YJ0JLy z03ho4!<2zF93Uy_parke13hW3GRE?K0iHT-M_WE`b(#(Spd9c+QI?g=ZH}K#0u8 zISt?rjT-aRnl?tuvshiuuKx4IfBDD1AAI`h^YhPs_TrN#j~<`0b%ps8O}#{c$o>N^ zbUoP9d3fx|#0_)p)*8>zPoF*c{pWuK_GS<=XE5j; z9_e5PS5a^w|I~Q4JICDYdF-*CFgf$l9DOu5AD+E^`}Nmf;pKs;=jb0dC+?NeDibs3$Zmby1u*|zj^ic%^M7)IcmWfh1mq_|G9Nz|CA2SC*uQKU)*0f z$F!T%A?>9`!A!L}@x}6AlL-id=t8e&M7m9{5AnM&%s!-dV<_Lj*@21C&tb4IFbt*0 zQc=5NuiM#8uK56gQy5I+(W(QolvyQbvQ7-c5zwh_ayXpv)09fKj4liO`KU8f0CwQ< z12_F72qv%!d*$pxpfUwuMkdBegt~*~S?dA&Uz#MNWyXm!-Yts%4b7G*3442##a&%t zAaV24bCe7{t4GbvXM^Txqx-zwdI+Liqru2(rPLO4!36~^n_c+D!*k8nb+h%Tb1=co zet7_A!IINuZ_a6vMthR|LvNPEe41)ZaUN~<2A1I6xe9SN1W`{@tcE0wr6;ryWSm6t z%MU*&)uQw!8C?a1b@BIL58=0;A%<@u31d3IWgmV@&3q+ETFqBgLkKc$RZ=>%Lj*|U zwg6+lFSEZY4>0}sNhnjE#g}r8QV!==i7B1El)P71DMd1GaVnTt0|{?}9d1eftsjV} zg)>V*e`@wE{M&eLU)=Rj=vTPEs*dAfRfW59+!1GXINUDA7K`1jfW0H>pAZE)5r6%l zfeNMTzMHNL^^pg3sSnDf4mEs<5E+FCp8dHEc}$Gmt|ag?|0{u zVVFJ!x)V1at0@4EjAXW(}%e*|$a6a9KdkXyYC~&WU{^_;(eT_qbOj*uC zP7cN}K~(c)<|Stgr9Ngnk8GBI9^Xd}_OHw^nN(bDlex@5&N3;$=_rxqmyemJ>ess& zbQ_Z_nYjWNoUkiHKE+JZlcOzfy3reR@f3ns=$r?JpsqGVL4@f{eIhk-!o&znU9`FZ z)Y5I#1Bl1iJ@cwyCvIdbUs8Za>r57^ttkl_X45;j@|q;pZd*g;%Sh`&_})RlB{N@? zRQ;&nfu6{|6Ti(-y-co>)wIf^2o7Lgaw|jd*4kB-DAES?GLQ)S8AL6rX@LP$%H)w8 zKth;@DBB_m0y08$N+lPhbEWhhLIoDcLQe);bITXEK$H}GTAd1s5?5mUEN|rlc*B|- zXKhOblb|XpFo>2Oymko^J~6%34`|89vv!+CWSvrq&M(&s@RlS23Q-V=a!4;(S05SNK{3nAr-4-jgskExZ1$1Ni!MEVAxzaI>ydSjWJnpXHFV7NLV#4wSU9| zgFO-rGoCTn8k$U5F1Cu7b6h-Y`H!LjhWBtZPCIBx)#nsR4O}$3B;t0&Zg1Tm9-&+& z<@8{dWtOILx)hgc)|y8pN7_3T7DGy0;0q!MbLatRjviV|amW=1)pWg3!Intp!AOa? zCWg{#&c-A3V{9k^T7@9KK)gp$H98`wRJNcH$mbhD9xm;vbu4AdV5O&5bWaP^dB}YW zK>dbqD^^0D%1;}yyxG03lhuhWg6BG+(RP(@D5~WA0iPN$vgw6w{b-6q39JQi!aQEG zb3n^cG^=QMGB&#)L%UfP-OP1>Ynvd`7vZ(g;UrA!6S=h6l zr#T%l$iX9JrK8!}o(f=upn$ST!>~xVA)~3%6aA=k$0^qpmK3Z>PI9{-)xzkp=SYt( zS$qO0wSzNV(`V=xB~z0i1H6+2&-{a*0veX(8*@%i7UT8utFzJd zd`T~XUwec0lSfC>tHtPYto5{78k8|8xij=I+c;!#gQ9-i=OetnFQ%jQqz_RW-2o?X z8q4;o*I9D|DE5E&Vwp_V$A?G9{Q(Bvc zs~`Rie>(=$0m|+FB-%Fk=HN;=Y21DE0eJFqO`HPo7M!H{X1L$yZAMtT#+~674s|*lr?TDoPeh+=J+n*fpVWXbC7E5XMhyCV|&d6aH z?@iVJ^T=yc(Ph8JNBQgmdsKW(k?C-VO#wH0=zRUOH+=Nu_!9?#&p3HAVzcey>g?_L z`D;$k@OOTFJzmV*E~cxYCRNkOctTy%Yq^E7Icv`1V+yL!>li4Q?=Yg?Bijdiyv2L6 z(!1q2j@YqVUS-WTLD>xgV|mU472g&Zg#b%ls1@b%jbeQ31Z}8_Ps{sJ_j{NFN_c2P zi38m%!}q!vkDwt97cnZQUod=;E;=R{3enf$7)AeLJh^xhJ(Qm9~%6@ zmHg2dh#x4;Hmm3D_K5?1_sPNParfY1vpK-}y2%B$YRAizz%E5cF=OqWiU;i(TOsQW z`_(6%=C6(izeFB5=y2Kb@}PA!UtTOX7oFxg!W4By1i`u+G*Bix6R;WA_EN-FuQ9_@ z$4ujBhHai99D_7dB(ACu!En=o8r@4`J+)&RKA{BLrqv*+iH04GAO+n=&tpYlrM-Clvvaf`55m9+WMaHlaN!OFYv-c`D6Qy7+$4NysFpD8yS{@qZ7^ zjBWcF-v68u-~amkZ)jp)?v?ufwBP(jI@DqJRL6Y#w<0LS_!BDqtuRYFKwTIo4a27l z1)+grcUCw)B%L^T^+5&;zFrf6IxvTs!qTAT|WVtP|B)+CL@t9@OwgCXlFBv#6ZmtAy! z=ngDdF*6@t%chh8uE+}3;d_RP7J!m40MQz|kS||M`K)4yM~n~IB#+MYXe4KGbNNw3 z7PT8Dh@wOx2+;s5T2NHo=e0zv1Q2^gmewSlsabqrETYMXQZYg>yA8ageP|4n`M_~? zN-A2w#gzdmSetpGtJwmf2(45Pr4`uH_&S>*iA7l&8~Icy%N2cIk_o<( z2)y$KOW-wI{jM52UBIGwLxY6<*9ryIw6)5?VH-kjrQxv9N(a#=21dq^veTu5!CHek zM_t!gGXLtcUwE<}_JYPl!kVo$re^qiR2ALpqBOhW;-Q(E+-~b&#tMHnzv^CK22FVK z^c3^hF)lAI^tMdjIoqt^^WJdq(Z`>161v^#pFHdhX`{gr{v)~A^YhO?U$4L5*!1LT zhNj!4Qn;cb0S&$32sUnKbC`G2;xf|dH4bscN2jM8jmA|7=VA%;LNtawY@p~4T2f(4 zrI9QiZ_du&ynXfN?Dbo4rj4P)us3-0=n0nHgYIwNoV~rgzJ^&!CyHKE?y`lTGwhvR zAS!{^k$!*h_|c;W53tEvzj^)UtFHihK!v}*noKa}+o0MeC00*xo5<8nShXZk0=p6H zuZ5TRCJPL|Z!KEZc($9bseK;oB1Vw06ydq>T_L9VK!NMVAQqiXR8v&JcO`U}OEuQ2RbScGx=1=HH$Yxazia2RlnD4IuKs_QrsdPK|i)yYy{`68(~r zNQg%AkJe9iqWNd25Gt>em*jT03|~e&KDqA4gABfw@DELAVl-EElk|Kz!I07{vRuIs zC@O!&iP-#;2yn&X>Y7W^AeepKjCCNfw;FJ-z>4lxG(k5KSY6dJ8@dzsa9Z&|rf)iq zdW|jqn8gIBo{Vt})~z`c=W4PzTdrQ6U*k&Ph}%BtLFhI*+%Pz02S-Ca6wt901Yc%C zMjiAdj9PGbuh(z4`s;b~;_VfB^Wn+i>7z&OewP`FTS0rBW452r19JTs2iliMjp6d( z_z(^B5l4`4zujGMs^I$KV)E<}${e~Be;J3vv~}%m5J?Y3w(YWg_q`qhW=GyTVWdC{ z{VqX%AQUdVD^u8R2dS`LsZ@#G)^V3;?`iuM%rgw!RmNWWfAPots%QU(UWFE2nIZhQpH+d~Ng(;bJb~jkyA@I=I62;mI-jZYEx2tMe2i<69=Zlfe$hjGU!PxITrf0X z%)LbR@Q9wJDH~x_OJ9oOhuCIwiOIzGr`r2-O3qt>7~=Nhl_fl;=XpZLC`Tv04WtC^ z{j|4$m7kUp4KiD{8Nu#Mbt4ksiDmW(mZ(n@c4iIU;gIHWp}h{ymL|Q6F4~|gi~xu`5^;u;S`IZ zJUW(BHg7|uq@($~@xYvB5${0R;sgH}vy05=x_$la599>s767FXzCGIyOCjf%8cB*8 z7Sxarov0MSLI6LBH~F^*bC@zf|5QS}10K8zEkKIxXnO)7*!soKQiUQu)gq5zk|uf6 zz%}yxfbq9=FNEI~YtkxXU?_rHK)saX2irhp-4TCBc`b@0r?TOw{0bCdn8m{V5RmX4 zefRBh;yt)X28QvgWk(A7ylvhv3G4;}NK&~`D=2lQ3SDM!5L(D}Ou^39QSO{i8Ji91H zkwP@^4-Oz*mRKeTp6bv6sPUC@kL~)cp_Fr1GEtydagqcHiY~;$l6h&85DnRlma^%n zk*g|}r)tf$9;U59ME=oN3rlUC)}mLGG)2uQPb9EpmJwYT*wU^8B7lk>aMjBLB^pSG z0A5kW(TSh~dTUIfS=N)6W55I!P%?}*ylB`wj|#Akdezp^39F(eTO)8dyCf>0sfeAd zm|C)QY!3SNrNL@7;IzKHjhEX|f3xmuDBa-j@@zWl;_|u85$W!er;jm}#a{Lr?-!%d z>XNUkBhKm{oj!d0kQFH|IomH@VAY24*~#JH>gxK7FaCIWbpJ3uZ{Ll>t;%rqse*Eb8_ylU=ej1G-79$#DYj(Eb;p+Sv6~mXm`RA)QuQtmW z6^B#!bWdr$JZv9)`m>)6kB;6F&M&+s4t+bKwthlLMas_6(Fy$!`#8Ekx;bFPl$u-^;=6W`vbJH_f!IwV#zEY`M`kiYB+N9D* zTIW*xeL7TKrv?Qr;m^_!NR6nZMjW$XkEATP@=OkK5`eoITe5cM5Qhw zH8Hg89UmUk#jnRx_L+okH-acl?jgkbo_`0N;O}7U3FG-5CME%;qL`)^<3?afGo-1l zDx_o^65RsTgbBb^X?w{=p4vW! z8uBwHxz{9ph-S}ewq$#Eg&${*H_ULFJD)Ws<2ClBIGm!F;jy2Zb?I9e^sPFR5gmzx z1#4~w8y+4_Mz2xGT%2JydO82ubCvjRR?@2&-yq_y719Cx>43JSZ{19#d+;`hNsE6g z0fe{6-;J{=9C*VZ?@w}jNVq%YpELG$Rl>Hn3w&Q?Z#7)`sfyWpW$1DeWJGV^;e}0h ze9gex3@2{+(81H!m93-}laPvC=7c^PwZrzwQRB(O-ePsi-Gf~9Ih`%f&#x}8CU4HK zzWDl#VH+PC$XG|mIDhUR4%)*3JC!X4aRzokJ$rPB&XK(t^w(D-E;Yr8(-{97FR$Ky z_2nz32;?qq;?-$1_SGB*>i14QI(_`5T8@w$0+ip}eB>+6ER>BDL7#s(d-h@h*(p zG1Lln#YB9Y@pg)vzrg`f5xEA{zny=DhMqB$7GzlCPu1oQiS%(LdE2JeJ`2I|T)kJ5 z8wopq{Yn3S;!=uEXVyOGBRm|mJfcN%#_9#bA(#K*l{*IY+-}H~!)T~iY+&F=x^;%% zA$R5&TM;HYjB>hh;s6RllDyT(bjG;9YWBG5xYaI(^+(E6orC@+4bDJ6(Qa z(M?CdhYNIa)KpN*2u&w(xG2Hdtoi|s>Nts*=S;8)x9Y@Fb6t45isY%TIyM1@HJQl>&#De4D&?kWPcvgyx* zuzQPG^|WcQ9$bwuEQaHw9owE;1z>mv}W1}I3pGbq0C&Fi4-0(u{oLTPma#1rq1+M z=1wLg^^v4=+3p-J{mtb!A3PwTa_}6TrVc$3sF6e?9Tw=WocJ>(8p28kjRG3&Ozb}A zT%p5(QPxu2#3n3`v15F*;(+pIxENxaiup{(Ww`;xgqE+!y(+O)ieU2Drnt&x#3EFA zhDz2pGpZ7}*i_XQ_3sv}WmV&E&ya*BE2vU($+M03Rf*bSvP;4nG2{;+H__6VKi8r; zH|e_?B5NcRA~AbGC_t~`@}Rs;izKff#_>itWGP9?dMpjchh>0qNtYiLj(cA~DSyIB zF@ly~zBL586+zq~XV_?)sRAVqfltk0I2sUrI2=_J(5zJPX6&|t+YdHB>5=%QhdHB4 zPycWM2yB|$nuf=V1gLE0|OZppcZ1Ze%LWd)XU6 zGes?(y3PIz`vs_tWl{?74OXri;mN@htZ#M!7 zo7({Oj9^;>1^Us+5x7xb5T!N*CDp97yZGWXie<0F!1C2JF3iUuI9oA@Pu{!3fp^_QVmkZ%(60~%^VP| zIIZWAUigsrM9SLqcgJ-bkoB$1S%$CVaVX`DY<;6z(#RFEuYm-AF=U2|R_;Y$Os2|K zZV9tvMka^bwbTW>V-vPB+0tuhPLy6XLn-VSa&sxjD1j zwE}m%F+n{4nMxhTHVoHhr2v+CKCMSRx0i?N;4WtTYi~!Kh z6bpuecK=|YRUg=+ETjI8Abfx}sWuOW$GXhGR&dj#!$LfF$7Yx7_N5~QY7JUd>s0`F zYXM~Dk_P#|-+lW08Cy0);__fJnSG6mgfV+dsEJTQaX15fZuJR%mci4uDB)HE5&3RR zomRBB&q?XWe#{SiP7{9)F*cmdZG-xqkKkvG=A+awN%tX51MO8Ih4EfCNwns>vps zJ)DtUnc;GNtjNlWjO@StyKgiPwGXf>L*eiyySJ-~1r&h7kym8gckK76c|=Cyu4;6% zWsr`9hr78QYHDhxYHDg~XKYWIq6Aib+`=+COq&_i*(JkhUM@GcE9{;**k4X$6!YqRVcW zmoK@|U3+Mv5d){3a~CT~FqAb8KjuSZzL{a*n$btf3Di44NuQ9R(h&lJwgQGY)P)eR znf|qBiQ8t2A;R+m&2}@Er9{ZO8Trb<`Rv)#(Rdi1O)wd8-O*$;tWv$h4~@*~RHWht zQRqLHoEYluQs#-}0+GtIQuUu-^#AMs{kNri4=T78TNV@@YPHr@<+xVbua|FaR~onl zFXwk_<(+DNyOG-~*Epw;U6ETHRfy+q>I~tqIM0~pRKsmO6L%(}YUYqtUBOJIxz3Pf zJ(3kK3xlC62W7Teu_%I|GtC!!_~*b!**xDU=UJ-}N|gWrKmbWZK~#u;GDCkI&Yf}o z1!izR%@N})&Y^c6^h2!-adJeV!kOm~f=NusE7ja=?D$LAtQ3~i@)d?_l)a3ukR^-f zFcXTWFYtlXV8O97T{cPfk}xk`{htD3Ko8*&=hk4I)s$eh%&SDZ{L1w9x%dxKbZICv zfE9=)gde9i3Wf4kTHM^%0Pv6oHK3y<1H2WP5pfMjmVX4j^G5b5lT8vz`9#TljtZ_a zxeBxb@48ZkRE&o;uGR@Mgk|r32Q_4QmFucpei`VA$U{6u^Q|*lJ)}}3=8$<-!9V>s zYHF(}SGaA20NWvYvcM#$l#XoL)jz&m)gdcARbM>wk1PAJ)n9>+5HDkRx56@SJEo>k z4rR(O$_-qBVzMx9T`Lz2nKEx(4R;{-&FHe3`{v9IC!wOYHaee6+M%^j?V70n9RR=^Y!zhYJsMxUBbz?g%n1<&Ghu%Y0P z@E{ZL8C@@v7_6(|r-)g>pCXE22!mWa;;BkTcZF(-3p*H8QNWYfBQmrPZfs05Bz+zb zpP1NDc6wbN2g5!NqqmCHQn`SwDCJIiLjpl!|IR7NQ5z$P*zgFj0+`Wk_SLB)ec54N8Y@mmINf$A8`UvsYX{Z zH`sHQM4m4$y(f7(37)zJ8G@ftG8#p(aXEq)bQ$Ds=9^{!SqBRijS@L{vr#d>3Fp)$MgS z7K!BiBOg@E&<#0KCUszbjO5Q!N6cC!Qq5}T7~*Jv82Cl|7nhY%+T}DHlam4E#A6X9 zs#MOd{peYsC?*ojOy}%2UgDpSl@JfrB+vbNT`xDaaJ#{VQ{BIygJRQc#kqb=N353s z&Pl9ylq!^uiRh%;>EoKVyXe&ORlIqi`JGLM?S3DbuC;s2VT1MBE`gWrN`85H^6ZE9 z$tn4D&rk3)edq4|oz@Qi)DI62@Zrg6Q~L*p-~Q{@95#qeG5e#VWtq@n4~kw3bV?s( zjwEF_ZL!#F?bP?0tWcGzrN(ZHIqBh@TXaCsiuw;nx1Dx-IvSlmfAQkk^IoS-|6w)j zPk;G~!@GA5?i^tehxuEt*PjfAENtx`>>us#<1qwf0!YL7nT4;|#a-UsZrZ45(lLDN zbU6s?$1i5Dib zssF9xV(yVHj)5_bk)`d;Yu)!Z1AqHx$c{-mE+Pil(hi2GTE^6oL-VvH^I~Sp1%Lnq zDFYu5^knsu&VlWwkR*y!Nk=5A&~ZR}O?5(BJ8JPi^)K>e+ehSJ8N9@##ZiU`Aev5& zZi)iv84I$bG=>wD3yzO~-~@?0qeHrkLJsBv2n+{4laU=i5Drcme(B5$GGQ{hcT zgA+~8*hoG>Q&u=H(+^py#AyIaI%M70sbj*)P8gJ89D~;D_Td)P2w*|289S&sIH0U{ zbOGfkyGnD6>d;ky4aQqk+F?xxBu-t?1y4(u4;I-wfR`edXGp2Fe<(TVQS#P&rBoR& zCYRmI5$<=eHb*hX0EEpsKBYtwtl8dZ+fy>gj3tE{J~&Vep&>WpIcK(=oSa{Fhx_~W z*vAcqfE_Q>G*h$$2qUFKRJt5rQv0t$-v28pkXxYi{jq;HF$7vD{!lKkk*>Y*O(a7hTP&X@Om^5Rj-0t))y8VYw&X&1T))VWsY6HJ!8aUUtYt^8rU!_PPjz$rN zOw5Dd!8h#?1F(anEdin(`}q1c`i*d6NK%X&thhky9Te?q!v z*Pum&xQtes@en^HNH&;g{PLH-{ENT%3s`ET6vj1qth0>jAWN0|rP`qRd8hG3ZqSy` zaHQp8D>p3UM!D+6;;1ldEvMW0+1*-Uzlzkd(4HP9o?jj{Y1n*!JjDeEE6v-LJd562 zC4Hf>m65T!T47(8a|ckQH#utN`GQUAJenf2)zDBQo$;wN$@j)?a>6y>V6wcJAid8Q z<;h8YG?*^C`RR~Tm)STnTXt}yhMdfv75C$@jff!A~Jw2rHL<*%lM>=Br zNl?AgJs#sV-nse9|F@CvDnX*FHFd3m-~a0%71>)>hBZS7N2KAhaK|hk>{E1)s5o&G zbVmAZu7m;aaNb~%=0-8fAUuJvtX{@h{R^0bs{AVOktltS*EfMjYU5f3n<1Vfoo^z* zUhLXn(1+-t%6>74*P1MO4iF+;6wW8dqL3HkV@jDK5ZMWxn;of{nGrLISENJM$#Tom zm?$0<@>~KZAYk`bgz)Bqimex|2B2md8JjY}4Mb59_38}xR^#Tn!N8}7fg1(%r`P5; zH4Y3g3lmM$FhT2g9c=YAg+z$&$zbtTi6`WjHAc6SOqWmQ=*RcEj!!m^cX@Wsf=z z6bGde$^z8TRM&SQa^4k8)OUqbBtJPeY&JkJIJcJX>Ijsxi22q$&r| zfIqEDxNNl5l>oJIl}?h}Bw!(bBzYrI1_`285=WMSBAda)jt8p(8kLaDo^QOT0&KzT z%1Vp~*+*N2i2nExdnU~ynmig`@Xem(1}y100|~E@cv;29syi5H*%b;e5<_gMT>z8A z&uDj6F5*NbUD0O9fqu~8(ddwk6=il|GU!v`bOmudQfTPlun#3XgVG0(iQQ%yox=DG)n3nvqDT-l&E zFIOgH02Namy2EmQ!an3;c?&$(s@39devbaKk7MX@`~0lm@6$(a4R5i%xxUk&=px?E zbGgy@Gkn)z8^zXU6<>6~s1oWiR9|>o3H7p)CPvIVtrq5Jjh!7Px2)WtQP8su1cAO{ zG+}Cc{_^DP4`icaDzk+_{Sef+Zs+z!=N*FFXBCccjO5yhvB@rK7Oz zY6}-mb>?Umcp@?n;U~xS0QP31TiDy%CnlV7eB8KJbYz>vU)FA`@QtW` zPb5lUB1G;!MC9x_5(FV%OZrh>7_z7~b;h8z-y3;`SGaVbZh+tv3?QOxw4kaMt#X>; zIwmHdL**E{VJEArX$^73RfZ*oP?gtLNC5d^I2K(iDlD6zz}48zn`&%waR6Za1ROI1 zVMcL6Lu7l3aiCfe5?MH?rknx*p0U~Ii*Js%K9I%U{@!x>d49U+o?ifqJ;3G0DVfQH zs0k^_pWNMiP2SYs^Z#51gJk&4aBD$6%15fA_Sq7q;u_}h| zBt*1WQk9BXo3RU%|A-6`8Q3LPZIt($t?9uo3pyMkciv%Tv4cVxE{v}ZNSf_0^fjDp zpiXWzv4qy`Gi$#{UHq_adU&u$arB7ZsCUunT=XtaFE3%;r{||HUcPvg_xwXF64(cW zkcv8+Jn%k!c<@n* zTreU!Z<~qIb0W6Qa62Z80hF@L)yriz4>7RmsbQ4?5iA4FN>CE!^f1JTisdbeU`8!? zx(jlP*|gqlvV1#2_nb#%>xrzipvz`KuMVm{DB3fQB`)IRAXXcO=s+pMqHSO$b)uCP zty2DOxvnGtTFe;<69@ z&F9@^?gh@N2RisbPu*Qi+LOr%1}PX?PsYn?g%wSv3P=_D08>y3TIQUO3GO{O-IbZa zoPpLMHEK%{_R;hf2oP8C5EzR{w1aYC{0k%^FQMpH*hBtQ9iOllS&@QQN99;6B^Q>I z`5ua7>m5CnLO9=%766}I^v&pF4Eyv)r!%xs@WQNFQsb;hgY2Wp0?uo<1bPHfuPhb7 z$Qc~!v#J>(D1$(uT_vNAysj=nH{MpEANEV>SGkIWRS}Wg7yC&NrDbGs1riD+M6B2> zQodxHsX5oFe!x2_vb`Bv|5peUAADUn4E!gbR*|6}ajh?SeoODAz|1IVs~21$tF7DNXX8H$*QG z%*e-aLtq?sY*rBJ5JAEMQvDU+H%~Vh_>?ekqk#UDTKlH18yG;p6Y?-T06`CliSxvo zobe?Gnk?#Qld4P)cG#?sI7Z$@@64{l?x2@> zSb*UX8LdRvH#3n(XjAb_O%O1VVc?`wc{se>649bfP<9tlf$4KLbbm5bRPe}hHPgeIjEG5(jvyIw+vx{lI!0>axkfQ&F;hy3+ss4H|rv|j&g$8Uqy-3>jbMe zIlp-Un92pzf02hJ@hK(|sBA11!NXUw79IRz#TRmdwFkkOm}-PbsQj0}brk}uL;V*k z4Z9niJd$m7)F-Nv$Urz!DG81wQBkb<@PfkyQ9BA;^(WU{IWaK&o6K(6k+?WY5lOK$<@H>tm zg=&V0gt%ZGgg6qdB~n>11>6vXQw;){#`8w3pdIU!9zxvrxJDGyy7%?KKmEv#$7NK# zi)FpWS${5%gsG;>A$Z83WE@p+rxD7bU!$Ucz>L&rR5g!&7R~Z-HZG!oCI|yG41flm zVVZ`g{Ox~wTkCQ z%+NX)ZS+~RA*fh}{d_Fp1o4+jxaq7nanamhR!ir>Uk0mISY0u%TU088VxfJ0(YZM9 zcRH-}P*=Jg`+@7l%66%;U*E}Z>(XI7np~WnpKqOTuoRY_qEWZ*bEe9)El5E5%&HPS zl(u84NlSUIDEhKui5=H>@7=>G2PWjKoR!N=G$$(}4YR{D8`w2YU1k0goC zuToR0Dg00F=`X&%A)l*MKlO?6YBXOAv49>-bdib+;|Zt#N$~VCsEAUL=~O^ zAV403Ex^pmR`7S?q&f)%8!6P8U zM$^~~UaM3;zyBqxDXqpf$Uy~$T|eUoD^=6^3`Ou{gdUiR>i%DZ*ycx zA$9F*875%f3Q}r?bqdFbjTRvslp#`u+(qv6Q0c_WEJ2j?m<9;mKnW-7a-t@A1Ytyk zcs2=rpY>CC8?ux=pEEP{_O!<$7b`8(?kerWe|g>!6s8};gLz1pmo zcWN+^S`)v|4Cow_NLj^Nt5&^#bOeWE#|-{GF1o!ofBgYQ{*&`d`aiZ3%{opYs(X#b zZllhA95mXyN7cjIU;O+}K7+*w+sD3=)F(!+U5uS#%wf`{F$Od`k;^--L#2^*BSmVq zH}(s~7c=0#Wc7?*Y~)m2v>;z-ID%*@F?B0%3c^@?@k1~X<)jMujG*TN~KmQcUWHTtLe_Oc-<;8D6vP- z!JN_&r4ofGPBAQU6IezW22dq=MMj60Ot@w=rwBsI%i@SlFD}BfCddXXvUPNYrtm9` zY{QVn9x?oK3~f-44znf26(ihFzph?T#V0D``6w z3U1CF%HXSLiXLiqSxJ2S&?_nvH&R6AADZ&FkGDeRD>;FXG+3=4QUuT)Bho7)*(<3( z!Yk!QF40t1`K7>(_YHK}3wfo*aPjBfC*EF-f0go0Po}YF@GWaaatMzsE*LRW;457` zHv3&+V1r2sZMv>LTaXFUKf>3ad?0a@M=B3!VXcT>%%lXKpJ-b-OM4@Qj>t)|jy_CD zDZs!Lv~+kx3WPS-x0F*-V?+$f+w(T2aNHjJ!@Pc#jJ z(YLwbeSdEs(H-`HbIcmP_bQb}a~Itcvr_heVP^+h)ullaPv9eAy{2b}#PF1GL;azi zCRknKyh%&4;-;@+9!3;wEc6@BdznmgAuOV6plA*s!`>4G1*|YBL|~Z6_54GO#7*I3 zIUh~&k=k>&B^DkO!2e>Qhcmcv|Axhx;v6Dv8Tl4JcAU1eEO0Oi8_0vdl8n;}QAyVK zn6FzBHhsEHpkfKE0Gd}gDk-=y$(9ETIg(_|e3e!$92qe&RakpqODWTb>sR8}SK%QC zkd?ZKxIzXI1`0`n1LbBS#44*$3W(WEo)8d|5HC(2G@j}mLJ${}ZW9Wfs4!1ZuM-dP zO9+)F7_&JQtT@)=qIyXGnDvD)Xk96T{4JVCwNz+kL<&k4>gicPDleP~n4SwwP`K$J zT7uK0QS*3^TGC}j$TZTVl)R&)T~#k30(d}u03lYzjjBoXObawkxC36!%V>OxEU{qq z^X&A+U^qBCJ2~&PiN=-kBL#IedBQP|Y;>nJm&@LuTkJATLjO~~#Xk00t=VkS;)Fm- zkd6*bkgljcY9tY1-&kNGhW1H2dm@o9P?Ot=fTF4(oYon$O;w9B&HM)=KrLX#GnmaW z)oksc;W9_0w;FY4;)(YeUQm7Gh22U6pb^M-kCw`Du;KjK$p{PLE*>yqqXODl_M;-T z(kj$kp|VoGed`#{2Fv@)?;n2O>-W#j&)OHiMm=!r^!)QL?l+n{w{IUG9^G!uX3gea zYxfY_tzc0S||m_OYHW6nAQkYN^5w z>sF&ayxbb(OG7kve4dT};cx!#;cvd(sW&i%#&~&u@8IXZ_>-g0KF@#ofDE2I{o%XE zk2ow5O*8|5_>&Y0;|Y!tTrpto2s)u%K)`)(Z!vrL?GV-C;nC54YZoK9M?X9(rdp_UY+S)s~joRk>fBgaSx_f-Po~t~5{OIWqPw(EnO>#{29bM26 z3#{;V$LOW8PxshWrcvq4O@=8}LdA$2fiZB3TXcrN7_%{2o0%Lo&$g_tGA2|kgwbh6Z^U=$GCaF3w(6ywgPrqs4?PpR z0-ioUJ9>VWFYj$PmKD8J%eVsX_6(5b1*ZdP;01VD@R(^_O$RSqWC3XL@gX0P#!UJl z*Sc-(ha?168DrKa+3$yBw2BkS$tvZr3cdcjF7$fvk9Y&HAbmSQl*P~6s+?+*>h~jx z_${MS>f4K4A^3e|Z03+vBlXOnJ*%8OkWo}$&g~Oj5^8bSNgC>`6HBk5E#ck4B}*0Y zAs#l-xKk*v_qIm0*xYX2+TYsc&0aqS7%{uJE zvq$tA?FNSO)^>BdetUU<(vaOC>?r8=2kk-sg5;byeSUgAo;)rTJw6)G9QbBxu+0WP z9UNi8zMPMLy@fcGyZEFe6q-ku+eEr#6==K$$+cz+%G>%1=&>2@ z5f6cw8H7Zo=!M+FD2HEh1|UZLBn2a(QnRGd4)YW04m2DgODC-Tt+Hs;72zs4c)I5L=uti9Eh#2z4Ra>o- z{HO;qqYVNn84g}aZrPyBc*fc&+=weYL?;d2w`z@7vWduM5&0xSlZ+B36BJSXXaa;E zq+aNZX{_V|;}2#Y@`!yzM1_4c6M2)RkQF?#a)K<%g>On-*Fp%SX_M3OW+l&MrYF;n zW0l{f5phbE>_s3VBpQ7@HCT*x)`d1wDIRt_Y~Mmy#5!<5l<+htO~; z8d5)#YyXrYWnb5LZSXk4*kzfdRyYjC70L%L&&%Y3;G3S0Rx$y;uSt{WjX(%_ME)zUUENS?-Uv$3$eaV0<0GeW}7g_F&CiIwuKbRI$2O}i__s~gvu2&cV#4}VX3yNpUvF@$WVL znXG<54Y62jfTAloKab}m&uJ|gn;SI;C3`J{!YIPIyjJIwK~{LSC}3lm=TP>1krfnc zh0>UF+6m2-+@XfKG|Im+>6{62LkzW1*pOPN7V)%LrXQk6!c3U;71{`Q!N3!+d8f0V z6-v0vU^(Z`y<<-3q)(lnpCccho}E%2J9Kk-d@&zT0>`o)9u&5>S&PbTRZIBL#CylE zpGSqvS`H{eLk68N?FZwy>e)LuKsgR_RBA4Bz01oEP7QFLuvnrLE*u`9JsVCilb&?X z+Z?Dj+UgE2E-zl5oiv}b)8X#t_xEofeRl6YbHZ;Pev5+?c0lNuMC?&@(ZCM^E`>(R zWx7?=o)ZteS271$niicp=GY-^Un3velq@2#?e<$-R4|&`?6Pb9unPDnzqERPGVAn4 z9IG|#4d;_Z>~>_&qrFb*bnU~kU0!n9>&0^dPt?&&{u#+YNY!N%`zd!8g~)`Id`cIu zU|BS&YhW(n7{?@*4Y;JZ_ChRhkuJCGr?%S3yw=`kG;5a`z&4=mNX9Fm z&|85;%`t@rRMCAFg)!Bm$HhF>Z0*WXC_DAB9L8~{YaayJx2?A(b`1TC3igxunQ=vi z59l8z-ODz{`wU}I6B58jN?7Mjhgi;u4YUHNHyHC-1fqY9r}JO`^Ecmr`w%;w&%eCC zv$Oa0x4(Y)@X>>>zHBxR&f8}(;L+O(bX`j?6wfYu|Ic6l{oOlvSfkAjCjcl|Or?xE z?Agh4SZS@nqA5L)B%lx7icSOAOmseSv6HnYSdJV|bc23z&r@np60i%Qi~>4M8__aX zNM5bfFgH{i0!pYaV-*Y%i`3i42lwvYCizagS$tArKSFc6^z!ubZ~p#Q?f&ii_jV3; z+1!LHEf^bUp|MafO9nD5cE+pe#^x{wPH=NlDlDp7GG7Le*rM)uLYIrSThYqumrv1> z0Zjx($m(-~(l?>CjuP*h;;y2-`zcZdy}T)&AOsROKfVIS=BM@Z1|()4aAmOZY^5Vx zK72@SWV?}}g}gUaD)Ei*uYufrcqRYMPn*y0Eq60A&sNr&uIkH!Xvk2pdV-FFYey`< zIV|`wD{d7%y#gxZwcci;>#}I*z6zL9F1K6G@0Ba}o16%}Gn?NT&ljEX_;N664+du) zt(#9@yvRLA>x$RlG79J&tee?vQ?Ie8Nq=LF^>Djh!2v|>5SHf_1v>Y5)}M?nyMwdK zE<0wiVP&BqHXDo*G+hW6gC5h=X#@9&eP5L z8)66S7@8p*3`ZjHZJs_y-bw2fO&E+pR(YJG21IFcS;pr8C-Fc#|fx-QBl%HjNlg?u?{r!Y{rQ0kYjm)8ty2* zG!T|EgwG8`5>&&vB5tIqJ2tSkJ7QhBu3@B#E}Y*9f-<&0HND`we0UwrP? zDR>X!Du)eL7Wt|NLf}K19aAIDZ^`wy%DKMg+bo5vryhrU>G_yt$(-ZfaC>$!`>OJP z{rN8$VuRKbr0|u1HINhVQx9KKZPG(lGd}Q%KTxbfnVVdU>TJZP4NRYYOu>be7!P2V z#RJ*~aY_!Lhzb{gr#DqPq|Wwt^eMLS*GhBTQd<- zlqz*VP>f|{$7DP=)wg?4jY*(X+m3$W5<5QctJ`(=El{|q(^A?=kMkY{XgZWA9sy7D&@nFJcXVnhr za!#KZbZA6SEUSPH=1m>p$NE)(m+Dw{hU;fsUDs=R3#BkT{6mo)gZK;w)9@*oOw6+7{n@owcy zEKTHb&Vl!4WvLWh15M8nOBZ@O<`0@Ax?`0KT^Gigl!x+6q&Qs=vlKIlIY(fS`Z9Ua zPypRA6C`xXP#4l)kzM{+xQxf7;7FSS?h)CG0P!(<1b7dlQ?rj+393cCKF9SM!Xpkx zCNs2LuDM{%17W(1R8A^gEF13}9}^3>Kua7I)ftT^jYhXr)}@A%%M$KT_9!;TsD6x_g>XoIBH zVbDU-6=7bAOGw0IH@F&jT93`?&VaKI<5Qg-cdS7%RJ{SN=IcD(PcmF#diXS37m4Q@^ z5gjt?dnk*UGh?F?a~iusW_aX~&KPW0r4SIV%`D`{oQS~}8!xQ9%+^MtlhCeMw$X-W z0sX0HkdI_Tk`rvpO^^a0t1=ETVYa7z8g=6$Kj;JXGDOVD1kQD$qp=YoIyfUXRD#nA z27P)eJ;*^p3!7jK8Ob;_F;9{kX)g%= z@#DL9@Bhiq{}_rpmkybNan3DEA`JS%fPK%u{L|OpKY9*eTPT~WH5?yetGR!$#}deQ z-+#Bae{}2C9b8vYss5-x==IRB1ovSZI9@&H_$FxX)a}(&6f}jK3^*guU$#4(&spM7 zQk26CKvWJKaYkaj^5ugsIj)m#U1V!I1G;RHrpz~YYDb5Au}5I}?RP(1ob*sxF*KZ< za$qU;+Ly;i`}dCy@lF6XNdy)ge`4>F=(3TD4)QbtvrIDL$k6f(3qg<{YmI!Q?uQ;yN~oJt(bG&b!!xbOvF;23@^vV}{xgxs}aofRR z3z{wq_p+KV)Nue^E;Ut->u$uBMdxGz4(DjBCI}!lIYW_7KV&%}63Uch7>a)KF9HFU zQwu4LaDRn{wPkirRVrFoYeMZow+r?=s!WrkKzJ@ZZs+sI)$(w@JYxmFUgZ!&`Ia)A zfXECSv$@apBuxU&8U_?parv!4C!g8zSi)ku*utd<`tzjh6(K+=Dr|^!MVR67k1u@Y zUqpy+!fwqN%@e9Jl*kMLV^iu-++#Ej=@XHUN{K?+S(k{)>wG57WULl&tENVuT{{*< zD%_*M@>oUYEJhubP>c{N6xvVaZZbb&uPMgwZ@Gw0>kO`zbVz`mOe2FWxT(kfP=h7o4 zGZarm#&;n=Ynq18fEdmS2`1U>En_G~TH&vPPx!dh4e%cGGP6=*r`sx~ku{%i$IjrE zBH!F^Fz~5i;6?%cskQh`eKQOc8qKZd4w|lV8Pn&(YNfheZDA@Pzo<;v@DJ}&CUK^# zWUxkDVzR_aA@C6%WM3FQz|iuASsAkz%p}w`uT!Nsxk{QhbI-mci9`OZ&Ixap2(B*E z;)EBI7c|D2VwsOTI=FcJ$`e%$jInPRPe!=j80+B;X>)xECvc-8M4}`MWO$e^dW$dy zCPPFwm^YTwWR30fPNP|_)KpOyLfv6$h&TLG%85()a0|DD>PAr4$o11jQB*{Zsx(R7 z%1C?yb-Zl=wTA8u4jszQDNJ6!IC3lu9crY~|l&JWuxd3B8 zoWDlw4UEjmFawF7tTSn}Nvo#X|H)v@{lN5#4MA-|ui}?WsWYU)b1^4v3MU!&o z%pwW}CYP#yMngOqqK~ShBy+nxmd@m&kjic~CS7Rq_SkF>9?*+v_cfXg#%QZiTVr0< zL)V5m&tioC;3?7_bF6aJ=3>4!9-fWIy-phevfgNX`PCmE9Ny}7``>=|@bR;!7?I^4 zI(x<6I_ogE?%YDWZ0_$d@822j;RL7KKER0i{N>C3r8zJ~!uXWFiMo<0J}An~TlLBo z^oqLe?8V8`$4|z+0jR-+_MKa|Zr?eY%%%??J-X~%_Bb=KKZG#3&VJSV{^aEEfAgFF z=|BF*@>Yd-oJxhN4|ktgORpvt839Clhaiia20J*tnC;gGd;1)m^5ADbd-&bM9?nQi zPHhzG!M2b5Wz^yqbBmk#1?@$~uixwwL`~;O(qv>AG`PwP8i;=LddlB2goeeFFRLii zAv0?B1mhTish5tL?SpBaN&Nz%3_0o+As0IpkkX9^cXZb6C*ENK8=))Uk;!Y+B~_jt zW;cTZoCedV4!Mj2^hLLP#yARTJHl~i2h{d-krX&Lb^4nni-2a_=~D>9)Rnl>Ilrb#G*_4sdt*sPEAGK~IU2t>xnR}g%P+pz z+uuP~gJbdb$puQ4r%zjZtp=^DhYd9=d3Z+^hoYtOcB93&O0_OO-~zX0QT+0y$9uBT zoc%b^KZgaOd%HZl`1N?)V478+&_(<70(JJm{{FoOpEdWIj?(OM;AAaVi(oyai?jCs z_p5JCUYvxABwTucOW?T7w=Y|}2YW}i4mhzbKuWE^;KG*Ng}Uit?c1-PU!H&MZV#G& zT*Q6Ic^5DE&)b*1`?n8o@9*x^@WjrJ3ys2qihzKwU?aNm99_?3Mv6gxfTpin!!I;j z(lr~jBSuSS^#3Y-r%v^1sJ-hg30{x-2NDthXF#Ws;`KTZ{-%0?gsZqjh~#gs)*4@% z#l1OdgeFMd5#imRuE2VCyi}IMhfisYNGaafjGGZsv~?P?px1Aq(<|$K9g=f*H`)@s zB%qtr^np7gkxCCFh$`e;DeYDo81PTFLBv{=V1 zTie_FDy7*SfP*UXD^yEc^tIVe{qE7;WOmGE@Bu5hzuyZ~udz)lbAdYk(lfB|&Zx+^ zXt#U&mGWUQM>r?8gSgp1cuM5yih_7cQYZN-tnoi|!Z{YBF;v_tnVta#W~PY-=j<`O z(!il-5?qLN1=8}bb1aKr4K9aR;C%|Q>VU&*Ho*eWO4cB4Q6Z$lG0{d&A833N5pyeO@ zkHX~zI$V+=iPa@uDrSf_Za!S(M#Ef12WwUhGiL~m3>>y1BuzOI-h?195MN9!0%f1J zP4G}7D$tUbAgk(*D=I~LqZ=UZ(u0w$KDYF1`^h^~OlJ}s!vVDbNm2rXE{(z~vLxai zBQQDBE%+)tOO9iw-(U=Y@jq7Rn!zK!VxOH?G$8>PL>KVF`+Ls83&ULM`Iw^;~#Q7!GMG1wv$tKiCk)!6%%uFwrAP&%x|}j z=#-*~nJx=`&DN(kdQ!1PhQ=*hI0n(6YJuyq?0#>%IP$8xpNcBKU?U_&EEKn-M zi5XuQ!_|PhL?Gl&#j%M-unVyf62_w-(`u?89hQ3PX9M9i28bvx&wyR2)Tgt_a-7-g z0NBlSgMm*918d#ECspg4%HCig$Mm>>cUjjzx7gxaz~-t{MVSKE!b_WW00>mLOAA9Q zIAdC;4Q4C$WU8`WFCP_M)J^b&L$jn8i3miB&u}5~3nmBa%p?}Sco7FqhHy+CM1fJ^ z$_m~Y^Ls_Z$e*uq!6W5=PNLy_@JZxs(xTBo(UCGlDj}-RAqG>NWh)k_4WS5%I>8qF%fyN2Lm1#V`^8 zCPbuQz%$gF@=6L!FWGa1kxHQ_(x-B`6W?cks3O@W2#~0w2-1acfPirYq!RE|89tFi zKAFqRe?ZX%r|n)ggGalqoU%He-g51nVBg`QAG6S&0p8+JRTx(=xk z^P-XP(1<2XHJ?;XKL}5{f=^wc@FaE4#|z|KUQbIe8qL8Ln!IYAS{`vXA<2{NlxP z49~H}n2qt!xIhlId!hC!m-bpMsz^02=Uo-}biTqAGd19P`0ybI!R;QPPiO!`;oPP{ zOs7q#$Sarg4jMHukCt>a9^pBf46EBU4wC~9T~1|0$fq!nV2S*4*-oqH^!7@|SFgl0 zdP*1htiP?oY(cIV^VT0f+5?8Lm;kc0#s+8HzR*?E=mg=|ErNuFD_{g9B1pQbjRhfaRgLF3D$%Q=ur%h-0Ud=x zktBfRfD&~oDpekx}Br4N*)%z5IS0c7K3Y<2e(;lX`t0oN*^A4|3rvogaP9ByanxqJeTnHlKrx(Q zEye(d<{E-5jZ0Wgmh}v<*l9Ic{6N2n1hzf()+#`pbiz z@@Acb(JXofwu(4Q&DW-!*E$$7m~to_&bkukU~pMe)@y`Len28P>rc{177&l?4}TC3 z8Nk4@25uAhp9JGop6^ZmBceuL;xc;S+j0)XUm^c((OwCUZcM&0M#MLtuimogYZSeb z{N1l`YDWm2Bp^ZRVPUr13hjl*apKtC6`Zi36&rMZ6fiNiVJ?e9v{t=#&}=+7zJr4` z2E(&<`|JX*(S3Fmq%%5ofP-apt=eE0Uwz9%2yyw$`Y>xOxRfg8tCa;d)9(iIqknxH zuIykAk+u&RH1bXaDbi|8K)b&l%R5 z8bcQvcW(dB|M`CbGmOfw5DLj5euO0lZ>h))ufEQ@oVDL$H*79wMLQxco7bH`0T3y1Os zm;>Q>jJB4>!Sw*;BWf{U;pAo%UO1r6#o^>=>?ZRnMkMtbl08PJ9v^}B4fIYhC>`Ni z2wz1i2gyZd7uiv^MOe0f-28-M9+kV&r3f+jL$AnV6?v5>?;s=PvmRU0gYo&mpWM^J zC>|(hGV*9m+tLi`b=2x~6U!GYc}0C=5#zhG|oVR1l9J zdIKEjz!rM#icgX0>z}AnP&Hq!)9Gtb-x3hy9KC~*Z5oN+!63*o-BVJY9a8v=1(pwPrWP(tErEzh)PFCis zGc;hdXv-EPL@KqwBNn$*3^V8gseM1yg5r5g%4?oCKP5~tCB}swq8IQhjIlIGhqJ0; zMRhig+^dwPTo*#5t-&Qq>_0KpSuTJ0;n|)0cNvHY6Hd=za-ziGq7y^O7%COQljko@ ze{of~`Al8d7PnFs~ zV6DN8%tFQ&m(Q|J{?u+DzQT+B3*7-9<>FkKI=GCex`NSzp1feM=7(XQq*T+{~Z<=Cye# z*O>eDYyIx0NGDWg5y^Q@N&GB)DiipwY(kmbA|Aj8GUHA0#!Sqb|Hh9zkqNjIl6(hj zlphqLM4O;k!4fG_tf-2)ikxUH<*PMltCSY8zEbk^8bzgmRqkeHNMI-)LZ+6g2&9&Q zSIGeo5X)&fDG-$lHuRHryWQztBHp>cjwFU=8X}pFN#vS_9tTO09gWD75JqKV1AtWM zXN0c0h5!1a8M?uGs{hS4kK17Fp=l*9{J9A(Y-gq!ic1qVDqq~3c@;NpS zJ3CDjbY-lksO+h8_q9l<4gSoB=w1^7!%Lc(i|nd(Z8`V4!F$dTs4B z%}5XF-7v`C2?~#By=iflqVDcso4Uiu@$%(KTF$bM7*(?2k1OaXp5Av$@r{*;?6vp? zI|@3@_~_T5gAvpkQ9~6O3vzK`)|M^^;u=oKnGaaLpIQ9 zP`uH|lIM7cQG+1@rGb-=&CMjlLo*FYk+(jmDcKoKbobO!J`?JxGLRi+`}p9{S$kb0y!0sA8 z;=`qVdX7T5$OfHCsgC{Q!Qnw`x7BE2UkrI|-8Qd$12@yb)K6h=Omq0|Cc& zVGhMql9jC@o(dj(b-&qcF{yoVa(dFmn@6v@S7p}@wsO7EphT;EqgsVy5QF$z5UB;QGZgvhvxqw@iwa*_*`T9RnRtLzWVKb@2QPqD2u46 zkPS=+&0n?U`|{iTE-fj8Xm9Jl5=R;2@SDLKM1tx@E7veum2wpA7)zlRXdS2Iu8**? zgNl=FIlJ}h{iB27Y|gsKNvCsxLEv!M8IDf7gBR_tCbY$3tBTIL+N$F)y58_`T+SoJ zvf%f(#hYdodRuGVSSwT#$mcXXGkk_9yos#WpCcc0LeH*bww58F@-<5z{RIDrWE0$Tn8`0g$Z%2UMsvj(TS$xn_-dOWYaWvn673pDmHa zSuk)(6aUZnjJD~K)?{93#9`TzThIyFDbc(DyZx(Vp ztvYp>jCn=S^kM@Y(FMm_^uY}J)sJ)(fOE5LL)Kk=jB5BjI(~+S_#tHD68coRRI`mw zKm9Sml`t;w`H zlATA*6!WWeX;VNh`z#f%4r?KcTISJi#;h? zkQFd(5gP#L`6O{gYnhAUKP%jE*i8C#bHBmBCxw9<1@tG?+&7iI!a%dysy12}TY0t- zdm0rD0?-mNKT6IV+=N6_;)ML5#U4?(uGn-ghfWQ|HJXjE zG|Nqhg}mXVoI*;A;g6eV%XwMV$dT;R6`&D|mLV$219j>~Q}H?`2!4;jn?k%t7%QQ1 zLeG3OQaoZqdelg`Ou|^0-qnHNGuMEjasEv{QkQ(P97dT{T@k(Vo}hb@w8F^i4chUN$uQ~CTVUGQxvTl zC0l3#wGKN}(N~Rz5aX0~Lg3UcXTCrsgR*rr#WN-QLl4WISV`Bx{#R`3qL+)tbbdum z_(#b)(6B3H!k05Hu4sC~xdJ$xxnKnvdQ3!BG0V9>^HF#b=uf9xL%Rab+fYRD(C>EZ z=*o%(`mLzqpg@c;$f-Qts@75O;sa$i^0YvDrIQ+3)wLRR<@^nX?Qy$5#cR!Ivc227 zeed%xANizRZw3y$qF@W%p3&V9Nm&V~7R$TM!+DjB ze7MTMYI@2>Y0NIrq@ACgV&Q})5a5$5UpiwndZ10bf*sl(d`l8RDfr< zAMPLRHg~A`(2|+0>Y|y zu0DLE-^;Vk@S@9kF3emgZO*1s=#vpCY5`0!HZs+8EL6s~P9SErw&%=5YLqAwVbaSv zCzAmkC&&)4VnvT0{D2)X!aMUi9mCk~t+rzXpPV=u1NX;cR%eLds6}CHismRgHO3GD z`D^Bg9u;i_-G^u>g4Cai|3uhQ*Lp`Xs`?|>jt8Gm?{cot_i2RMS4U6bqu){;8 zf)5*Ff+@Rmjmv-*nIlg_gU#;K(q*TW(Po>0C(0RM}#UE3j;>**E zzx&m%emFa+4Jyr}BZqSI>GRn|uQz!#9`pytw+{DNtwGUDpX5|YIhYNP_Fc+xosLnQ z^BXJ4apnTmW5^eqfhC~kDfO?b-*rI5`@P*Zn)>xJS1`W*#Sp5MDz*9f zje$fUCZDcdP=%!Mt}BD?jc~jId1UpT?A}$>Px}U8r+P{2mc9=7vH6i$!G;ksMlcB@ zWkC;<?>^JrlZ+_Zdw09VB`RScBgl7 z(Z*wRpHl|f-TuYJQ>^=O-BzuzeSt-(o%;5F`SU+YCI5cz3=@GuD*)sS7MWz6>O~Nh z3IoC`cvjfXP$b@DSYELpOsJ#c2`ko+_dvWrgC&37bGR=fUA6*~EC3}aa0NK@4jK)HDa+w2 zU7$ug)+&QC9VwVqtSBfPz*M!0ML$ap^8c(atqNF`!*41S=StA$HNdE&%q|k!{sI{o z0A&diN*zIHA{qX{z*t(BjJ@u>wI`1b6;t9T#-Nt+F$@v$hWCL zp#E5wb(9<^qI20{?*-1~nb6Q2m2!oR7On)q7PnORqxB~)6srbWvedD1u7Hz2fYnJ2 zeT3PW^s0cgm_W*4p8CK?VXi7}@gPY}W<=lwa5%1%s1S`4pOqevopD0~sHT={nG z8))!QSt-rYSZT3^EUGM{0s+BG7>U7_W%4Q_w6R{T2WUQEAIBOtk(s))+eqJP>QJLF zfhM6$6xo!TDaZkmpSj2y8E8RregZ10Z=qBHOHX134~|+B)n99^_EMZEA*P`CF$0kp z$cf0x4CxA#`bG-=8Gn^VEF<0n4PqvNAco6I`@@3~A|Y~#|AbH+vAh6;$~*i+*0=4b zhf+)y9~jvz%NK-M8`ly5LR`lmIj>~e$RxowxxA$*l`7!Hz8Qe>F17>m?d)mAm+ zQ$U&CDZp3%(v4rx<1@*5p~a~PO#r;EN?<^xrY90G%blV5#=kI!+JWYvF+V1hfOgd> z&M=@8fF&mpDA4BMm0Fhv$PXnb3N<2-tNB9?0SSj@6lT*ho8R>gfGIUm@y$ynF>Npp zg0fsyh((*wAEHv0YkA;fec6JEF8C0T#VmrTOvLqf2p)9-tU?PR7m&u&{1mabP#BJf zWJ7w63LK25y}__QRz^lbXHSDAFz-Z@2Jl!92_Q2t@>Lz(yS#k%^vQO&gG^c9*~d{F zM-cAr?BaKTQ`630JV$KpwmZ+BJRkJbf9>BoVv&aa)2MIHaov;05Mv8X^tjib4RAO; z^W>`61zmM=s%Lcze+gyIP(;07si3}R4|Q=gVL1pxj{WKEqJvv#tl0+L z4i0e7=~|2)$nUf9h$eOHfYEN;(g4YomDp%x0r;=guuOcloo^ z;c&zmlr(_&O^NL%Zz9N)?ZzGKMp-FoYQ*ewf+2uQj~mH8#v=~CIbx;&l}WFX7}a$i zo?sC!YsAG}(p{m6-xwHZ>TE2EE=>C~eV4eks38F>MrIjHKB4ysMUh!bb4_rEM2~cEFo>x>_IT8WC&~}IGd2VT$N=JG(SA(EW)H?<)D%)j74YJU zmg59*B{KIQuud|Y!CJJNRuy7wG|_a-?VTo_jfEmQ`e3kl{OI{;H2LG7e}OAcd@WJ} z>qqo@4mbQy|M@@d9`66uU;Xv@*+ma!+sl)?ckaZ--r~!Xi=NxA7Z2{<#ax>H0!H1$ zFzW*$_&>hCclXQx?d!)+et7<(-|zH$1Dd|cAzk@Ge>{8m!^^XF=icq(d$$kq=xT%O z7D(a(3!nuwX>*1DR@{rAa%TU?bXc3u@wbcncMb!C0lQvHwMZ+4ill$rE4AipFuW4{ zZw2WqU|a+9UEfv_gH(SfL(Qs$>%VsQDDE1QydLM3Hxk$<>=At7e~i#U8S%7=P7I>Z z9qBWWjqHu#%8!!ylMKG&m5AGeNnepy{iTcc&GRR6QRx+V)QHV121B}-+; zT)-T-7zJn>4WX4okh9A>mEwM_+G3@jMMHLIO*y!m;a}yJGO`zusS_z|GlmA*%CT5_ zfGA`UD6Q9UXVP3mHqeHZAQ<6oF-9ZgP{~BqGcpZIN4~-jp$=pm*US*Obtjc?(RX`Dp=s?C1e)#ZUYncNe z;Xs>keI3nyd+U`*-nw3+^|!{~{1C)pV+VSGhybTkh~N?mXjS@UNY;9WWk`5yDc9U7 z6J#%CP?(5kyiMU*E%Hm571v1&U2EOU6=0mTE#z2BIQe1+* zB9_Q$^9IS;lQj$nHJJ^$&63bXQH}?`dzs(*B?aBwZ!qx5VBkgp{mC@-O+~L`01vR3 zjKTx4PeBrnDFG~liGVyQco#nzs|bO`^suxfH!Es}tqN(-5)m^?BcnkUNQ$F%I+DrD zl_Cg(=g7chNia@k&FG(Tm_Q^{$*?Z2n5#3pS8o9C3l5IDK{1SHG!M*A)T5v(4jqw5S#xeRWp(#*g&MuejFeIY*ke_u-%!9%2sh{jQ~Axn=di@J&;NVF9CDP*z~*_Pvv#_>xeLSLYLFS;H-@rD07D$q(d zK^aMqIFc(?-T9fB6(*aQw>xM)RNY*hup zNob7X(<@K|Xw<^kRwh59Bs4mrn5ox%T13gibayc;tN!8(Rt@RcbY)3X38b?!oX80} zf~FOUmau|+gM^&}DZM)JBC6)3LaI+%A~CZ7VV-)AxdZ|%$vEthic;N4K^?jT8}l#< z+bcAC!_g&`$DSAk6{_(Ht~SvdYconiEA%l{3jnPn2R8O*r_Ww=J3Z85hsVoWovCSl zr-|E*3cxRLY&+;Cjcl`RLBw!=od#@$_^OIRjw(YFv`5 zL}3Q+y;3Cgn(4Zph&&*}56kJjMZFqfJcOXp?1$F~&1slZ+nq3sk-V(^8mvf5Xa)*k zVfLjKASlspE3I>PqUZoT({veE{i;&=j3qO)26@>}Nlix9i;LDsr086j#(?%Y2=LzV zox@v)WTw*Crhvp8Ak0C}FkTLsz^LUJ9xCZBW7X&8x0*SMRHLLJf?QldwByhhoKg$4 z6QQzRmdETfU~PhhpGfb@8F4j-qZ-7et5{oC_-v850~KA%Xjam%kp$pkIOT;1q@rs` zXZUDOnMNY(Po2S;qm6xrJ9P;~8I_A_i!Hk}pQ03=MMW?_s>;zl9F5pVckA#C%(>Eb zVXKDgR908Xh&{OT#c(iv`Rp7>|LA9*wf1XlASZL6W(kc>_KSb_^T}fNSO4w5_xiX1 znsz$esAzeE$ZhpIND)r`!D~)pFTZ4`t@(V zef;=)s#UpjjB_j2%vkJwe$hX>{PxA^#UFis|7gEicK8W$K;@H0Txw0-WQt{c^3rYl zLsoOf+uQi$VE6%eyk7!pu!W5Fq_T8fJ!Jv^CO^^G|0X48g}w)X_k8{xK>m7(c8hmh z68UP-c~dkpOl@t>>7QLOIv(5<5{lc3E*zzJX4G+z$hwi1t#)U6;!%&|*r&hfsbe%e@Alg4lIV5c1ocM`6DIzw zxj$aiN&i|7J&dsKG>8Gmsw#)5Y)AjS!j!l(2g*ix^qG9y3dx^+9t`ZYmb` z?;nRW!%lcalpHFq5Dqv%82inuqOXcvKhe7pIjjm}V{v<{`ZMZME;9JSM^XFYjYy?q zQ8Q%tGNmzQFv(G?%0N#&q4^+XNj91;U<)wch;To@>!NPv8zW?jw<3!*;u8|$WAsYpQ*glI zC2(POqr7WZpc$y8X5|qgj*_q~4sj7)!3haSLj|p+0wB|HB!$&#B^S1IqI9ebz zUd%zk5*r9G(4sBmRcuT#2BGN@Q=#AJENCyfj z5J(7n@j0Od=(CoIO7q2E8#F^TFN{_Y;W|&zOHp=o^CfcNTT&70>vX*NqNfhVZ7RgE zhnp?Iv&qdPGDuKGq6C|e+*~&p_{1=9qk#Uz8vLfZD-57e!jmj4$FstM4aG@NA-cpo zoQUugIlEj|UJqZ9ZzgW32|?mhd^VyyiG=C|h#jH|OlwsfVgfI4&6rIfQNl*$+hg|6 zkJ#jkiXvo6jV#?Ct^(QuElf_n&WKmoA$leS9T+{5N2w?YR7yvmzpz0Bgm=qlVlMbuWl6pZJ0R1OYCG$6g9g@?kh{@K6mg5%- zNd9awGDrGAq==F!?FwdudlC?0sl=r$Y@ewdOWz^Epc}yik{IYIDAODyk&R112~^s? z5QefX*Qx}jIyO5QtNZ~FB87|$;ZZR@Bd+2Nz-0(EXQLqpj-6dzo}qT6&iK!;d5jEY z;dnq}`KZ0cQPOo-h-o#XQPvXJ(dq1p3Y8!T%0-WfGgvXV!28~W6TndP6e?AuGsH_~ zR!;B&N8HdWMF}XZ9*#Hk#s<18OEN*&wtsD?urVjef1x zV0j0ls*3?<+_k^|X4vbrtM$h2(XG9MLo~wo?%v;R?e==T?;m}4dUoE$ulA#dz1}4| zn(u${`QFj33KL>FSEEToppfns%ENB&^yzaJkwA;`d5FiO!3fJK{#wnZHb(Q@4vwXp z&EwjQKtT^4JoxPM``>;4J^K=dy&fkYVqtr*zdzj*F}l! zl^~uHcq#_caoqBfG`+_#79k(^HtcrsXCh@d)&VT0fiVsQE&wONAz&gW(Q^!4OedXU z+T9ocQ%rDYZ-c-IGCPM3=f@5aDUS@HfoZFfD(FMJSvX;iH+F+zpW{945jF@PA{w*O zF=G)+5G;+vMN&GQg)@7WEqFywUv-xVu?SZURUkN)pxMMn4!aPT_)SJw_PYqf4hJq~ zytrLU@CY7T(Xc9+5W|W0uopq`6&SiDzF_0`)VQLowK|*q1LIepx z!erDjwTWMY9(nlqSJrSpJ>w6}AnW(>^IB=IX7cL$8xjyC_CDhE-aut4to9BQ6zkIt#%Wr3}Kjvv$+beL!OPHZ8W`=WzOhkW@tGqpvmRY zMdwN!;sJ9$}Lv%)#O#rMidM!^AgcKse z_jAkIe9@lGhlP9t(KyCChgf`^W&Ix*s0#xO5(}dbCs$0^|53$p68t7Ky=0h%rd63X zTk1wM=>+d>y82+99etl9K#qyW@#9EDo69?>fa3_OaZ7fiv1IRoh0YgPv8(0FtVEto zXQ$W*kQkgH>5c)29E*4nLIBFK7fTD_8UCa~`y3lj|0hthHUotpk0C&_ud4Neg6DB+hHnlfEm2~7{qrs-&giH!zZrHM&45l=nbVDlxES2GUT1BJsz_)VN&fIp8FY|I$Tx(0f+A z(N>?b7(e=l3XSdP!Y@UN44)(oZ}E}>(wB56I*5Wty%`kvCg765-Kwl}7;F3cj ziohb^IdYufTLcF43dW)wV+3Xf%%tf)?9(+e7cx%9469%qV0}SB64_DIYqh;XaLCa zl!L^9A4P<6LtrJnSx#L1(kj%Q?@o9U*wNmUhK+!m@4+TnDTtGGRyCfoE57lpv=R+& z5nNFuPrf8gbj+wIi5$UsP(vuwm`@dTI6FpBHRwrAn6yZez=KMQ|A@#%X(W7`&d*&q7O4Ed5LLxUCL1E{qMwEGcSF_okMFU*4yV%dVbkKbHxOjl<3OiV5kb`LrpGcD1=YXPiu7)S>?UGUC_iJvA=gPL^VAgpPiiA z+)NT_u|S4I5>x^)B}sOLXy^2V(YS1+pdVvN4aU%r)f@EwI>*J}{2ezPn4@x1BAGLN zH8W{4yLhT#-OV;g{ovb2&{h*$w+2uYmn|4$Lu!&N9Y4`RSFa!E39RFpA^MhsqI4fK z9EgtIxh|3?h%H7e$42Rq-5)w_cBD)ola4`NN{yj7tF`Ec+R_S8jNVK&q&pLFk1MN- z$hD%F!fs*b{*Qn64|nd}X*B98#~In9G@dAy9LW-EZHET3Vdy7-vLIK=7u*G6KUB1D9ilTGV0@H~pjT;NtRfhAFY50j=#|4NPX}WSTJd#H^ds{%W)o zFV#jiM42Xx+V~TI0St_XanqW+s%J80lujmPLy;??S*j>F8z`+#R;c(Q%K~dezzm1r zl&&e;Y4h^|yT$YQZAOxL4x8w4yHl8N*P6u|mVpHpfX6H%(KN&U?B$Dd+Pc-M7d>PM zV`T;&nc08%_kZ@)mk<8sUw-rLHxJq7K`lC+UbTfgoCZpwrx%ygZyz4t+UM*wwjGQo zV+!Z=HEIeTX2X81RQfOf>tB9#@9sB`9uL^WVIy-iC_t7OQl8+=V=z2D?|gOtc(+-L z!v?86h>Fce;DX7r!_SOO4?DYild(Nxa(T(((@t$0r4j89{I;hkNO*u?Z51%G3W>)* z;9Euu*CE`bmd!6z@{RE~AYye{23L?Z+Z}d=mDIFJSFN9cOfJl|iphcE?aaw`USSc+z zPU{W1|IUJ9U`iG89^Kam+6XCyU!hOPdlw9hFVw`ij9M~fE`#2Ps;h9Z!jKWg5noIw zxtf(Jxj}8Z8wy@(rf)0K~asFI5}HZNN+KG1@IY=fJ80e6XXJGz{auy zm7tP~6WeqOthi^5Ij0cWN_Pn6Hq8M?bt~6&j*x?i@PQ4N`1oQjAVA~_(lpPAYTG~? zm)&a(?K<2z8OK>S3V;RTNN_!ib*i^MWbuUtq8>4K8X&H7283{(tt~bW5%z zIn0cVea{t0Y_+jlVmEhDJfif2Xa3EZ2bfo!N1=42Gjqu9u5LEjOI4u?1t8amjD5?P z?=!y<8OTgzp{lDyiO7q@jeGsNo12?2W^Qh7zKXN?ix7^$ycv>_+FJ7eyIhgiTO+Qa zpmhG|*<JCIJZ9A7*^w7<;3|e;iP|ZVjU#Z156TZf@_$5%{DEc~$&mq$C|7x|^1lDQ zr@;F`f&ZzZ$@@Xl`%?bzK>=orVGE(dh1fj>w~&dbFpHT4+yowjIFoot#_$aFkL1i? zSqoRMx8hSi#4`*AeE_TYFi&lnnd_?NRrpYghw3gIR?2qaxY)}f+M*32Y_`0k`+~NzZNS2YNlP?2-Bzwuuc2*Y_x+MH;!s(!k&``orBb89G{1@_8qnr+ zxg;}k;cO_qLWj}~oXN@Ee#kb?_npAVJYC3@J#q&d#Xuqwg1Q-%P$;}mM52iV4W#Y2 zR(wXEAdez~5@L!RcEl^HMNmdfWNWe^LpRgM6&UeE?IivkC-A)vxCgeu+wn~p7NTw{jTWn+vDoAmN*zpORNtfQtD^m)BiQlayg)qca zE5w-uB4`-ViAjhZf=+n*L|}GhPZ5uxM2i3_o%l=7{_@{)Swh}OL1tLuqW_>x;l>5U zC7NL+Kjd$dftD>nIuI%L#PKmQRtgGvaT6Eu=WC)KwNG0bUK>6diAqL4b}l ztyH1v-h(|f)cpp&H%H8#K#)>m3d;)_)2itn<3aDy!v_xz4p{!#>gO3BCTFL0_VhP7 zEviYc#1r-Y!7i$9d~{SRm1wEnsL53`h1B+hREtqnRsoWF3Sn@;Xqk=I3@X)XkMuu<;q}ytCnGOXxl=nEvg3V>^A3wHkwo^2GwV0ogmD#s);rq;>9*$yb!DpklQq?x*Bq=+V%)V4Mw8V(7mcNb{_ zzi50m1(zlKk&qeYjJOnxA({7>zY`#67bltUm}lw@G`uamtbcyd1D(f@pKQ0c@yNk= zK|;bJ%(>7Sg=NJLV2o(lPHsL#jh9`M4^wY0h%7WV3*_EnQ9hPVmjOiI?e-?_n z?be{jF=IWF5$fJj{(&DZK|qe2M3QWyDg(B~kNzTLvEz>&%JIxM-r|BzVnarLgD?yi zBJ4*Z@nDI8Y)DF$zVaR;L8Ldf7lBX_RRDe>nX_VMjH_(+g46B_*!ST|QdO-BT1+F$ zRXo^Muz#9PDg#Ws7ngKZHUb?VpF+Qb{oPsv?qo&LkKk9hvT3@1p!Mrt{ifR=kv+(x ztjC89_`Nzh>2|vZ2fHN1EE(2DxZ|UaRxt0L)e5D*`su%a_+bB+zxn-FuaC!^C5asz z)m5pn+S473zxe7U>oU(CJ=ouCH(0R^CMyBpffkmfI9xw7ye?R!VVwq-Ib(cFU!q@t z8Oo6vinyRp+$C&~aK)~q&^ukwIje$qihf6=tBT%;bZcN%xf{{$dR&26{jTC(e_w^C z-)MEKmiOkTRfM~~-j?Ef4!awFGJB(5=o*{N|Jv(!M2#F0mvz9g-_c>rg*E|p^qkb0 z6(tz)SvcartQD^$1$|!D>ROb{+%XOn*muO`J0)9@$X?^%VG$fXV7LmxpBrZRLi;3a~)euMVphR1Y^{ zeE@?%e7`!RP%r{LBMC$~5>eP0O>iqdCSYbHW3@n zNS2lF*DquVsyPwaZ&VFcNKD~erM;f)TfB>FNS#Us4kZbVB#DYuOh?Je8slh9(1hq5 z#%yW)1C1pPyXkjCp-~4w6!)}XJ{vyE9Y6e6d`dvL^Gt{j7K_&uwoaWQX0N;?&_2*r z?WyWnpP@&4hS0`Co4-PPCL8Oa{vA;)Ib0b(yyzth75rA~D&wvzSidY6AsIOd@p+0D2gu_# zI}T4nl?fiilGs2-R}Lw*n@#O8@s*$!S;~jxA)-VgKkkI{pqL`%nfWuIMNJZF1u;ca zuqKJ}8MTarU(f@AyRcDfU`LMV?!g)fAOuZ#L>+IGDTyWmnaG(zmvT~-i)^Kt4&6#QcFbQE3VNNk zd7x9nm_8}uQCvYl4Y5cQ<)JvdCGY^T0mK|Yh|!V!thfz6b7+RyyP8e(J6n17?a?Sz zP}>Kru&89+L!%<32>r>FQ{X|7&Bc@+GmY)mHrwZQwOB55njinpJEu6H<*=S|d0ge7 zO^=^s*S`X6ACJ1&WuQ+AQ(vuX)!I%cBUWx^SY1xX{RR7HtF>*MG;ixQV|Q=w#aA!T z+xENIp#lJH|E%7qqvU#U_@ItsXg1n11#LFb@HY2$&QDG`PH;FFDSR)NBTS7#Bu3Qc z=+FLaj%v7At>VgqsVqs*_Vxz@_VhnIJcJsxa`l79Pd@w2Z<$I_1kP@;t}sK7763(@ z*+d1|S$h|Ti_}(W4UzRXHQf~HJKPxv=+`db>3ze=KBFLW zkFYvU#U?l-1WnYL3yp%+L`E^cM+)6c_24zfWoWhK~2ge-%|?h zxkj>qYs?(G)d!wDM2>b<=5dsyP@zDuA(#}$rxx0c=F!#>%}L!s=$gfh(K^Z$ zlSR9j!wnQMA4W^wdG>$g9G#GYtVu?Spc9{okgAi9U}Gc)g+&p^H9<-4L|Rv)0|anw zcZNw`yR#5u4oy>COmmCYc74D3sM4-;Y+5y!ujSCo=o6Chh>bp!i;X#@3WQ>Bz^qht z(+(r^+4%*lN-QqnABq+$=?Wz{$NpaPzx?OFVTt4)fALS<@f7s~OEpwcyIDu=))@?0 zDj7~Ej}G?REgVQX1B|B44dwd`XFQJ&_Ap>h@iV~J>SafwQsL}^?lS52 zTaWPB(QGk30K$5*s1%=K!aKkef0X#9q}!L-cmlcTZq_S}&j%a@>B2~2NHLJ0PNeQ8 z0eKA?Uy+oM?|g06>30CKP99AoYIFr<{b?1j`AdQB{Jt62;`4r0-kW({qtBbE-)Ohj zKE2!P+ffb7-Uj4utlpOD+lNc`ga~a-LS2zcU^c+$Z^Vn9XTzjPqFu9f(gRb!b}5qH zM`3l*p*Rzr{M+O6eWn04`gO=}fK4TRvv@ahi_#efE`=dQ$P1Eyi@>+l7^P-VXZ(s7 zS6P@PgKP-=Nt$10xB_?;nbdS&-vxsO1S2w@EztIFb>`DL#GOxDg>oY}5jSx{56wy! zs$@N%p`P5r<$tAGg3-fa9D+q!r1*mx4i>2th^BnQSDwD489%~!Hf;lRubx9VLn=uu zayY)m$7tixtZ-}(6AcV09 zxuW$8tPqYZsz{>j6Vux+U=tiXB@;h=bp)_r!98xK1*+2D+hE?354B{2=3?oUJ*MoC zGgg9;!66?THJX3G!@41V(fv9wbr+0z1pN^oJymF9b5W6~rfAct-@Yt5i&OdDyAtifvgAKY89 zJVYl+qi!|GN(4_1q56%-MJoZO*DXZlJB#JiZ1yb>ByC)_l^{<>tORBAPQC(v>vx)i z#L<=?hlWI>X-6xSz+538gn({_X%-!XOgqnHcZ%#Q_}9Mdh53p|Q(#6IGFN0KL4Xw*5hH3RK(F8jPT38D7@JT0eA}j%vXgp1pr!SWH+w$duEaeUm&LyVEbDtM;juAU}@J<9_)1vqdId71~+AF6B8CH5A@LmG|A zJ0dUw97Pq!K#VVMxrj!w*jP8hFWX{v(d+d`gC1u_P2GQuA)7FQ+|Y>0Jf+xfw%Fs0 z{q|0Kx2g|OFN%ylQi;==QDjldBtG7j5y~MVg1l&;+zDykvRh9OUfs@C9;??5#w>VA z!1fkZ4>75b$lL^0eGuBfsH{|`2`)MLPo_iwKF7Y4by0_ zv-V7VE!S0c39nQWiMB>2PiU)QCSH|;;uJ7ZMocjZ%p!9U|eZd8b%p zq_)f0=4oy;c~%l=Ry5yve#ZQn=E)udrG7x@TLA?S3o=N>S~u4*ene-ySX>PHBn40r zH7hw&%V>7KSJg*dId}NWw{+pn%dDg%s8_DAuVbIte=l zTJ3H0P`I&p^7s+Tsqx-?4rO)Mt_=KLJMmwQC(TP*rj}ITU8olGwLhphZ zETawfSjz1{u>e75>%b7c+jMDa@qo<~s%uK5Ag|AE?69!tc6rMm$WL`Z3)@l})TkQl zwa23_v$Zk4I>wY5-yI)*@FC^Gp8ENhpHERpyNB9ql{>#)De(KfqbiI!?zn=Q=|5@5gUbNU)TG|6Z?kTc@ZGAMY=j_CQkF{4jig7JaWPPFK{Q6Qo* z#$np#))2mFl%G=@S}HqJTr4?oa(pqy<)(o6ZaUi~lxK0q`LmSHmvvsqb`A-xdK;n} zS5z&O>IaJDE14B>h{%R>_N>4V@D=02iKki8ATZ&lwbPQF`cZ5$qt=|Vu_R$~;R~JL zut##4LX`LzdGlo6gcv(6KxtbP7@_b63sPHpTN3dlm5Ek;Rg@zk0T~p&r4YX`v2<|{ zK1hdUj3o}{#5=WGgYuxeUoJV02x`#6vG@}NUbFFjDsy19u@HNJAmF0YxuBo#?bEm9 zXaqT`&KH$>@o)e3FYC?9|M!o-JnaqVxdJYSMw3}hT~8g(a@Og=GTJTn6BRl4h(b_x z&WNSYf>ptGt@f8c{qf$x?!SEY<;i&$Wr9izDg@?IDr3L)>IhZ#;BcRf3cKxkjUg#Y zov~ksL7+*tB^Bkc#|~vRLhK8f(@UdE={bavpDPhZ3a_pROkc8KD@9sd#V77M?JC{3 z`n{g|`uhr4AebS!3d??PB)J}N{ry_{+g|U;j_BV3;BA@Q8ur~`r<9vDcxwjhK;myi zjwZhTcGp8nw5p5fs2e>sQpU%CsJ1KGlmZwWlb2{gbW7ye)ZVq>byxdF+q*0OKlEGh zCMq#$saEYhWFpEzhf#1y!wVP%yLOm)J9>VyP_Xt&iR5S2%Q|lcd+$$-qJF7zPy}BXqA|f*J4>B4B({5hs^t$5pXPuU|mVb_H7z4pmd* z%gU&3GZ3#_rZQhGLKyR5;{``+{y3Wfq*zx=Bk&5iD#$2`*3FC^4j+JU-;F1~`R*PU zM`O^X5{b<00usCSeR;`=!%Eg>*VX?zw!cR@mDr^f2<^!`Oq(gZ7pZ&tgbO zcqj98XAmL+Er&#EZNtVCxt?A~Nfe7Dj(2D$uAoRj5D_hTG_xo}e2jvn7(PZ+KgfZ| zCEf`q05lBRxcF)SIqI3sw6ds3D0bj?b%{*`*yf!~MFPPYi(hr_AyE0EF52R-_-I03 z8O9mU6^%uU!*Puf@S%02;RY%hXsH%B5DCuaY1m$x&_^$$IMmK~JYzBuK!cSNH=w!+ zj>AmI+q#h-2cABH4SzzRI94vT3Iw>3--30g5=4H1pyhFWVvan)!bXOzv7+r^KW~wg zo)I@gR9q!n{aR4}2Xd*9t52K1iX;jKf{Pi80xB0N;^Ie~L*XwhVnHP@>9)F3yAUCo zGgX!KO#~PktE;%CLz-7)VB&_riEt{NJXeM^>}8}wQO~ZwkRKfa-izcA0tUpBfZpOK zd$QBS@JsUv%%Tw4fE*2Sh2Cwy2^4p#5~yh)2hEf)hK?+m#qvri(i_hfRuWK)E`s=( zchFpsg_tRFLS7IQ*`NFCo&xV51@0Bl?_ZtYmpCZE1Rv2s#()A%Arh`}$q69xUKnn0 zj3n&9A7CWNqFh9mZNg1eUOI7we~=nBige;k);LDvQjkNIP?{hKf{zk!NIa-wIj@X! z(*~6~zA;fWsC|YRxwk5KC-G6GD!*y;hBy(7P3#08@(dZHlv4sTNDLP!mcv>^rbiq; zTx$5mzXjSg7M2OtB?o(mQSN}2+&Yz25KsYRqX0bfj~pb8$TdG!v)Sg(Ka?}HMKh66q%A8{2lbrT4KmXF{lYAHiQDuB>|3FoVyAwW~4D0 zcIM=RD%A+7YNM2a0=YTa0|zxyR5DcI!UPiV zP<=iNtx`73l00B+kO?TH7jSm1!6rtffx1~*?kEFkKnOW5 zQ7dQ?_-D{4_d1KKhsYqqkF25@`ITuUWhG<%a0o`M38r0u2j4sbjftK_$YkFY+N8FW z3HNA|*%ymo^*J3-)ogw=%Fr>R(o-MJ7i9e?5{5CDA?e3}LdE293%wQ&il>wDMSn;G zaIdST&WPsuMsqr0f|xIi2iO^Ah4hoQuUcA%Ze(>-? zqt)P>)T23uWhJjHButobn#xfnHD>DGal)#S*1j=gUTkr)Jsls7GNQa!u}FvFo?aYA zAb@R_a_48m(Z#Y0h$ilh>-9(Yn0Ru?O4ZX3PL7X`(4yns@LHoGck}!Kt~x$RFdkzm z!euk3l_04lzT~j2Z05;JG-r{q}TIG#lB;)kgWcmHg1(We7>>FAP!+EbDcfl*Bk z;88`=#p6w}fzwFeb26i!x!F`Thci(}95#zO%7p1OHMq4^^#o7)CUZ-UkoQ0+`UcqP zH6k9Ic|r4-4-;+;U>(mok>#WQPzY$k#(Zs_s}yO2+dJD}#XGY!;=xyBKV(JcWDt^9 z@Jf*(fKY)CnFye`jIN<%rA#Ch4=$nu272%>%55sUH9?l!ix0e;p#-wArPzX{$2w{T zC_X|k?);cD#r2$kM>{*5)`thEcC&%MX9^}yi*b^kOsAkbT#hC+?7YL_HC#!57DREM z`~2jz!w#V*j~`UZb=M+fPUAv;{%3#kA=?jr_RHV?{>5ufA)QUk3$GicEw*Va&N?_Q zXQ^}d;lVDRsi+x7d~1S&I3{y!L+QgOkMKA1+4C1KzCP+r*g9{iS-zu%p+_E_;qqkK z8xEg7dbqc}%>aSEMOs@{=^!+E^b8-nj5$>X3cS6uf|Rz!pywe1Acr4F#SOgv8 ztF`P17{SpR`7Dhc6BGH<$9KHn(j9LJG7kV|&0rJsn~~pq+l=>JpMx4#6uE}R-39)` zu(<|%6WA3#cNA+g!5z_VdamZdaF$2UQs%qZ6hC zHnI3(3*3OR2KR$Khe+I2EAqE3qNCJ0Z5dwk7isIf43utP|A=YBA2zayN zBpP`sbJGQJ39uf>A`Q9ni>eC_2&k01Y2JKRDv)LblNTGLVoYXZ%wmg`Kn5a~6G4d8 zCk6$E3&cIR07fMoj>g#FiqsYxW!&;1~P|{r0(ba6zU(!37^TM@F_yXmNUQa~C zxmY|16iE)>B@S$43Y+F!wk6)Z=J^(h^W*uVVQFAPh2ETlaV72$t6N54Mj|{u14|5Y z@hq#6y)o=CNfB6K zk`O~as)ZEOv-swRITJlLicuNS^Y};|(RGx`S$#GTaf@vMPPv7jN|3T!-wC$4inW6P zmvxY;!UkhgPi4r$1w(-Ucp{L8Bq8}C5J4s37y&y#X1S%WtE_p8d?=cogEr;`EI&kR zgX*g{u{Yey`dHH~Lhf((6nKv)aIb)Vk1G4VsGAg+56Agh9gfbjs+u)f4!i@Eld=c= z0ak`mQ^pnC#TlVOn#>)JJh{BY3mjj9$HF3&2a+I!Xoyw}50R%Qr?51HlV%&0&b-lZ zE7pu})9D4XTMXzHi=A>AJ72U>p#(vIhz;1t6v#<1;!s<_uwlB)ZUYf9RVwEXok*}_ z%^lOVK<4D+JC)+YF`_9h>R^g;eDq!^6vQORsOFlGqE=ziFCi0F*W36h3_DOc7e16M*3z}9eA57dsW*x8jv zH@+^XbR&8sf~Q6$1u6r7eAWxyO{aV8$Za6b@tqZkcDYTuqt{>K&89aQ<|la;SL$`< zhI=TcC-w0~`C>NI+0BUA$DD1c?B`W8$bL*te1k+RL*Q_(l)G%QYjuj*5Z)MvmHBjB zEaTDyJyxUHTujC&lrc>`*x$zk0Q%g{MSt+}6>eug|J`RVzj%Suiq7%b(?9;C)@tq_ zKE(WbI2hu@u6eQ3y69FK)wAQX&gogVb3xvCOP_Xo_1e5qyTlrFG#mB@eNL^1D9mb3 zk5AFTaqi)Ry@TyWyY)x)Lh+9oAollm=^gZ))AO@e$49vA==Fy7-o=9CQ>>Fwsw($K zCq{aY9&m|njrlFzdDVt{7*yMIxgbVVVzdFOiMfHD9h2MeeDmt{%i-wXvt0G;*#}>I z{smo>v)5?qwy%)Rvs(ONe#%uVff-0@HRS35W%G=V?Z|A)G;=U!u=JUhNsn|!$S>l5 zOgge=N9&@i@R7@2V&s6}Tqj$Ave^nE{bvZU-SKBaa@X%rEU|F14hY#6jSEaiSRPRp zgAB3NOsEoK2xTBJ7XKX7W0GU$9O=nerFJw`hhWr`MyDmEgBU%H+;jLxWZ40vVKNYb z@rX7b%I%omsPk~TMm<~jm{F0^;(5~m-CmW-NAHr zxIcWfx8G{kMaS}@a{)I=Nku#CyR5rRy9;o-HPaW;giTGTxga7#4H+{?L%EW; z8SNYL-i-POJ#W;29n*&Vzrghd7Vkm|dXH&Vb)BV8?bNQRc$G$if7Q}CK+~gRloF9_ z-2Nt<==F3-22DDXn$dJ^j5xOfp!3`sP9QuFQrW-lkhjNzXE3hQ{Tyj@0K%e`y_eWf z8^6vEEnbDoQSD4cuO_iiq^(;6W0_7r&deB5G)v$%VRRC}f4- zp#avwyTT45p|Tgz82-^gkCEi{(_dVG)TJjJf($1|Fj|b~muE=)m`LZgP8OE~M{EFN zBN9f?jIB&<7>n2;7O2arQmdE2VyY`j=Dnh`uZacN#waLne5A-XJ2)A=5oki;S?Vaa z&#QK5yG~yXHDMB{c~G|GJZTCY(~V3{6?7t5L>J_nSC$i2$)tnrJolGgZ zP(cBY@mA%zRq24tc%Dd*Aj^BA=Y%}VjkZ9f;Pk;K{S4dJSc2p*ER1)_R5A&W%VsFg z2Cz3v9U=-}QVTVJ{}GoqS$KG`2ZAL6=LZL_HnHIBu_BSiND5NC508@lF!ST4{7<>*^ z1>@Ako)S;UN!e7>xg!?7!$JR|cfs*xBw^A!L)WFQcZRD7{D-Q7#_|i53UUV*njox~ zWyEM5fL27{F`LLy{Rheg-id(Nlz3@yHUw!Ti6koof+4&pX2*k^O(0yUETR0u$P9T* zX(}#cfs|JkIbKo9hW19mNhzE8Ju(2LRfn*GX7WfXs1>+?nQj6^RzScQ&nBI2_hQh~ z^Tu$1r%wD0g#X|G7L>=+LSU=F#)D|6+{ZA4Q&T1sn<~LAFUo~xwa)p9nr(_*pbc#R z5>jJe1gSEmPoP4a6wL%7-o-oBs%}X2%4Hr2-+DG<1=$dtLdzt1Qe`Nqc+py@kC3qq z$mnN6b=*2Mj#xw_Afjcp5aAm)%NS*ilCM7)8s$&fuESIA=`}%&LMt4j%;(QldSS+& zgd_zmJHQcWZ0Y5D+&6D2++5{tDo1hIYrj33IbgXg7OozDS^f07;cJ5Vcb*m5SVBA>n z(TxY1ij>p~RdN+87O_@6o+~`gMU0T>Pt&rIAw8qaMS&{`2|+D}D{YSLLrpuX_Avw| z6}oGLd(^YIOGXoo(reW14u?bFzIyelwzu6{T(-;DJmv8n)7WmuEb?+P+|m6yN^rbF z({_~3_4iTYPn#EftXC*CLN?#hys$9Fq;g6}r7>Ykg`?s9y#rw4WI)aAB?k=F+HJ_d zHOJv}AB)ZDtk2;$9wx3oN(vDpN;D-0D>CqzQef>J+UHESYZLLGi6jXXvzVidheVz8 z4ohddyE~YRqM<9Co-m29o)YP-$sg)^{Os}EFnj zkg*wejN^JZF+F)cs}R5BH~?QHYkD{*1%h7hyn8VjKi%8iZPXeX7P<ZcgtQgl+W?je)}70h zLi2;i2fN!?Qh)a43)V<;rKKkxU@@03VS@d-JGdB3yBDJ;s0X%NZoQX>P--xQ%v4Yw z)i*Gy062N6US}Mp+0ssMsskNZjHK~No1hd0w}3&kpsmz!u8R31Q5?gFwbh(>!F$UipSAnij$^Izt zX5A}I3>-uOMbQ|UR~adyGnASE%Z{#A>L>vFh#5oNB^$3u3@ipM{;Us%Z!!R`9LEt{ zA6=MJa0nsdNr>FR0qhxwA8gO@FRukOUndNq%lrgC9Bi*E7JJjhXnNU4q`)8{ECpg8 zC!l2!A`4?Dn@T>{ss)n=D69T(nvhgcP$LLjPN*8GWUT?8O0>j|!^%q*S_<;#V0U%- zB`P9OjyEFkpNwq>2w|30uu)u2<}?|M3e@E)e(U0c<3XfTRLLsGKqG-L z56xzrm?WgkCbAOs$P%q5pTGek8w>N9@K^&qT=lf1QPqIw&AS*v2!7$hE{alh*p%e) zzGY!xXHgUdN!Rh&yB6DDLhUNECOOn2J;2r-z&tFgs0uy4NlpGiXvn2qh@0A!=k#+X z9zl6pnbRoiT&ThUAH>5@XY&H745G<#@ky8|w%J_2Oi!^bEVLEdo0s-X@}-D%TNE={ zT~|-EqnXDVDI{6O6>PxJZe4@HGztcsa|2okK)k_74r0i0H7N6uI2(vxul=ZI|1R-d$7;qYdP1noK~ zyR$M6S;Z&Qa`{7vMZ_kZ0(hakU>H&EZ}${H zg}{(2*ExrZqrmD5!{!g#h-v49Mw$E117_DQcjHsfJVZbDlT{t${11&j#&N-fqf<#g!A+7j@cpq=^X$|m=hgAiV zC<~7iwkIb->hzpQsTxXpF$hAVvj%*kVNetF35bXZ^9pNVq$?v+lEgw#)8c1^C`oO7 z2$ys#DhP;J1fgoQAwg0cn_%`MSgMKAl5{eB&PkfP+wF%B9yIC`>~qgfj&TXS7@@`z zBV0na+sjF{JgH3=_#3A!vNd7I(V)t~ty*}$DVN6MF-US}j^QMQmV?zb_!Os;i;D$5 z6GPpJSLpH1E*?3Ulz#HbkI*;aUgP(b>dA|*aVGP#pMQEj8t&}x{`gOSy3KKE+q;jS zHkx?AZ8dhbcXqb-PMU36z^FgKfSO+Cjs%WE%x%@{wVj=vVJ{9qJ3G~We119T&mfz+ zwyoTQ-F-}wISujY(b%pTkWPJ> zw^9W3eD+mN%w(3CT9q?-HH&scgJ?5R!}O!5j&S!u6t-y4H+FaT7^6OT_Owy2ot>QM za+}^2<6)}S)K0TH{{DV;_x9DIi>H0uT=A!w+X4*+Wky=ge?xf*CX65`H_`dwQU{eK zt&_S}udh4t%ZewwmWa+EX~(3fRCeki3V?3!%}qK=)i#{ zi8ah4GylZji$Fl6q=L5wDH$b*7%JBtGDM0e2h2#rSV53X%z-iGLJBT|{GrHZl2GwC zG7Z~nKLn=6%PwMbG1y37?Da+i(8HAmONb1jfuKdBC?aB^a*oD&pn@yd(KRo(4cZa` z#4DU_%CWuunSQwQ4{)w}Mmh$@E$X~;F<=me z;U4PHxsKAAa5^3T993u$g=M>0{plx9(Jz1Y)z`;o=dMOE5V(HjLIwlPQMZq)kVp9R z*xTNz*Ua4-5(g+LXN0D1DN@rchgMd;CQ>Ffqdi# zU5JH65*ykOau6U)K@dbYfj7?wf|P~{0S;AfD&O!G_z^5&DFo=y;KKSiapSCZNwvBZ z;%#DtL{nacZ~WRMDHUU_DE%b3GyoEv1>$S>$Q+6xWJjp%q4*cX_?L1Z$aB? zb9!b=f*5Mh*`UgC?v53aJ(FNIu#%z0lqExj*zcQYaUByvZ(>YRE;79y`z`N8PG9&9 zG)=e(Ve|P4Msx>?0frWvGT1_Hxj+QSYar|FZi#vybWeeQ(-gQ@K>wSr-uuG6odTcz z`sa8$ZM1iqdx!8_BFem#$oQ`e1fM{tVikVHkAy`i_K)&8J+U&wWiJ$l%`+VaR7xkE z^IorabbQ>s=%Vh@GQ!p1<@jRS>kZK0q9s&YT_{!?&9I}aRcjRllF57`%U5hEFpE}F zjY}jzjDO;##NY!*SSzd|XoPeFg2Y!QQX~o^6E$Xf&cpbclh#yn;J1KtneaQyVSO2w z1~~F1I;^To`yquPLBZ}3vXqnMk{EBvgGHG+IlMANoZz02AmjFdWk_a$Bsab+Ic0Hj zbb5Tz@Biwbf8A%_*nHk!;wD03Bdo+7nya+I+Cibk@-3kNG(#}wbSb1RFT_8v+sb#w zLrmei{Q)-Q+l|JvgTq<{Z9Ujyl*)lI*fxM(hz;&t1fXIxR869X#M{DuU$IdvE%KAs z=iLg*gi;X^e!lcLnZTY>>CbzLX(BF%r=_im`yKHxjC%xxA*5-xR8k|5g>o}ZNbV`1 zjdf+g)vw@HxKt~1$|TN9DmAN#OfiPX@Swb*Gl6BstQ10wR@=%_jlE5UtGZ2C?DM_S|o-y@_2rfL> z-hdAbzIi7~2HQES~&z8fS>&XXLK6g6WK^yarrVap=TY3IZ8? zaDWpDomgBJ$pqSSm6qkp5{nEvu^CUg7)W+6+U-`m-F)`pha4crg;xvdKs{7yC7g29 z79)1Ujw?m&Er%F5W03sn$mG zOOwJN>)_Gjr;kwxKYjM>*{^@`%g))^>sPp}c!dLvlcUqUgM){UAAkJEKdLtxJ0I+f z27^`;AHF-7QFl)}JzQ~|p3OM9hP9M1Yh_*M!QtU_GQlfMr*p=t5LDJxd#!x1zc(ID zUc7wu>g9_kAAGsl`GjKq)| z&5nc?nfVJ%lnTermMM?`nL(yb<})QRCBsX!Lxt)5#rP4MNxWtr3CgQ9<|H|Z1jpKEJ6IE(eX9K zXINMN5Pbwp=p0rOY8~H)tSO1$eWskf07}@UUH!-$=5-y@= z*_$}KA|mKGeGQvE7yj|c$d*WYT^y@-u*(Q0pjjBcYobT9xWh?y%D^Telx~K z@V9*g;hU}O+X6}L_YW%jJ7yVO^LpG{NpU;Xt|$GT-*1vKaJw1&J>=_9aRtUKV7S~J zj-m~xT^L1dox#|8kE2jUGahOn;`&&ET7EBi(rBI zKUUoU$jYTsW~6o8Vmt`Jh(zE_85E{NkA{@rELJ!~p@vTkGP7#U70I6L(PjgOBh@B3 zSt_aFF>F)<+G2q=m8DZNA!ioQ(6%Yc2G+pWLmpSsGG8w6Gopy&ZU_W#nRbQ}`G6{z zQ6^UOW|vddx+rZKaNI947`va6#b$=A$Cc`CZrNKh zc_z{mM62K{l7r&8D}aKActHfkLC)Ug0B1;ADOOms*C!sDU7%Wh9K;tG1_ z#?X1n7pw$u7{xr0LSUu~%2I-XJ~eqb5}VSPfyCam7{mc0Ex<8w<|fvbpC4CJ$<#mM z#IFn3C1e}I5vc`DX0#hGG9!)vy+aGaCKGu{R$PPq5RF_BpTv+QlR8o|6Q#>sl_f|m z8BG^Z14x1cAO$bzYlMj9jeh~moC24KP2;x#0fSqZu$Qp=Aem;)kwio(6A@sgQrRZY z-EI@D#;jS2M%Kj3R_vNGIH4RxkMER-GD&xsstF|B^^4ZZynxVDtavapS40hZ)gYl0?Qc15*(kkE?ssrTt+I#1h37pPU}y7SF}($VGYzBg=FZGXtAm@9*~% zc;6^+uYi8vYW%*u83p>?vy1anUh3QX=(OMsA??5t;3B{rytVj6C8k&r5a6T;XO zK4n63OQyIZHDV*wN<5QI!{3+zC>6^410XRG>otwTymfjp=)?R+t%QdR1`~Ay$J=h{md1LUyCb$O%@ z*~}+XP!fZo6Me@VB^e(hCULw7CoQmz7&9@xrj~EE2(&tb;WM=}UCd}=v~gOo=CQ2q zlq<7xoV^nj8E8}Gf1seb7P$=Y zuQ-{4DJ?F%et-lHJ~)=};P4?c5N1K>!LfYocY91S>1nOq*3RzU7KfPS3+T8nx7+>g zZL(pxV~)A{R*q>Cvbc&&OxNwE_yq8u?b6Xh#Bmah_{?k>HFUSr#nPR%7FLz=iz26Z zUYwuPvFfcRIdcB!{@z~a!2t_Tli7qxAWk#rAZjAfnc^QDn%k-9@ zzpOScnL}b2&ZvcrHWaQ_PztBUaFy%_dh(=3Gzre|*@uA9I_?3>1Dy9Tg^ur+wGoCE zHj0~sy_vbgpi7y+{)(hrAPe;H|2tt3Q0sdqBiCqX^8ADQ^BCCX)N%+qjUt^47 zuq9H4t-L<0ElgcI*jPlV!bl?%qPyG65g8di@cza+rdcDBsub1uxP%1>5!wD|vV;)2YKo77 z4Het?a*LBs>%}^phU1j$#R^g|o=Qe6bpZg8mUK`HkGjo7i zfD7nSiL+~AH>FCm-7eLtSd{S5d`X#FrF``2qQv+lE_tQ^qd$s#2tRQ(8gSCWI;FOO z0H;SxVnGxq-EbAFO+b8+804Sef)wvInxG!(C4)v6yaP|CUzXB0Ne%uyi&}sSh;FMnnTs2)cSKQmRs;$;DZWAjivcDa!8{n0P+o_OMKeN@ zrybE%se$OvVoN4UK~Q;>XJnkRN}ZdmzzvXBG2$_MO?cnD+ZebQMq*e1%LE}SXUaQ8 zq0}xm$ICh-JrJnerPK=M$al<}fk2sp{zh8k6$FT6_qTfryq6TXS3tj))qY>-T<+-k z7qvPkhCSKYKdiO35dp$l*-3ZorB#4n+6l{p522t{q;W!_$^bs=&NOxvA%leK0hV*o zV-vg<(1Q^c3E1yuB8VI*{==4Wf~?XPBWMmNYoe8vO`~!^n84;1uFuRFfhHv6HREHJ zt{EoTp*nR^oo5F+E&?=pkVhhskb!a-;vIr37^3J<0!V^3iAi3mu*Qtlb&33Cj2b0S zFl203YZ07~nS~XXj!DfQQ9-Q~@`|%*-Fj+vhwK4+PNE?K1kc1Ya!RX+pj|lL0A9X+ z+2Pc)QC}gRq@b+0sVriWq~k>b0Y4YY5fu^bDJDjXL=!NDz;^%=5!sNrlw2;4JLj0b z)+;#ptyIfkg}VVvW+@6@#6*Mgt1_2V1vch8!;eLH$b|-~j*hP~XC{Gw4+WttN+iT} zOBA?CxDatL!bV|8P5MvC#2JgGzQ7J5gkS{efMTZ5bW!BM#xn8;dO#K?m)T%d{^?IXH<+wZyHAb@~7=TR7Vpfum z4I-l|$wLhSJll6PCMZO(2>BP{l>(ijwz@KE-!EzVImDraaZyD!281npNYLDx5UfTJ zQ6zukT0JD|4(d!z9b&u_AetYuF%b*m+MY?xt5qxMFjvtg+M2w?kbhCAV(~gbMLIb< z?_mFXdQyJ$=mDzI{euHqI;%mLNH3UXQc={MO&>wvG(I5ZmPf@rXK05r> zFFwU-GJZKYLh$wR>+`eo!zYgppFIBH!w;LadaGK?O&7Z4Xq-12^?s)_=yp42v}CtR zH0t^T!C42>Z7q7nedX*01uZ|=-v@rD1MHKt^94rG5SMMVpZ&|Pk6(X{N1dJhz5Rm+ z`<4@qT&(X{0wsxZWa_61%S(Ecn4KEoaniohx9`EnlJAJ~gNng{0nV8ELf&CNE( zFB>LobhcTWX0&E*RJ-~Crq(u1{`l{6>XbH6+CYpF4pTH><`6OH*~5^NXqnC=;v$s| zT`B%m1GSxOV;TO9N6ZCQvV75B3iDiE ztRu!8r&<)zZQN|;UgBm1o&jQZjBJ7gu8!NFW~F8bN&ug|MW2i+Ga$y)ROXZ_cJlIt zk^qx}2uUy$lFr6GuE^0RQn{Dm+C_E_Z^ov8T!2FR!a)fC@c;fpqgngtqbGD^)yZ%x zA`?lHGA_c?aH+wuuWD;1E(7_Ue5^&Q+Hz4u=rLN%jyfGSFI+x&P-yMgpY?oIs^;=g zvWWrU!7f{TUK}5FhXVjnL6j=)IZWfvd;KWi0+-Ni89@aSBU)BkMt1UT;_T+pezTzt z`t-ar7)@r*Ln$(AvYrredZA@se>i%$zl~q%3ZnzXKrP{z7gUCh&Y2xR4M9CqEaK)W z>;$d)Xs~YXSrJ#h0^KMy>G_<%L@lfyuTlH<*C1PbO3AL?Zvb#WkH3$9Jv30Z2EoKe zcl&iW?6)C&h0DztSKpwB`TPI7T{fIlpYNPLl8`3a{5Phu^#_SIQba$xo*aNQ+XQd3 zfOq8ZEs;+{+a2)y^seRl1~9jOPQ|-k^4sIaP@F!+FcB5~mZ(|Nm(xQNEGIhs?()K& zC`jgx*;J((T^!DxccEvofM)@m;H*p1;Nmhf9?%UrY{Z3OHDw@PHg?gI;fm_9 z$vc;;hP$6UqcHuuTB%KxP-0i07`opD043b|D1|ZbaO$Yj0~i7W7Q!X$0XOie6@Vpp zXEwbwA?-#Tnvt*Z;7myw#Bk>ZM`P&3H4tZ{pb-z89o!N889EIpmJaGgOdFcH3dcln zuJU2KH5*MiV;Sx9s|9poKP8sV6OJQi)YIFBsZe#J3JYIwFd2e8mldg)ePw6}Q44a? zts<@_xcUjoE(n&$#+TIceZ6{=qA5a_0H(o6sJn#W!a|!JEV?wb3sD^ojO3ECB5xlP63kxGIGS+tlVvat@;Ez7^^-*v z@M11}Q*IRySq2%PEs=TTO80oA2IJy4RNK*;Aq%CU1x0$=ib_ac9n-1sU|8es`34er*(vowbo_3A{)gb z0YZ%=F{vq>9|sx9OJbRM0_)xEjlf*i-pjfGy^$tp+lg?o=f9EUj8u3EUf;7~#k&#g z;#uT%ob&*|_?j|&<6}mgV8H=HWZx`iRA+!DWyHydVmUXa&gpBq8(r}%8w4US%A6J2 zJP5qM?kVtoQs77KS{pZf#VZ?|{wk_7`E_WPLlC3cvY9O5yyT?Ir?&s+v2xA-9@B2-|1 zM@(24VtGi+GBbFnf5ie;mQMJW%bHqeOs;ETCyVj|>ohD#!^}aop&lnF6|w`)&L}?u z8bEBJ)sy@7sQk>N(#uc_-Dlo{OhBaM`y?V;SkXi zcbkNxYxIERi09;7Q3Dw=)aqD$Xx6F(Y>ALp6^xZ++_NS{0BuqvqfW06$(cyt*%3XA*!2#Yz?S4j`=7t}wbRUcBek`ULU!bncG2#2v7 zzrqASods=zKMU+vATK7KbHY4{+D39J&a7cRL2b_2Li)xMyi%<~J)(yIL*cHZs1OlF zb$#)9{Y)N7c=SOmEd*q8J_ibJ5T|%sjaqZ3+1_cj2Nyjmy@c&hsY1!HtBE-V`YAfP_dnnn&oXM6U6Hi$L3;Z9{YMhOSL*6hzg}nBiE6n4O zHU-L&Pl70TF4h;2OH+ktEJ@X40~!c|dPteBiI6RmPG}Wj3yv2@C-OhQnUOziM{@~+} z@q_W2p z;LT&e3eA@<`kf0j<+vuKb2TdU51u}&RLT&y+q=NFhC;dhH@}7A`m}R`c^8^W6kk}a z(j|x8F7^Gz?|+YW9?kW~|L(^hfBebQ!^1!Svp@ax(@#+x|KihM>62uL^AX({&->@agFW8v_}>y`dE$A z_oxgioy@aUG~8Q@u!zxzMH#IoALF77c1}BgsI4iguMB3I&r+3I&^tROp;MpenKoT0 z&YWM0m?a_LK&FhI#EJNagM1Ro+E8c3mrvinj{h=<4R!RJSw!S%+MT{fgTN< zFcl{ZGyEqcw9>|zEwuM$YKjJAv0zE5S-5Po1>}O!Z&F^Okk=B=`pc@!Q6k;3KQu~pD~&WSo=4Ogf@A4 zbo}4{+y5vP{xd#nII&6iXx$mgNFmvHU_c{XzTqHAfrCb2Tt<6y_6F72nBY*v0KJ8_ z<*Tn=<{wIZG{x-vh;8@qphdk}tk?G{_413O)6HaW1%&>YWr$XodaA%hl zJ9OXFPcSn10%amezFIykmzwqJPOJIq`0VVWhxaI$3hPz$0#pTkmaL9uy}@vIyNPG% zy*e(eV#huMgH6XvYEZst610L6|7cDwHmHqZ*x?fweF~WAnIv2e#X;)?=iA%?lXA`y zU4Q?UuRl^LJ1o7z_U52N-X*Eu~O zPlgWj47afk7;W1d<7U>D7MXZl?Z^QGG5?tETxk(%>ei+F}`xn6h9;ZXxykQv(PCA`>vjTp#e0g$Q}w}|Wc zD$#aR3%0KZ1rTfyYGG6|0Y)JWu5B#i`Eo>5$OF5k`6&6u*sAmtSd>PW)9XXvT8k+l=uG z+!>EznSUi3T2aWiI5WK@8W&Kx7GAj$X2Tw2^-Go`1)MSc0tH zv*&;hH+4jZLq;Op>4NwrD8~0GczXy&@vNK*OmRo-u>{_o^q(_960E8Is1DwnoUcyGV%xEW-TG}E{;@kbFz?4cRL1OH?BUOc!gkD^k#Qkc{e9*N?EIVn>G zvMQ_%FbBx#_QzSdQZbF0n+>SOlc@Nx`N}ha=^l|%2twoNc6kBu(3WyJ*8~u= zsK74P1~J=N;TI_cOdBS1Pk$$oh%hcu439P9CM01{^F=o-=o1|r*~=}eTa^CQ(-ZbCFfuY^Xj->qr%SHe8?kGG>u~=8E<4Ia?Ch*2N6a9E7WDb8RviQD zJ&x>coz;&{PC11T2Oj80_=IU9YA>w2hj^{V+G}qI|L6{bD$8wVK~9OupJjtep_al^ zk|oEnOwyIP;(*N;jM<(AyWqa6K9I3-Cz5`fdxCM5g7@?S^y#|*yF1Ogjopgc z-Cu7_k^=9}G{vEBZC-aLx%=yy+5mLWQLkphdWVa+smZ)U+-Mo!V|Bh$mTyLatI~1O z<&daYYkO6txeBL5Jo?86){aB;wM)p79U9Ysl0n({fpm08A~M2o6vB@_`9#nD?nl%# zlCePdoy6F!%sAmqQ+N4a_QnpIA>o(~y+0-s30c z?9?k&Ta{vdw>17gw>y`G$=P_?gNMqMa#dWo!DSFca1KloYFM-CBFC+E$20nKxtOct z7kG>Fji+#V3+m8Sh}CsoLR-yJcBzC~o6(LU;Av|z&z(&!dvNsSC6XNF)FPU4vE3=R zHC$|smdg>F9I?nKUOp`3_REFy%jL;pIb=Au5i2rdK9W-pdtVL4kpgtz*;@ z@fcwl4e^!Fg9TuR2NInlvVb;-CXF^;uYbMv3Fr=F@H1+v$QC#3#3P-sh5!IS07*na zRB^6>phs-s-gXh5vg9LRqU2JCizx?nVJD^aQA*-zmF^j|ZY-@9 zX-^6mDRKY`?n??2#TOs=lMzF7z!6HnUkD|M&s9?t4qSJ%bJ3P zAWVE-DWgW(ER`AY&&*k)iGC}N_C-(;vIQ^$>IXm2yt(Z$iWm7rDIzA3oLyV4+s9Q= zhzqRv1r6@mGZ+Wn>+tlN@L!iAQYW%x#PL(2?}`R%m?;&n4ks4MD>9`lS#0o)ClmP( z#3LfbjDoCyro{L6dkVZa6u4JFzc*EVU(h!xP$_L;RWZ0+JpbLlv|HOd2M-&q_Lg!V z`~b}bv0)HQ4dElow{R0UAlyuD9C}ATxOHec7+~g$A>(c%^Ren`_6kvq!0A)Od zT2_&f%jIUy(2+QBL*^V_#uxmY--^d|F$G7qL%dY-gi|VRAy(;%;2Qt<6-l_ybdJmJ{4i)u6mPz33pPHqj%X356_+WoQ!%Y@|-E z0ErJ!{!AV~2w=|7{yzRCOGG{;yBgJ;78=58hn7&GHuXm9sy&rJy#gl*cYq6}C+9ut z^^aP$ZRqW@jCnYkMlHLM#n=;C<)BAFT1v>P&0k#VCPYk7k+Y32Wt@>B!#+bMr2e~)8xt^YCekf0bf#*H!v~YR1UP93hg{7%86IRHaq_*>PDo5 zCU1(3WTx2;DxFFLXMwdkLbGbYRmGXabRx!_hpGuGiadDGN&=d$xw2vg|CA3l5b(MOF|^RNEne>i!4{PpwaNa1HkC*8BoFHX;% zKmTIy!NH&YhrfLM!3U3?JUx8$XtJ|2IvAoUK07`>KR$i={412r1B|23JNRzqOvQt} zeW!By%Wk)e74zx&Ic}ZNXybxlkh|o_mV@10lGDtZ&F0b3YtZF|KmWz2gMJ@CtaJeoD;ucG{E%_Vim*1`a)r0*Gy;Hw$b?4VEwR7nU^g+O zIm@cqMAc{04rF*6n?q(cJxoQhU+AKSsTf*Ze08Ro5T*3b=E%^cYZ@%4aQv;|lK%n- z!#v{v>o?lf2lQycDj1x;5lO!-d{zBGYepgI7yD7nrBdIaLG!>^Ci+m!woEs5dO`+{ z**u`TpgARqF`FenkmApL9Ynl`N`X&y0JFU^#om$d^6`Dtv{Sk$?b_GNM_= z)qS0mUQ7J1zxetW+yC^}fBhHjorWmINEqnR%_uM6(OJZ5N~w~Yp<1UCga(2cevmA- z-oR_L5QDJ&@$B`}ZV4u;Ky)h>zr=5!qmBD%$Rfq*8 z8t?%c>(dU015OV1ciOGGd%a;vl*yXQXs~1le(~XM8@p`&UZ0(I@Vmh=p);ES!#h+P zPv^&H7vssC0q1b1-K=s_Eu%;_k_RMh+W`xSqK(je9MBlMwDs0y04Tc`XG05}wG3z* zEh|X8rsj8jh^qSL#L?A=OQtukw*=pexC;5k1Sz{!^zZoljk&xd+_%B87u`yaTj3IO z)o)U30&Lc-ZjJxHao|-^vtDCad`tw8t;diOL5^=x)+|Db6Ctw znXeRcA3oaozdwG0^#&ueE=uzu6za@kaf@=O`$#_+xaJ+kqM}`G5?U z`a@#dq*Yn&Cx&rIh*LJS(F>2)P+$(e74;~MQ-#WV(i;OYCg+OnSx~||s)Hrt{CKh$ zFW4;hrv|(u=1Lu*uY}FYF)kz^2Y>k`c`y)0T zLReXP2G?}!=AW`zwLstCpeZY!B{wXL(z({{1+M;(d6vB~%r*teg5fA37N;-~B0cF; z+lpeC(Fj6NK+Ql#t|<(zA2oRWENF=p5JZu(<$WWWGM8_2E<~>o*q6Pr7;7LRba`amh%z9nFruaAE-G|&$ z;NLz4?iJAg_Urh*gtt-vX4a^ckse3glYjp7A9fB7@h9-)!ymKLHXYYxDmVy&V8%oe zL(O;`A{OR|a7mm#pPilb2YpW4!}SCcP8d7er!jpTd1MyTXw;EKTwZW!8LRI|mWrFf zo=^+(&UCnU(MK#sMT~sSE;yAAq1_E;s<~8nl0d_zVIDGuO6_!lllG_TNl-m2cEHUM zV+iteJ@s>S{C89;sL@MClr4fF*`q%}_C=3EDArp_`MSAew>J_mt|YLHKv9>U7xk0N z-Y~@k6#{wBGXXsKyW=oqO-lopMv<*c2$X!sr^ihD`%?~oV)ya_gEfzY6EQ4R!6Ou4 zZc=nE4|!qD*hNTio>Yv*zPjM#R6&wCkYqgohMaH$f!K1nM8JN1a)Qs3TBW+b-PV+D zp~@8sa4dJoAWC@vQ2ar-v-IYm@o1&UX)7EUhYmo)7Yy+Dgkl#gA&Ht(BC71rP4qH{ z0Vvp0b7i$p>bE#mE5K41lj?;n6rmw_T7CShHEJv_;FbYJAw><4mQu9h@@E~If}~EA zoGJ$iNTssNi|>3vPNW8*36h@c9O0mZHq)+eUp`nI?Y^=>cDw3zs96Y$><_(Svo}Dr zO(0aMhz6oy#WX3TT+407C>hl>N|02*gcprW**oX9`Ud`{8<_ZDf?LG?5&EdX2RCvG zc{HUZ1Dj%`PbFQKRf8iw(qtkneGK{A#S?*;Iwp12hpkv3$mSTWYC{B&OFZJx9$8XR zZ7mSsLoUt-^whE3tP9ac!=vM)!-x1tY_UXv6Xr3S6u3r1l*{z9?Y%wvKp(&CEMv@O zuV=H}S_3szt%f~g6*GQ(ar6cq^w&H?Z7LOq%WZbu(xmC%EFjHGbq-HMHQebAyBFQl za}>}|pMF?v)PMXJfA;X{(=WgH;>*vz`1ztn1IJUMp1(CXg)>N)>ZDhjv-mkJ?V=t!N zQXCVOJdkxXFj@wgyZFYhEroB6uL}6K2EvT%5a$&rrnbdsEC?FE>qLwX&NSV7A~gTo z4zUGAQ-bizo4 z*;Kw1Q&#FC6fRF5?BfajWxMtH7hiUI7bvuyPZyWy!}*WLQI?D0&3M*1*xhc_JncxX z8|G>Ng|aaomBC<8}~?P z4rrelZs;To^==<=fLEod4T3nVFOKWra%UmH87yK*%f4S_M+a0A6EPwuJctxk1?mBf zkxT|M%N1(Bdp-Pre)W02T*vp0%S8AL^5DUIt5DdhmD!qvEvjo<>Y7y*Q|E%%%Hc<= zg#VxU6p2w(bT`D9zz%-2*x{s9g;@0OiC<6@B*r}6-wa_m$xr677+V-fL^%_-ym*ElJ1!~H)@BUh zi~8X7WW?kO~Bn&pJ+_^s3P~HCB#-J@RHO623uIBaWUSkS;1xBQdu&% z{P3CRNH5N3?DQlux&IB}CCTQ3$iBG3>sQi*#KMdNRXvnS0*q55Xm0ni#3Cxcu_9#6 z1_x${8^Ym=mLM|xliNis-u=oS%^dvT&Io%@D8kL(2jKzPXaAEjL5IcB?~q8XOmWFd z%CAvPjkydH6S|7ku8P?SYrMyi)046DO$8oN)SWuoXi!NR(}*}8DCR|xceHYIP1>O$|+$*5pk9xi@rkT6Cb4$Bv)Zg%z`mus~`rJ6Af z8AtX9%SeAhlAXXPnFZr%8S}~!$IUUxR6v$*8jfDmcLlLb>XGS$fD)PkStWd5(I%ux zP96&ptbp0xN|+Be#b=}lg%#u>k}8Yi>rT`aRFhny7!x_II4ByT;KojOHRO(LR)Rue zhoa$=`IF4j2{My|GJ?rAgOwVSD9R%IdBH#B#8JB7t`P{J%gJm!ns6oxDr$CIuXN%m z1Co#j!f2F!gQywQ04-LDQ4=*nz$|4@=N!4j3D2$Fn-K3iIX%VYzeU+$B5kdl=4)H z2zG&>d1gt?GH~6%7r5!|jj*7$L@+b4h@#q13`v*mndXkGICbhaN}ds;nNx+l>Q{1% z@<}lIA|3GpQqTwRfnKjcQj9E!t?Zl7Fa_CKjaHL*us)&jt(_5nCLX7WCk&2!Q7mQ# zO3^W{(ZM=9SXp=&O)xD6=BzO7ce=#HA9s6s+1zP2S}o27oK0qv{-}=?Gmgs#ql@z{ zGlrv=uPGEb;C=@kG}GnfjJ2K;F5q!IJwwYo9HK8KYi6G33$Qoj2SA^ehmL%1M3{N;ftlbD&kLQL1df~@&ZoiX?1j!lq=!3?C2Z0*zS9DOF8;G9mbH$mS& zD1h>E@BTd$qUVzlJ{5(za>2z3@mNuC%4xq&(Vbt35OG0_5D~Qe{F6eG*aC8JfqfPd z=}c%E>H^6Tu=H>M*5I74b=+K_o3(RR<0@!8d&6H&)OG#?6dLs!5Lz)Z-3U;n-;hpZjTSPnl*H0aX>MJrDi3k z9Sl*#Op-fEhhZUJ8AE9Nfk3v98XyT&aJ){{bhTDjo?dbr9oUt3R%+JeUI~B6!;1in zcys7WK)g=y>j8YdSg(`c>&1!Yl|{AZlXTXff3JPL7(KP4*9P!gj+hGZTLzkggD#YJ zIY_VO#VdM6`vHv;l#Urv?GFjJ&-oP>F-T1^yc3WIvNrvooenuhzZSh-+Pjs3LQvx3 z!KEs1?0C5n8%4_l23kVoHyWh78oAP2yFdFx|E#aDW5Cqm`DpEL25hj~E?|Rzk7#x< zYCf^f=-=uUt9XAda^SO27!?>a=#1&NktJEMMg=__&=H9WSuvK;!=Pd2ZNeBbfCXh7 z7dTvFx?NrG;L=BbL~6-}7bHlG7!p{~Q$31>&S*#%`S4=+Q5RT+HN4O-IK-UwJPZWZ z3!@3*A6XE)!r(F+l^Rt#tjRdG>>zd638s;1UYgE5BXu!7Se(CgFp8e%nq&|(jOGyJ ziN~OH4WWTb0de>!A~8(J zb1};@{?#kT$Iz8~;`srBxxo`L2Aeu$+7uJ0NF&Un+H8{T_F*k08<$VkSX$*+kSJf; z3g`$NprEH7q8)u1PgeLpC}9q6rUHs_2s6aX3Wqup$Uy%55CasvSwY_DL946Ogh+ur z@7!h>8fc@&m6F@ye58?hlr$JRk~>l5#x8`@91v)OQs%%|h@``WES83esud0UOnE~p zniF{@_{;CBI1$fliF}I9qovBP6oJ51U{Ny?Xtksy2Y!MU@r4{Yq%5+`0}dhfHhLHHoW%y?g*PzFS+|m2*{X?l% z-`?H3_qBICq|1TML4;dJ;E-w@Mq-3v3`6ydb>!(OrctLDK;dvhjWjk72&W9BvEQHZ zNkGaNj7fk|)u3LMS+0BHbx?`S$Iy%xi3vM4S9++$WEx}XP`2=z#K<`S5oAHdiYK3l zSrrEtposiHK7243bJ$dFMJz@;P}HzmWr$d$Q7?^u#xknEdW{G#x=e||lW+xN-QA)> z)=WC600@8woKS)wc0mip-(;(c6ceK{rWhCfUK@`GxT8SUC}5@lL?|<66zq)lPAQ<;$t}K3WssR1Z_u zNJ)*PUlVu-0Wc55enP&O(nj=_t3jhLal!2LjP@l@W=W_ZHq1|tk8zpTX|^BSyT=9u zY+>M%Xr5FYd_QCVLCm)j4tO&uQ#7bGE{r(jFRG8z2${aAQ=~PuTHETOdvf>)8_eNo zb8CkeYsK;D(<5|B=VzV0JBN24+<)-a+i$)5?%Qv_v$wVL`KJ%Rc=*}#qvOumIryBP zogd!6f9H({-~Z7MTbrA>3gNs&)Xq2rcz*BpOkEjcEh0&rpRaJc* z$HCgIG2vn+@8$s552o{r?t$4Y+cxmaiLDjp@XlEbBBo5pMTZCwXOmj?*uU6Qsu$$F zKxrNV^HD9ed>5@IxRnjp9IKRGzk)4`XWbgN~q?5e=Bp zd^yYzbv0&Vmcg9(Sb>=QmvA)G z2kO{m0g;zPL>FBL8{!uVJ+`CAba#Wrw^CIa`C&6W@24EVd-njZ=$sO^etdS;$L|IU zq*@EA4rVVAi!x8y&@fg9-D)=2E0i26MSm%$P6PUIqpG#C z(l4un=hwMX{a%ZiSK(^#O<^nVU-A0JEJ*r_BrAZIx4&leWxD?l+*oJJ21XshYnP8# z@UwpZU%kGh>{Tu&T`MdcOqyr_pSx@x7r!pU*{I!+2S?jO+Ufr4i#U>Q!8xK87>hPe zw`%vea$SML+vsx0j%Y#l91n9QfNyZL;Q=FG+4H~DJw22m42~yI_z)a z#GURA2Xz`9ds<+*FmK=)$z@SeWA97PMM3GWXZ#Nqg<*k(v5**br@>JHjyVXasA9fDq?i3XS&3SO4&v6wTrbnzPL^cwH_Yu$5>*} zA(!a!IC^5OPd~}}ECVD*S>Vi?WkF22*VZnkYlEG0KLBpt~o1;r)CPJQl%ov=!Z%}%MOAAMF02gbE!i0;Kl}0`eyH<9p zryClP30AUA6&DZ$4!p!|3CER)H{B8!L4)~Dk3Fl4wQg^O)|W-e!`&83iB5#55eFQG z9=@|Hh6P-kuwbd<2z*~8MJ`CV8lK@oTjKmVN<;D`_&l5V1owfj7B7BgT$<11a( zCFt9`TMB&TDR8TR{>rn!SCs%9ZqI0qKB~Ei|JNes0Z$)&in?a^;7+Al-`qc7&d!L! z$Q{EEl2T|Zvf&8L?4;9U!r5=P&)L|IXH_;6Ybc9$SYt|6(GKGXDU6z^>X3S4O&f5I z#|R0Cq|+JB*-(VBvEIGZoW-QT!Dy_%2sC0^4S4z)VihNnAcuets<@Gw zXvXHG5%MRKYS!2}jB;B$)sS4sURxAr@9h0D1u8=YU8mS+@X+2NS?lK5@`}3x1LJ*& z?Sv7Jbkf1xML@j+5ulMMpo|Gw4VzOuc;YwNeS)4N0fZ7o3Hdo`kwX4Z@8XhvCPxTC zUgVcM2W_=LQQlNGUviPJ#peaNGcAF3SfE3H+(DEYSeb|m#Z)z<1drHnkoYO=Dw&7e zfX6X>y;5`x1#mpao<+*0nuz#VIwnejhiZzoHO{T#HBf3Om6(Izlw;UKV~GASsXq`3 zF-^thg}F$1gha~R1v@uxR64^DumtMQD1xOBR{C9)VtiroeG^fwF*t|amXI0B2m2v( zQa52TX<1zK;QVN;v&-eZy#pMnot>UNeSTz~)N&?g=5!V^U?d|Yh4_f4GDcKzsNT#z zHb}xZ>X)nyRL?FN6k9k--`L#Q*itJBa{&kYU#l46ioC#q!aWF685%aiAAx6>43o7y z!)t38q|E=K6niI7`76Ww0?E#r%;mk}7{E_QjHqyAbvDlh>WEHCfzXB(rnX`1B%gnC0~Zjd3pk%2+aB`OxMpc0%%%e055 z6-@QvA?osTSe!w=jP>PHOCu%eld$Ij69)}D)2JOQ!G=jg7p}CYy9|c3wN{$-t-E{Y zr^mg~m}X$t5LaqD)LkB6T4$$r(4c=A9OWU{p}?eY6}hc2hQ)NyGYBk<7Y)*Il)N~> zE{qwHKr(bJwtL1LXh;pQjR262in9sbBrMG1_Qp1ALLYwkDgI&(@9(?1=@N%maHPEs ztD$b00o4Ut-5HXKQ`%onw?Ho*z?&YH0c$oNjAw=JkRcX+U|{yck_|lr%C^4fK-F%F7WUj#&gkUh; z+i2o5y4kFroK{ZG+jbJr#1#lk5a~W9!_l}i9PUxntqqpxYA(}>1DC@F>Hz8hg->){ zQlGjPaZ6)Ei=JKexnNVR#-MarpMqi;&I-%8foD1H+7-0A7WS&gSHzbCZpz|S;QoL9 zjv85#oPo)q;Ii#R*)B=$uyfOObLdSmmtiD%tyJdtl3bUtxUui}at!aTOHxm%ZOQT8FzMX)S5D&;<0e;N!U>k zRsuF>m^@x(fOx!Ctvp7EViOVta!F@As@CQxl0lv^w7NcHLj;{QJ1zjvI9s8k;4ixF zkjm^G>9~M^_SijuB;|M#t*Y(A!HNDyiPH`hSrai8_j-z1pv7a~WjXG7sZ9tZLM=+~ z%6y^AroZ*_iGJ-EQ`V~->OlVlD9THQHCJ8np-&g=2nqc`4!_Yzp*14J353X#`uPdb ziEfT%RkFibGD4BPE~x~W5r`lA1&5Q%_7HepM!0fELO$TnhjiqU(h(Td;g3PW-)q@4f`5{bgOLuif8|B0V)4nz z#h?G(&ptbPestFUHSOVJf^LQw+P;7MlKsp%)d z!A@DhXr%E$Q8iS0Xj+{VFwIq5Lkc8H013%NkpmzU1aX3#&7A)blLcl*LZpDi39|-e zNPJ?j*&jJ5BvA7c1@a)adJxhRgxKjT|CES8m}tffu%?Lo49esjz!}>w6-UGuGm%rd z8+yz@Dxd_sh$6yfP0IAfbbPE6A~02Oa_I*=EKPcCee;AUCh;_&UN2G=MJy54shIhk zdRK|b5mX*BiI!Le4{7Rbc8p^usYUP%Hxk6vBZ-q*BjVBbD|=86P)Et1W=NjI#r&(ULn%OTM~*BANUVaQvlRP zfQm%|<>?hf#3GQfytX78RJ>P0B{@?{(>e#Ukx-E+pFC{`mx5AGJ@f1WRr3UIv6w-F ziih-!@q!3-*h+6f0LUX1t-`wB$IKkZ&4iO3%>?>_CW}lsf2Luf=S9239Sb1pec5?S zRYC`BUT4z*g+U{%6ze2`Qvq?u0rPVhAQLN8kr%95bqAx~fEG$CMk|LZ4Z1e#bn_JaMotY0uEW&mDA#+XYY2GSx z92(W)=7845S))NjuNDvIXA{<2n0dbBk`P`Xo@$SBM|Du1c#%brZS%Mh{@eXRtLuz} z3SefMYDY&7D4R8O$4p6H;Ylp5C7GQ0AL<5|N?483E>%O_GRkUGsz`=!&`zTqRZp$+ zL@s()ccHM3;&$JdLaFIy62#VI>JQz3nrc$1+Q!0&SJ985002E5cF^!WjtWIU>WO7R zlnW>gA}kPeu5E7;eUDuZJUbPRJV+VH(>qYGXXK;)LM}HrE2Q&zxy zTc+vf=Rv9Xax79f*pbOY`{r?G(*_)~O@5Eq;UCMAO~)O}DxauY(YXn_ihIp>87jIC*v z_9=@w*2mZ(7Rw$w$|$&jqno|8GU}M;h11RjdL@!+unm^<0n@22q4h{T+h{d$39SN~ z8L#vv7t}P6++GLjHgSGmDs%8atzP9^P*))t1@MG2ffuHOIdz0NO)1=Q(Ct7$DPy%Xr^cs=U%=T{|t@f{?(4&Wd6`8P!1O6~l{nA^`ukk_QiZ#VPn z*yojXi41oH($VpA8Jg0q;Ih13-k2~x%RJz8Mr??0c<^GBnuvB=wgm5@`|y2q2=?6e z`3g_0R2B=n+j~e~PoF+b{hLW8UHYV~62Qw)@TO7H&kq-CXS21toCOl6fNwB%tQT;p z%+cQV?TbRaR%zhRLS-^pF))b{y%p}Ehc4vv0wZS8u}8ME5i}BoXn;7Y%IFRqo!DNp z=#D0X!eZbeRY~X3^vAStWF-1B)cAC~)e@@bi_siG6j@}b6$k^@vS0{S%et!2=yFiqg#@ckmT|L-16c+x~?qXO1uao0^PEa z==IzLQmi7Jy08i!7^cuYOE4b!aT5ubb~}V)T8<);A(ta*+!$(CPK3*>yfw(`MUCs~ zW%e=!r3c>8X=0e5c<{nS3O|6h1}ODfdo=lrAHV-^|KraK3=_rr#{G8~oIZGR`se@g z{la|sr~mAGfBK*QVArjr(s_BoREmCZ#$;M3yA&Da@_ix@u_<)iM}Kai#XGpxXgu>3 ze88_r1$fd$AThH)moSLxd<|I^qPZAMNJOV3)E`#R@DTE@BCr)t)hB3B*^O)|vmjoe zAV5)wNZ$GY<_>be7d)8CIY#0!{(NxoCo~~vI&Q(wlA5cFD5gj$Q$*!#o+CFJiY+I` z?zFd(WKod_rm;0mvnY{IqKCSF!~wj^=y!wC2t3OakZ~^(;vinU293zdzz74W^fC|! zI0U3_F4LwW89!YsuM8k!qV{U|RR~$a>n5{FwK`&|%qeBaj`)B)ef9*6a;b_MXtTk(^VSw)I~Ri)V_}S44u*`* z*!XhV8#|!cjEk2APgRJCFXNNq0HX@_m$|E`ukms1zJ3p+_Mi`VvFQ zIks~o8N0k5nWz(a+=B%2c9X#{yU(E$K_xL;l&b|}z- z5B3@T(Xc65&MwQRs1j9qGuOE0Z#!E`Wn^g!U#Q zv=yos$rrWYw46z!0zi0;gnWYn#U$SlK)}ZmB7jpdAy*`zQ5y0URdJ4Jp;t9?RAHzu zMQd0@{#Wp9<85xDXcWQ81JbAps9B-eY?1#P4@OUqj^_guE4&!VXdypE!MF>+ z)<>!u=|hP_Kuxbyr}N&Zm>b8s0a_QBaCdVXU23b@Vs<1}Sp3SNCSJLG5dt7g5jtX} zSH(}JbY>9r<=a+3d6`D&tYxYbgupGLL`CqNu6QCf0w_$xhSfQi=un0-U@^nI&RG<- z&IHR=pp7i;FlsJw59XFM?a^RJVZp(iusPz3DJ4@k=3caL+VzxncX9IkglP~nrwR(N zdS%?dm?R0dh{JHJ!Nxy3oPg#dfndHdHd<{@wdPG z-6jB$KyJUM6K-w(-j9BCdVKQy>GAvT{rvR!_@dqZ2j9bVmI6iIxWyv)TpP@_sei zmvOJw5B5v^5?o=YX@xtVlELgog72brqbro3X%!=SDt0tbVRlL;%J5Tf2cN(~u|t8b z8D6q|y3U3Pvy(hq0?bOzq~#j~is%nj_m`X1#z^bu3qFgXxGG~8~%A_w5yvV$hRP%vC5a9#U3yt6F-49qTO{8+M# zg7fjh)52rc#sK^2#}8Se{LXj2vANBmo>0QI0WqWr;#*leYOIav8@#Vqsh~0_u&xPE z5)zRf(7seQfRqj|XaNRLg%W#S>{@+6|BEr0ryjA^P(_gqAQG;Zn)POf^&j>`pgf3` zCCWv{9o%`a{xlln35OjBb_}jxFoH(q;K|l4LG*WMfr?wLCSX~7rm>@drd8sVgEeVJ zBaSN@;PQHYF&N__ezeixB;ZmN?T}uoS?jj5g2`kCf1)NREuBfwmy?KN`;Zj_epV3q zTSi&h5<7BIn-o77mOJa#m1(1LiLsZ=_QEAEyxtWNjr?K~IT85ry#)4RwB@T8Zk9=J zNF;;iMYxhM^k!E=;(=n`82u*1ucs!VXf>G`T8iv2 z_loSl{8tp~D$U?!a-}QuP+~bIyF`;lreFit=13DodFU#h0!Tr;ii?f~uQ%jG%ZLE% zAtEKEPn~r@h@qbRSW!|4^xQ(*!&|HWuw% zgO}{@%%F5J9zUN>TGMHJI^Cz=r#FxZIhNRN2tY_JxZ1E+pm%4lny#4WiAh^vhJg_5 zz`__(j?>kMPqO(GB!WuzRA>{C-4q?CIG0;Y){As_xZ0yQV^*;#gWjqkDG0MEq)?m8 zcG!VeUO#2~9ca>>j7AD!c(+sGm3n$QK_(LgHlb+X3=ldJY3F;x!5OMC#u^56iKTZu zMj2@6==YK~n1S#oT|lL<*+XP>K*O**LwXy$aSOySL%vyS%CVD?7Rg_73gv0ff*vmh!u7%kt}tN6pcbgmr0pj z=aUMS{^(--7k~f$U%vP8Xl;F?+I-`|o7H;d+2b#M{?UhzpBz0uIsL!?{y+S~dw=-f z|F{3;*AJVH>8ZRFj2dG0;l9@?%I@fGQ!5}RMFIQk>`G}?slLU&e?nn0RSo(vnR^J088HF=2w@SAz3v zBZ_-VBN|X0h>=uQTLHn?Pi&-VOy~n2fl@Cqtih-fof=6{gal$Cr&)K@2ZMF7$eAS! z|Bw}_AneYO%Pcg)IIM#q2B0B1q$e>lqJ}71sf@{oQikgQNU>1RAp6>SdmI7Zf3fwB7zhV`B zTihiDLLk8bEGB_iW8uTAQmUdjnsm=U`|!QJ-L38Yg9qiW*P2b{^q5OAmY|{H%VBdi z!{o5tK0^VG1td}e8@EwiAxJvkaAf2rO(z&&X=Mm=j^Au8i&4luxQup0#SbQKBG$(v zw0sO)NKEJFD87p01uqcH95FeXY+6RRTr`{N+Q5|alo-4i0?7?MO1)AIsUXCUST7FE z3R)FCy{a={^Wa416AXAL7l?vt3S%^I!j>4JK2wl8CT1dq<0n@XiIQMMW}%$&J8@81 z5;4IKkv|dD$$ZS`Q8UL}8t{C09dZVuOl%EHqyT^3CHcc#dEk+`3c$UBKxtH0qX-mp zAp#N%5(ua;j8iaocFyNa4Jv7Kyj znI04ioM@=ABOj6m0>kkL3l6L$WB#M$&>!e|gM%k8x?R-rCr-&Y0($TJ-}?a?$!E_VAD^G7xWSK|Ng!OB_>hQarNodA;Rv_8N7bZkLry{`qK;Mn zr(2s_wQ6l=ce`Fe*^YrN^$$pdFsnGnA9&dn@U?{Cf;vq8RLhaSXhg9QDX9a@gAhy6 zI_WS5rV1_#Zica#jW|zHNvK0Lk_aTt_U^O#W{X5&S>Leh5f9>lXWR0mN^yz<0kwbpuFT{xLO@` z5Spy>_QgQM|H6@aWS|A3ys1 z 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�hqI|W6ej2WqcKrT{3C&Fl! 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 z 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

    ~d4CX}g~H-*C@EWjf4$ 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 literal 0 HcmV?d00001 diff --git a/src/components/editor.js b/src/components/editor.js index 1ae1b7a..b82408e 100644 --- a/src/components/editor.js +++ b/src/components/editor.js @@ -6,10 +6,10 @@ export default { //skin:'oxide-dark', language:'zh_CN', language_url: './styles/tinymce/langs/zh_CN.js', - plugins: 'print powerpaste preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media template advcode codesample table charmap hr pagebreak nonbreaking anchor insertdatetime advlist lists wordcount imagetools textpattern help emoticons autosave autoresize formatpainter', + plugins: 'print powerpaste preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media template advcode codesample table charmap hr pagebreak nonbreaking anchor insertdatetime advlist lists wordcount imagetools textpattern help emoticons autosave autoresize formatpainter paragraphspacing', toolbar: 'code undo redo restoredraft | cut copy powerpaste pastetext | forecolor backcolor headings fontsize lineHeight bold italic underline strikethrough link anchor | alignleft aligncenter alignright alignjustify | \ styleselect fontselect fontsizeselect | bullist numlist | blockquote subscript superscript removeformat | \ - table image media charmap emoticons hr pagebreak insertdatetime print preview | fullscreen | indent2em formatpainter', + table image media charmap emoticons hr pagebreak insertdatetime print preview | fullscreen | indent2em formatpainter | paragraphspacing', style_formats: [ //新增 首行缩进与行高 配置 { diff --git a/src/components/img-upload/Cropper.vue b/src/components/img-upload/Cropper.vue index b64defa..c36da27 100644 --- a/src/components/img-upload/Cropper.vue +++ b/src/components/img-upload/Cropper.vue @@ -147,7 +147,7 @@ export default { const that = this if (type === 'blob') { this.$refs.cropper.getCropBlob(data => { - compress(data, 0.8).then(res => { + compress(data, 1).then(res => { that.$emit('upload', res) }) }) diff --git a/src/components/modules/content.vue b/src/components/modules/content.vue index 87010cd..13e80f2 100644 --- a/src/components/modules/content.vue +++ b/src/components/modules/content.vue @@ -221,8 +221,8 @@ export default { this.$message.error('请上传图片!') return false } - if (size / 1024 / 1024 > 5) { - this.$message.error('请上传5M以内的图片!') + if (size / 1024 / 1024 > 30) { + this.$message.error('请上传30M以内的图片!') return false } this.file = file diff --git a/src/components/modules/history.vue b/src/components/modules/history.vue index bacb9c6..ce1d85d 100644 --- a/src/components/modules/history.vue +++ b/src/components/modules/history.vue @@ -44,7 +44,11 @@ + align="center"> + + diff --git a/src/components/modules/module.vue b/src/components/modules/module.vue index 17f53fd..065459c 100644 --- a/src/components/modules/module.vue +++ b/src/components/modules/module.vue @@ -195,7 +195,7 @@ + maxlength="100">

    >YbG=@0c$kNs5!i@=P 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 z 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

  • @@ -285,6 +285,7 @@ import History from '@/components/modules/history' import Editor from '@tinymce/tinymce-vue' import Setting from '@/setting' import Util from '@/libs/util' +import 'tinymce-paragraphspacing' import editorConfig from '@/components/editor' import Cropper from '@/components/img-upload/Cropper' import Axios from 'axios' @@ -500,8 +501,8 @@ export default { this.$message.error('请上传图片!') return false } - if (size / 1024 / 1024 > 5) { - this.$message.error('请上传5M以内的图片!') + if (size / 1024 / 1024 > 30) { + this.$message.error('请上传30M以内的图片!') return false } this.file = file diff --git a/src/const/modules.js b/src/const/modules.js index d092af2..b8be0c7 100644 --- a/src/const/modules.js +++ b/src/const/modules.js @@ -5471,8 +5471,8 @@ export default { type: 'upload', prop: 'pic', label: '图片', - width: 392, - height: 247 + // width: 392, + // height: 247 }, { type: 'input', @@ -5556,6 +5556,14 @@ export default { { type: 'form', forms: [ + { + type: 'upload', + prop: 'pic', + label: '图片', + required: true, + width: 764, + height: 669 + }, { type: 'editor', prop: 'title', @@ -5569,6 +5577,7 @@ export default { } ], form: { + pic: 'http://10.10.11.7/images/overviewIntro/1.png', title: 'S³FEL概况', des: ` 深圳中能高重复频率X射线自由电子激光(Shenzhen Superconducting Soft-X-ray Free Electron Laser,简称S³FEL)是第四代先进光源大科学装置,由深圳综合粒子设施研究院和深圳市光明区人民政府共同建设。 S³FEL是基于超导高频技术的高重复频率X射线自由电子激光装置,具有高亮度、超短脉冲、高相干、波长连续可调等特点。其原理是采用超导加速器将高品质电子束加速到高能,并利用NS极交替排列的磁铁阵列(波荡器)来产生具备激光品质的高功率相干辐射。由于采用了超导加速器,S³FEL的平均亮度比常温型X射线自由电子激光提高了1000倍,比第三代同步辐射光源提高了10 亿倍,光脉冲缩短了1000倍,相干性提高了1000倍,是目前世界上最尖端的大科学装置。 @@ -5593,7 +5602,7 @@ export default { } ], form: { - title: 'henzhen Superconducting Soft X-Ray Fre Electron Laser', + title: 'Shenzhen Superconducting Soft X-Ray Fre Electron Laser', des: `探索认知微观世界和物质结构的”高速摄像机”` } }, @@ -8970,13 +8979,13 @@ export default { { type: 'input', prop: 'storage', - label: '储存环周长', + label: '储存环周长(m)', required: false }, { type: 'input', prop: 'stations', - label: '光束线/条', + label: '光束线', required: false }, { @@ -9096,7 +9105,7 @@ export default { { type: 'input', prop: 'wavelength', - label: '波长范围/nm', + label: '光子能量', required: false }, { @@ -9114,7 +9123,7 @@ export default { { type: 'input', prop: 'stations', - label: '实验站/个', + label: '实验站', required: false }, { @@ -9181,7 +9190,21 @@ export default { status: '', } ], - labelWidth: '120px' + labelWidth: '120px', + sort: true + }, + { + type: 'form', + forms: [ + { + type: 'editor', + prop: 'des', + label: '描述' + } + ], + form: { + des: '全球先进光源页面所刊载内容,包括图片、文字、数据源自相关设施官方网站、宣传手册,以及国际原子能机构(IAEA)网站公开数据,由深圳综合粒子设施研究院及中国科学学与科技政策研究会科技基础设施专业委员会共同汇总整理而来。相关内容供访问者学习、研究,如需转载或引用,须声明内容来源。' + } }, ], team: [ @@ -9342,7 +9365,9 @@ export default { type: 'upload', prop: 'pic', label: '图片', - required: true + required: true, + width: 1912, + height: 941 }, { type: 'input', @@ -9680,8 +9705,8 @@ export default { prop: 'pic', label: '图片', required: true, - width: 722, - height: 560 + width: 600, + height: 465 }, { type: 'input', diff --git a/src/mixins/page/index.js b/src/mixins/page/index.js index 41a71ae..14a29f9 100644 --- a/src/mixins/page/index.js +++ b/src/mixins/page/index.js @@ -67,7 +67,7 @@ export default { // 查询页面详情 this.$post(`${this.api.findPage}?columnId=${this.columnId}`).then(({ data }) => { if (data.length) { - const json = data[0] + const json = data[data.length - 1] this.id = json.id const str = json[json.state ? 'theEditedJson' : 'jsonBeforeEditing'] const list = JSON.parse(str) diff --git a/src/pages/article/add/editor.js b/src/pages/article/add/editor.js index 2cc0c88..0465e61 100644 --- a/src/pages/article/add/editor.js +++ b/src/pages/article/add/editor.js @@ -185,7 +185,7 @@ export default { './styles/css/editor.css', ], // content_style: Style, - fontsize_formats: '12px 14px 16px 19px 24px 36px 48px 56px 72px', + fontsize_formats: '12px 14px 16px 18px 19px 22px 24px 36px 48px 56px 72px', font_formats: '苹果苹方=PingFang SC,Microsoft YaHei,sans-serif;宋体=simsun,serif;微软雅黑=Microsoft YaHei,Helvetica Neue,PingFang SC,sans-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', link_list: [ { title: '预置链接1', value: 'http://www.tinymce.com' }, diff --git a/src/pages/article/add/index.vue b/src/pages/article/add/index.vue index 5f722fa..3f9aa3b 100644 --- a/src/pages/article/add/index.vue +++ b/src/pages/article/add/index.vue @@ -5,7 +5,7 @@ :rules="rules" class="input-form model" label-width="140px"> - @@ -47,7 +47,7 @@ placeholder="请输入标题" v-model="form.title" clearable - maxlength="100" + maxlength="300" @change="nameChange">
    @@ -218,7 +218,7 @@ :rows="3"> -
    @@ -250,7 +250,7 @@ class="inline-input">
    -